Update to xkbcomp 1.2.1
This commit is contained in:
parent
bfae20612e
commit
34bb2b0d31
@ -1,3 +1,99 @@
|
|||||||
|
commit c8375bcb7eb9f86ca1534cdf1143e91372d0499e
|
||||||
|
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Fri Feb 11 09:06:04 2011 +1000
|
||||||
|
|
||||||
|
xkbcomp 1.2.1
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
|
||||||
|
commit ab5371cefe2b7438b74338f71ff890e0e868b3df
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Wed Jan 19 10:06:56 2011 -0500
|
||||||
|
|
||||||
|
config: move man pages into their own directory
|
||||||
|
|
||||||
|
Use services provided by XORG_MANPAGE_SECTIONS.
|
||||||
|
Use standard Makefile for man pages.
|
||||||
|
|
||||||
|
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
|
||||||
|
commit 9ce8e2f42ab7695b5165ff0a3d892df96a3c3f01
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Thu Jan 13 11:15:47 2011 -0500
|
||||||
|
|
||||||
|
man: remove trailing spaces and tabs
|
||||||
|
|
||||||
|
Using s/[ \t]*$//
|
||||||
|
|
||||||
|
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
|
||||||
|
commit 5ecf21cc130d7a45cb5e82e9c2c3025edee5d74f
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Wed Jan 12 16:28:02 2011 -0500
|
||||||
|
|
||||||
|
config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS
|
||||||
|
|
||||||
|
This silences an Autoconf warning
|
||||||
|
|
||||||
|
commit e27e8c2a15ddcf51b2ea58f8eced7f035aa1301e
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Wed Jan 12 15:29:50 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 f524cfae6951442c9a9da65ef317b9c04199500f
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Date: Tue Jan 4 00:05:18 2011 -0800
|
||||||
|
|
||||||
|
Remove out-of-date copies of README.config & README.enhancing
|
||||||
|
|
||||||
|
The up-to-date master copies of those documents are found in the
|
||||||
|
xorg-docs module, and posted on the X.Org website.
|
||||||
|
|
||||||
|
Also, x-docs.org no longer carries X11 docs, so point to X.Org's
|
||||||
|
website instead in the README.
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
|
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
|
||||||
|
|
||||||
|
commit cc55d8f5ab021861308b071aab9c03016be15187
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Sun Oct 31 20:35:24 2010 -0400
|
||||||
|
|
||||||
|
config: replace AC_CHECK_FILE with test -f as it fails to cross-compile
|
||||||
|
|
||||||
|
Testing for the presence of xkbparse.c is legitimate as this is a build
|
||||||
|
file, but the Autoconf macro assumes it is testing on the host system
|
||||||
|
and fails.
|
||||||
|
|
||||||
|
Tested-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
|
||||||
|
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
|
||||||
|
commit 1d59f5b0387b18028017cfab4e55b703417dd735
|
||||||
|
Author: Dirk Wallenstein <halsmit@t-online.de>
|
||||||
|
Date: Fri Oct 29 13:08:25 2010 +0200
|
||||||
|
|
||||||
|
man: Improve description of device selection option
|
||||||
|
|
||||||
|
The device selection option takes effect when loading keymaps, too.
|
||||||
|
|
||||||
|
Signed-off-by: Dirk Wallenstein <halsmit@t-online.de>
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
|
||||||
|
commit 281c7744f682c1ba4f44c0ee22f9bf7188c14fe6
|
||||||
|
Author: Dirk Wallenstein <halsmit@t-online.de>
|
||||||
|
Date: Fri Oct 29 11:35:10 2010 +0200
|
||||||
|
|
||||||
|
Allow uploading a keymap to a single device
|
||||||
|
|
||||||
|
Signed-off-by: Dirk Wallenstein <halsmit@t-online.de>
|
||||||
|
Reviewed-by: Julien Cristau <jcristau@debian.org>
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
|
||||||
commit 851a5f6e0c1b2a98d4714d95e40198ab5dc61607
|
commit 851a5f6e0c1b2a98d4714d95e40198ab5dc61607
|
||||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||||
Date: Sat Oct 30 09:59:52 2010 -0700
|
Date: Sat Oct 30 09:59:52 2010 -0700
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
SUBDIRS = man
|
||||||
bin_PROGRAMS = xkbcomp
|
bin_PROGRAMS = xkbcomp
|
||||||
|
|
||||||
AM_CFLAGS = $(XKBCOMP_CFLAGS) -DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' $(CWARNFLAGS)
|
AM_CFLAGS = $(XKBCOMP_CFLAGS) -DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' $(CWARNFLAGS)
|
||||||
@ -58,31 +59,11 @@ xkbcomp_SOURCES = \
|
|||||||
xkbpath.h \
|
xkbpath.h \
|
||||||
xkbscan.c
|
xkbscan.c
|
||||||
|
|
||||||
appman_PRE = \
|
|
||||||
xkbcomp.man
|
|
||||||
|
|
||||||
BUILT_SOURCES = xkbparse.c
|
BUILT_SOURCES = xkbparse.c
|
||||||
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
||||||
MAINTAINERCLEANFILES += $(BUILT_SOURCES)
|
MAINTAINERCLEANFILES += $(BUILT_SOURCES)
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
README.config \
|
|
||||||
README.enhancing
|
|
||||||
|
|
||||||
appmandir = $(APP_MAN_DIR)
|
|
||||||
|
|
||||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
|
||||||
|
|
||||||
EXTRA_DIST += $(appman_PRE)
|
|
||||||
CLEANFILES = $(appman_DATA)
|
|
||||||
|
|
||||||
SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
|
||||||
|
|
||||||
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
|
|
||||||
.man.$(APP_MAN_SUFFIX):
|
|
||||||
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: ChangeLog INSTALL
|
.PHONY: ChangeLog INSTALL
|
||||||
|
|
||||||
INSTALL:
|
INSTALL:
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
# PERFORMANCE OF THIS SOFTWARE.
|
# PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
@ -73,7 +72,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
|||||||
mkinstalldirs = $(SHELL) $(install_sh) -d
|
mkinstalldirs = $(SHELL) $(install_sh) -d
|
||||||
CONFIG_HEADER = config.h
|
CONFIG_HEADER = config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(appmandir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am_xkbcomp_OBJECTS = action.$(OBJEXT) alias.$(OBJEXT) compat.$(OBJEXT) \
|
am_xkbcomp_OBJECTS = action.$(OBJEXT) alias.$(OBJEXT) compat.$(OBJEXT) \
|
||||||
@ -96,16 +95,15 @@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|||||||
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
||||||
SOURCES = $(xkbcomp_SOURCES)
|
SOURCES = $(xkbcomp_SOURCES)
|
||||||
DIST_SOURCES = $(xkbcomp_SOURCES)
|
DIST_SOURCES = $(xkbcomp_SOURCES)
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
am__vpath_adj = case $$p in \
|
html-recursive info-recursive install-data-recursive \
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
install-exec-recursive install-info-recursive \
|
||||||
*) f=$$p;; \
|
install-recursive installcheck-recursive installdirs-recursive \
|
||||||
esac;
|
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
uninstall-recursive
|
||||||
appmanDATA_INSTALL = $(INSTALL_DATA)
|
|
||||||
DATA = $(appman_DATA)
|
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
distdir = $(PACKAGE)-$(VERSION)
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
top_distdir = $(distdir)
|
top_distdir = $(distdir)
|
||||||
@ -232,6 +230,7 @@ sbindir = @sbindir@
|
|||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
SUBDIRS = man
|
||||||
AM_CFLAGS = $(XKBCOMP_CFLAGS) -DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' $(CWARNFLAGS)
|
AM_CFLAGS = $(XKBCOMP_CFLAGS) -DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' $(CWARNFLAGS)
|
||||||
xkbcomp_LDADD = $(XKBCOMP_LIBS)
|
xkbcomp_LDADD = $(XKBCOMP_LIBS)
|
||||||
xkbcomp_SOURCES = \
|
xkbcomp_SOURCES = \
|
||||||
@ -268,21 +267,13 @@ xkbcomp_SOURCES = \
|
|||||||
xkbpath.h \
|
xkbpath.h \
|
||||||
xkbscan.c
|
xkbscan.c
|
||||||
|
|
||||||
appman_PRE = \
|
|
||||||
xkbcomp.man
|
|
||||||
|
|
||||||
BUILT_SOURCES = xkbparse.c
|
BUILT_SOURCES = xkbparse.c
|
||||||
MAINTAINERCLEANFILES = ChangeLog INSTALL $(BUILT_SOURCES)
|
MAINTAINERCLEANFILES = ChangeLog INSTALL $(BUILT_SOURCES)
|
||||||
EXTRA_DIST = README.config README.enhancing $(appman_PRE)
|
|
||||||
appmandir = $(APP_MAN_DIR)
|
|
||||||
appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
|
|
||||||
CLEANFILES = $(appman_DATA)
|
|
||||||
SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
|
||||||
all: $(BUILT_SOURCES) config.h
|
all: $(BUILT_SOURCES) config.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .$(APP_MAN_SUFFIX) .man .c .o .obj .y
|
.SUFFIXES: .c .o .obj .y
|
||||||
am--refresh:
|
am--refresh:
|
||||||
@:
|
@:
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@ -421,22 +412,76 @@ distclean-compile:
|
|||||||
sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@
|
sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@
|
||||||
rm -f y.tab.c
|
rm -f y.tab.c
|
||||||
uninstall-info-am:
|
uninstall-info-am:
|
||||||
install-appmanDATA: $(appman_DATA)
|
|
||||||
@$(NORMAL_INSTALL)
|
|
||||||
test -z "$(appmandir)" || $(mkdir_p) "$(DESTDIR)$(appmandir)"
|
|
||||||
@list='$(appman_DATA)'; for p in $$list; do \
|
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
|
||||||
f=$(am__strip_dir) \
|
|
||||||
echo " $(appmanDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(appmandir)/$$f'"; \
|
|
||||||
$(appmanDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(appmandir)/$$f"; \
|
|
||||||
done
|
|
||||||
|
|
||||||
uninstall-appmanDATA:
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
@$(NORMAL_UNINSTALL)
|
# into them and run `make' without going through this Makefile.
|
||||||
@list='$(appman_DATA)'; for p in $$list; do \
|
# To change the values of `make' variables: instead of editing Makefiles,
|
||||||
f=$(am__strip_dir) \
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
echo " rm -f '$(DESTDIR)$(appmandir)/$$f'"; \
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
rm -f "$(DESTDIR)$(appmandir)/$$f"; \
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
$(RECURSIVE_TARGETS):
|
||||||
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
list='$(SUBDIRS)'; 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; \
|
||||||
|
(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"
|
||||||
|
|
||||||
|
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||||
|
maintainer-clean-recursive:
|
||||||
|
@failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
rev=''; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = "."; then :; else \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
rev="$$rev ."; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
for subdir in $$rev; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
ctags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
done
|
done
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
@ -449,10 +494,23 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|||||||
mkid -fID $$unique
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
tags=; \
|
||||||
here=`pwd`; \
|
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 || \
|
||||||
|
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
@ -465,7 +523,7 @@ TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|||||||
$$tags $$unique; \
|
$$tags $$unique; \
|
||||||
fi
|
fi
|
||||||
ctags: CTAGS
|
ctags: CTAGS
|
||||||
CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
tags=; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
@ -516,6 +574,21 @@ distdir: $(DISTFILES)
|
|||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d "$(distdir)/$$subdir" \
|
||||||
|
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||||
|
|| exit 1; \
|
||||||
|
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||||
|
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||||
|
(cd $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$top_distdir" \
|
||||||
|
distdir="$$distdir/$$subdir" \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
$(MAKE) $(AM_MAKEFLAGS) \
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||||
dist-hook
|
dist-hook
|
||||||
@ -618,22 +691,23 @@ distcleancheck: distclean
|
|||||||
exit 1; } >&2
|
exit 1; } >&2
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: $(BUILT_SOURCES)
|
check: $(BUILT_SOURCES)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) check-am
|
$(MAKE) $(AM_MAKEFLAGS) check-recursive
|
||||||
all-am: Makefile $(PROGRAMS) $(DATA) config.h
|
all-am: Makefile $(PROGRAMS) config.h
|
||||||
installdirs:
|
installdirs: installdirs-recursive
|
||||||
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(appmandir)"; do \
|
installdirs-am:
|
||||||
|
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: $(BUILT_SOURCES)
|
install: $(BUILT_SOURCES)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) install-am
|
$(MAKE) $(AM_MAKEFLAGS) install-recursive
|
||||||
install-exec: install-exec-am
|
install-exec: install-exec-recursive
|
||||||
install-data: install-data-am
|
install-data: install-data-recursive
|
||||||
uninstall: uninstall-am
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
install-am: all-am
|
install-am: all-am
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-recursive
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
@ -642,7 +716,6 @@ install-strip:
|
|||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
@ -653,79 +726,77 @@ maintainer-clean-generic:
|
|||||||
-rm -f xkbparse.c
|
-rm -f xkbparse.c
|
||||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||||
clean: clean-am
|
clean: clean-recursive
|
||||||
|
|
||||||
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-recursive
|
||||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
-rm -rf ./$(DEPDIR)
|
-rm -rf ./$(DEPDIR)
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
distclean-am: clean-am distclean-compile distclean-generic \
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
distclean-hdr distclean-tags
|
distclean-hdr distclean-tags
|
||||||
|
|
||||||
dvi: dvi-am
|
dvi: dvi-recursive
|
||||||
|
|
||||||
dvi-am:
|
dvi-am:
|
||||||
|
|
||||||
html: html-am
|
html: html-recursive
|
||||||
|
|
||||||
info: info-am
|
info: info-recursive
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
|
|
||||||
install-data-am: install-appmanDATA
|
install-data-am:
|
||||||
|
|
||||||
install-exec-am: install-binPROGRAMS
|
install-exec-am: install-binPROGRAMS
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-recursive
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-recursive
|
||||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
-rm -rf $(top_srcdir)/autom4te.cache
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
-rm -rf ./$(DEPDIR)
|
-rm -rf ./$(DEPDIR)
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||||
|
|
||||||
pdf: pdf-am
|
pdf: pdf-recursive
|
||||||
|
|
||||||
pdf-am:
|
pdf-am:
|
||||||
|
|
||||||
ps: ps-am
|
ps: ps-recursive
|
||||||
|
|
||||||
ps-am:
|
ps-am:
|
||||||
|
|
||||||
uninstall-am: uninstall-appmanDATA uninstall-binPROGRAMS \
|
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
|
||||||
uninstall-info-am
|
|
||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
|
uninstall-info: uninstall-info-recursive
|
||||||
clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \
|
|
||||||
dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
|
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||||
distclean distclean-compile distclean-generic distclean-hdr \
|
check-am clean clean-binPROGRAMS clean-generic clean-recursive \
|
||||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
||||||
dvi-am html html-am info info-am install install-am \
|
dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
|
||||||
install-appmanDATA install-binPROGRAMS install-data \
|
distclean-compile distclean-generic distclean-hdr \
|
||||||
|
distclean-recursive distclean-tags distcleancheck distdir \
|
||||||
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-binPROGRAMS install-data \
|
||||||
install-data-am install-exec install-exec-am install-info \
|
install-data-am install-exec install-exec-am install-info \
|
||||||
install-info-am install-man install-strip installcheck \
|
install-info-am install-man install-strip installcheck \
|
||||||
installcheck-am installdirs maintainer-clean \
|
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
maintainer-clean-generic maintainer-clean-recursive \
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
mostlyclean mostlyclean-compile mostlyclean-generic \
|
||||||
uninstall-am uninstall-appmanDATA uninstall-binPROGRAMS \
|
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||||
uninstall-info-am
|
uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
|
||||||
|
|
||||||
|
|
||||||
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
|
|
||||||
.man.$(APP_MAN_SUFFIX):
|
|
||||||
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
|
|
||||||
|
|
||||||
.PHONY: ChangeLog INSTALL
|
.PHONY: ChangeLog INSTALL
|
||||||
|
|
||||||
INSTALL:
|
INSTALL:
|
||||||
|
@ -13,12 +13,8 @@ xkb symbolic names: symbols, geometry, keycodes, compat and types which
|
|||||||
determine the keyboard behaviour. These five components can combined together
|
determine the keyboard behaviour. These five components can combined together
|
||||||
into a resulting keyboard mapping using the 'rules' component.
|
into a resulting keyboard mapping using the 'rules' component.
|
||||||
|
|
||||||
The complete specification can be found on
|
More information, including the complete specification, can be found on
|
||||||
http://www.x-docs.org/XKB/XKBproto.pdf
|
http://www.x.org/wiki/XKB
|
||||||
|
|
||||||
For XKB configuration information see 'README.config' file.
|
|
||||||
|
|
||||||
For information how to further enhance XKB configuration see 'README.enhancing'
|
|
||||||
file.
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,195 +0,0 @@
|
|||||||
The XKB Configuration Guide
|
|
||||||
|
|
||||||
Kamil Toman, Ivan U. Pascal
|
|
||||||
|
|
||||||
25 November 2002
|
|
||||||
|
|
||||||
Abstract
|
|
||||||
|
|
||||||
This document describes how to configure X11R6.8 XKB from a user's
|
|
||||||
point a few. It converts basic configuration syntax and gives also
|
|
||||||
a few examples.
|
|
||||||
|
|
||||||
1. Overview
|
|
||||||
|
|
||||||
The XKB configuration is decomposed into a number of components. Selecting
|
|
||||||
proper parts and combining them back you can achieve most of configurations
|
|
||||||
you might need. Unless you have a completely atypical keyboard you really
|
|
||||||
don't need to touch any of xkb configuration files.
|
|
||||||
|
|
||||||
2. Selecting XKB Configuration
|
|
||||||
|
|
||||||
The easiest and the most natural way how to specify a keyboard mapping is to
|
|
||||||
use rules component. As its name suggests it describes a number of general
|
|
||||||
rules how to combine all bits and pieces into a valid and useful keyboard
|
|
||||||
mapping. All you need to do is to select a suitable rules file and then to
|
|
||||||
feed it with a few parameters that will adjust the keyboard behaviour to ful-
|
|
||||||
fill your needs.
|
|
||||||
|
|
||||||
The parameters are:
|
|
||||||
|
|
||||||
o XkbRules - files of rules to be used for keyboard mapping composition
|
|
||||||
|
|
||||||
o XkbModel - name of model of your keyboard type
|
|
||||||
|
|
||||||
o XkbLayout - layout(s) you intend to use
|
|
||||||
|
|
||||||
o XkbVariant - variant(s) of layout you intend to use
|
|
||||||
|
|
||||||
o XkbOptions - extra xkb configuration options
|
|
||||||
|
|
||||||
The proper rules file depends on your vendor. In reality, the commonest file
|
|
||||||
of rules is xorg. For each rules file there is a description file named <ven-
|
|
||||||
dor-rules>.lst, for instance xorg.lst which is located in xkb configuration
|
|
||||||
subdirectory rules (for example /etc/X11/xkb/rules).
|
|
||||||
|
|
||||||
2.1 Basic Configuration
|
|
||||||
|
|
||||||
Let's say you want to configure a PC style America keyboard with 104 keys as
|
|
||||||
described in xorg.lst. It can be done by simply writing several lines from
|
|
||||||
below to you xorg.conf configuration file (previously known as
|
|
||||||
/etc/X11/XF86Config-4 or /etc/X11/XF86Config):
|
|
||||||
|
|
||||||
Section "InputDevice"
|
|
||||||
Identifier "Keyboard1"
|
|
||||||
Driver "kbd"
|
|
||||||
|
|
||||||
Option "XkbModel" "pc104"
|
|
||||||
Option "XkbLayout" "us"
|
|
||||||
Option "XKbOptions" ""
|
|
||||||
EndSection
|
|
||||||
|
|
||||||
The values of parameters XkbModel and XkbLayout are really not surprising.
|
|
||||||
The parameters XkbOptions has been explicitly set to empty set of parameters.
|
|
||||||
The parameter XkbVariant has been left out. That means the default variant
|
|
||||||
named basic is loaded.
|
|
||||||
|
|
||||||
Of course, this can be also done at runtime using utility setxkbmap. Shell
|
|
||||||
command loading the same keyboard mapping would look like:
|
|
||||||
|
|
||||||
setxkbmap -rules xorg -model pc104 -layout us -option ""
|
|
||||||
|
|
||||||
The configuration and the shell command would be very analogical for most
|
|
||||||
other layouts (internationalized mappings).
|
|
||||||
|
|
||||||
2.2 Advanced Configuration
|
|
||||||
|
|
||||||
You can use multi-layouts xkb configuration. What does it mean? Basically it
|
|
||||||
allows to load up to four different keyboard layouts at a time. Each such
|
|
||||||
layout would reside in its own group. The groups (unlike complete keyboard
|
|
||||||
remapping) can be switched very fast from one to another by a combination of
|
|
||||||
keys.
|
|
||||||
|
|
||||||
Let's say you want to configure your new Logitech cordless desktop keyboard,
|
|
||||||
you intend to use three different layouts at the same time - us, czech and
|
|
||||||
german (in this order), and that you are used to Alt-Shift combination for
|
|
||||||
switching among them.
|
|
||||||
|
|
||||||
Then the configuration snippet could look like this:
|
|
||||||
|
|
||||||
Section "InputDevice"
|
|
||||||
Identifier "Keyboard1"
|
|
||||||
Driver "kbd"
|
|
||||||
|
|
||||||
Option "XkbModel" "logicordless"
|
|
||||||
Option "XkbLayout" "us,cz,de"
|
|
||||||
Option "XKbOptions" "grp:alt_shift_toggle"
|
|
||||||
EndSection
|
|
||||||
|
|
||||||
Of course, this can be also done at runtime using utility setxkbmap. Shell
|
|
||||||
command loading the same keyboard mapping would look like:
|
|
||||||
|
|
||||||
setxkbmap -rules xorg -model logicordless -layout "us,cz,de" \
|
|
||||||
-option "grp:alt_shift_toggle"
|
|
||||||
|
|
||||||
2.3 Even More Advanced Configuration
|
|
||||||
|
|
||||||
Okay, let's say you are more demanding. You do like the example above but you
|
|
||||||
want it to change a bit. Let's imagine you want the czech keyboard mapping to
|
|
||||||
use another variant but basic. The configuration snippet then changes into:
|
|
||||||
|
|
||||||
Section "InputDevice"
|
|
||||||
Identifier "Keyboard1"
|
|
||||||
Driver "kbd"
|
|
||||||
|
|
||||||
Option "XkbModel" "logicordless"
|
|
||||||
Option "XkbLayout" "us,cz,de"
|
|
||||||
Option "XkbVariant" ",bksl,"
|
|
||||||
Option "XKbOptions" "grp:alt_shift_toggle"
|
|
||||||
EndSection
|
|
||||||
|
|
||||||
That's seems tricky but it is not. The logic for settings of variants is the
|
|
||||||
same as for layouts, that means the first and the third variant settings are
|
|
||||||
left out (set to basic), the second is set to bksl (a special variant with an
|
|
||||||
enhanced definition of the backslash key).
|
|
||||||
|
|
||||||
Analogically, the loading runtime will change to:
|
|
||||||
|
|
||||||
setxkmap -rules xorg -model logicordless -layout "us,cz,de" \
|
|
||||||
-variant ",bksl," -option "grp:alt_shift_toggle"
|
|
||||||
|
|
||||||
2.4 Basic Global Options
|
|
||||||
|
|
||||||
See rules/*.lst files.
|
|
||||||
|
|
||||||
3. Direct XKB Configuration
|
|
||||||
|
|
||||||
Generally, you can directly prescribe what configuration of each of basic xkb
|
|
||||||
components should be used to form the resulting keyboard mapping. This
|
|
||||||
method is rather "brute force". You precisely need to know the structure and
|
|
||||||
the meaning of all of used configuration components.
|
|
||||||
|
|
||||||
This method also exposes all xkb configuration details directly into
|
|
||||||
xorg.conf configuration file which is a not very fortunate fact. In rare
|
|
||||||
occasions it may be needed, though. So how does it work?
|
|
||||||
|
|
||||||
3.1 Basic Components
|
|
||||||
|
|
||||||
There are five basic components used to form a keyboard mapping:
|
|
||||||
|
|
||||||
o key codes - a translation of the scan codes produced by the keyboard
|
|
||||||
into a suitable symbolic form
|
|
||||||
|
|
||||||
o types - a specification of what various combinations of modifiers pro-
|
|
||||||
duce
|
|
||||||
|
|
||||||
o key symbols - a translation of symbolic key codes into actual symbols
|
|
||||||
|
|
||||||
o geometry - a description of physical keyboard geometry
|
|
||||||
|
|
||||||
o compatibility maps - a specification of what action should each key pro-
|
|
||||||
duce in order to preserve compatibility with XKB-unware clients
|
|
||||||
|
|
||||||
3.2 Example Configuration
|
|
||||||
|
|
||||||
Look at the following example:
|
|
||||||
|
|
||||||
Section "InputDevice"
|
|
||||||
Identifier "Keyboard0"
|
|
||||||
Driver "kbd"
|
|
||||||
|
|
||||||
Option "XkbKeycodes" "xorg"
|
|
||||||
Option "XkbTypes" "default"
|
|
||||||
Option "XkbSymbols" "en_US(pc104)+de+swapcaps"
|
|
||||||
Option "XkbGeometry" "pc(pc104)"
|
|
||||||
Option "XkbCompat" "basic+pc+iso9995"
|
|
||||||
EndSection
|
|
||||||
|
|
||||||
This configuration sets the standard X server default interpretation of key-
|
|
||||||
board keycodes, sets the default modificator types. The symbol table is com-
|
|
||||||
posed of extended US keyboard layout in its variant for pc keyboards with 104
|
|
||||||
keys plus all keys for german layout are redefined respectively. Also the
|
|
||||||
logical meaning of Caps-lock and Control keys is swapped. The standard key-
|
|
||||||
board geometry (physical look) is set to pc style keyboard with 104 keys. The
|
|
||||||
compatibility map is set to allow basic shifting, to allow Alt keys to be
|
|
||||||
interpreted and also to allow iso9995 group shifting.
|
|
||||||
|
|
||||||
4. Keymap XKB Configuration
|
|
||||||
|
|
||||||
It is the formerly used way to configure xkb. The user included a special
|
|
||||||
keymap file which specified the direct xkb configuration. This method has
|
|
||||||
been obsoleted by previously described rules files which are far more flexi-
|
|
||||||
ble and allow simpler and more intuitive syntax. It is preserved merely for
|
|
||||||
compatibility reasons. Avoid using it if it is possible.
|
|
||||||
|
|
||||||
|
|
@ -1,508 +0,0 @@
|
|||||||
How to further enhance XKB configuration
|
|
||||||
|
|
||||||
Kamil Toman, Ivan U. Pascal
|
|
||||||
|
|
||||||
25 November 2002
|
|
||||||
|
|
||||||
Abstract
|
|
||||||
|
|
||||||
This guide is aimed to relieve one's labour to create a new (inter-
|
|
||||||
nationalized) keyboard layout. Unlike other documents this guide
|
|
||||||
accents the keymap developer's point of view.
|
|
||||||
|
|
||||||
1. Overview
|
|
||||||
|
|
||||||
The developer of a new layout should read the xkb protocol specification (The
|
|
||||||
X Keyboard Extension: Protocol Specification <URL:http://www.x-
|
|
||||||
docs.org/XKB/XKBproto.pdf>) at least to clarify for himself some xkb-specific
|
|
||||||
terms used in this document and elsewhere in xkb configuration. Also it shows
|
|
||||||
wise to understand how the X server and a client digest their keyboard inputs
|
|
||||||
(with and without xkb).
|
|
||||||
|
|
||||||
A useful source is also Ivan Pascal's text about xkb configuration
|
|
||||||
<URL:http://www.tsu.ru/~pascal/en/xkb> often referenced throughout this docu-
|
|
||||||
ment.
|
|
||||||
|
|
||||||
Note that this document covers only enhancements which are to be made to
|
|
||||||
XFree86 version 4.3 and X11R6.7.0 and above.
|
|
||||||
|
|
||||||
2. The Basics
|
|
||||||
|
|
||||||
At the startup (or at later at user's command) X server starts its xkb key-
|
|
||||||
board module extension and reads data from a compiled configuration file.
|
|
||||||
|
|
||||||
This compiled configuration file is prepared by the program xkbcomp which
|
|
||||||
behaves altogether as an ordinary compiler (see man xkbcomp). Its input are
|
|
||||||
human readable xkb configuration files which are verified and then composed
|
|
||||||
into a useful xkb configuration. Users don't need to mess with xkbcomp them-
|
|
||||||
selves, for them it is invisible. Usually, it is started upon X server
|
|
||||||
startup.
|
|
||||||
|
|
||||||
As you probably already know, the xkb configuration consists of five main
|
|
||||||
modules:
|
|
||||||
|
|
||||||
Keycodes
|
|
||||||
Tables that defines translation from keyboard scan codes into
|
|
||||||
reasonable symbolic names, maximum, minimum legal keycodes, sym-
|
|
||||||
bolic aliases and description of physically present LED-indica-
|
|
||||||
tors. The primary sence of this component is to allow definitions
|
|
||||||
of maps of symbols (see below) to be independent of physical key-
|
|
||||||
board scancodes. There are two main naming conventions for sym-
|
|
||||||
bolic names (always four bytes long):
|
|
||||||
|
|
||||||
o names which express some traditional meaning like <SPCE>
|
|
||||||
(stands for space bar) or
|
|
||||||
|
|
||||||
o names which express some relative positioning on a key-
|
|
||||||
board, for example <AE01> (an exclamation mark on US key-
|
|
||||||
boards), on the right there are keys <AE02>, <AE03> etc.
|
|
||||||
|
|
||||||
Types
|
|
||||||
Types describe how the produced key is changed by active modi-
|
|
||||||
fiers (like Shift, Control, Alt, ...). There are several prede-
|
|
||||||
fined types which cover most of used combinations.
|
|
||||||
|
|
||||||
Compat
|
|
||||||
Compatibility component defines internal behaviour of modifiers.
|
|
||||||
Using compat component you can assign various actions (elabo-
|
|
||||||
rately described in xkb specification) to key events. This is
|
|
||||||
also the place where LED-indicators behaviour is defined.
|
|
||||||
|
|
||||||
Symbols
|
|
||||||
For i18n purposes, this is the most important table. It defines
|
|
||||||
what values (=symbols) are assigned to what keycodes (represented
|
|
||||||
by their symbolic name, see above). There may be defined more
|
|
||||||
than one value for each key and then it depends on a key type and
|
|
||||||
on modifiers state (respective compat component) which value will
|
|
||||||
be the resulting one.
|
|
||||||
|
|
||||||
Geometry
|
|
||||||
Geometry files aren't used by xkb itself but they may be used by
|
|
||||||
some external programs to depict a keyboard image.
|
|
||||||
|
|
||||||
All these components have the files located in xkb configuration tree in sub-
|
|
||||||
directories with the same names (usually in /usr/lib/X11/xkb).
|
|
||||||
|
|
||||||
3. Enhancing XKB Configuration
|
|
||||||
|
|
||||||
Most of xkb enhancements concerns a need to define new output symbols for the
|
|
||||||
some input key events. In other words, a need to define a new symbol map (for
|
|
||||||
a new language, standard or just to feel more comfortable when typing text).
|
|
||||||
|
|
||||||
What do you need to do? Generally, you have to define following things:
|
|
||||||
|
|
||||||
o the map of symbols itself
|
|
||||||
|
|
||||||
o the rules to allow users to select the new mapping
|
|
||||||
|
|
||||||
o the description of the new layout
|
|
||||||
|
|
||||||
First of all, it is good to go through existing layouts and to examine them
|
|
||||||
if there is something you could easily adjust to fit your needs. Even if
|
|
||||||
there is nothing similar you may get some ideas about basic concepts and used
|
|
||||||
tricks.
|
|
||||||
|
|
||||||
3.1 Levels And Groups
|
|
||||||
|
|
||||||
Since XFree86 4.3.0 and X11R6.7.0 you can use multi-layout concept of xkb
|
|
||||||
configuration. Though it is still in boundaries of xkb protocol and general
|
|
||||||
ideas, the keymap designer must obey new rules when creating new maps. In
|
|
||||||
exchange we get a more powerful and cleaner configuration system.
|
|
||||||
|
|
||||||
Remember that it is the application which must decide which symbol matches
|
|
||||||
which keycode according to effective modifier state. The X server itself
|
|
||||||
sends only an input event message to. Of course, usually the general inter-
|
|
||||||
pretation is processed by Xlib, Xaw, Motif, Qt, Gtk and similar libraries.
|
|
||||||
The X server only supplies its mapping table (usually upon an application
|
|
||||||
startup).
|
|
||||||
|
|
||||||
You can think of the X server's symbol table as of a irregular table where
|
|
||||||
each keycode has its row and where each combination of modifiers determines
|
|
||||||
exactly one column. The resulting cell then gives the proper symbolic value.
|
|
||||||
Not all keycodes need to bind different values for different combination of
|
|
||||||
modifiers. <ENTER> key, for instance, usually doesn't depend on any modi-
|
|
||||||
fiers so it its row has only one column defined.
|
|
||||||
|
|
||||||
Note that in XKB there is no prior assumption that certain modifiers are
|
|
||||||
bound to certain columns. By editing proper files (see refnam (section 4.2,
|
|
||||||
page 1)) this mapping can be changed as well.
|
|
||||||
|
|
||||||
Unlike the original X protocol the XKB approach is far more flexible. It is
|
|
||||||
comfortable to add one additional XKB term - group. You can think of a group
|
|
||||||
as of a vector of columns per each keycode (naturally the dimension of this
|
|
||||||
vector may differ for different keycodes). What is it good for? The group is
|
|
||||||
not very useful unless you intend to use more than one logically different
|
|
||||||
set of symbols (like more than one alphabet) defined in a single mapping
|
|
||||||
table. But then, the group has a natural meaning - each symbol set has its
|
|
||||||
own group and changing it means selecting a different one. XKB approach
|
|
||||||
allows up to four different groups. The columns inside each group are called
|
|
||||||
(shift) levels. The X server knows the current group and reports it together
|
|
||||||
with modifier set and with a keycode in key events.
|
|
||||||
|
|
||||||
To sum it up:
|
|
||||||
|
|
||||||
o for each keycode XKB keyboard map contains up to four one-dimensional
|
|
||||||
tables - groups (logically different symbol sets)
|
|
||||||
|
|
||||||
o for each group of a keycode XKB keyboard map contains some columns -
|
|
||||||
shift levels (values reached by combinations of Shift, Ctrl, Alt, ...
|
|
||||||
modifiers)
|
|
||||||
|
|
||||||
o different keycodes can have different number of groups
|
|
||||||
|
|
||||||
o different groups of one keycode can have different number of shift lev-
|
|
||||||
els
|
|
||||||
|
|
||||||
o the current group number is tracked by X server
|
|
||||||
|
|
||||||
It is clear that if you sanely define levels, groups and sanely bind modi-
|
|
||||||
fiers and associated actions you can have simultaneously loaded up to four
|
|
||||||
different symbol sets where each of them would reside in its own group.
|
|
||||||
|
|
||||||
The multi-layout concept provides a facility to manipulate xkb groups and
|
|
||||||
symbol definitions in a way that allows almost arbitrary composition of pre-
|
|
||||||
defined symbol tables. To keep it fully functional you have to:
|
|
||||||
|
|
||||||
o define all symbols only in the first group
|
|
||||||
|
|
||||||
o (re)define any modifiers with extra care to avoid strange (anisometric)
|
|
||||||
behaviour
|
|
||||||
|
|
||||||
4. Defining New Layouts
|
|
||||||
|
|
||||||
See Some Words About XKB internals <URL:http://www.tsu.ru/~pas-
|
|
||||||
cal/en/xkb/internals.html> for explanation of used xkb terms and problems
|
|
||||||
addressed by XKB extension.
|
|
||||||
|
|
||||||
See Common notes about XKB configuration files language
|
|
||||||
<URL:http://www.tsu.ru/~pascal/en/xkb/gram-common.html> for more precise
|
|
||||||
explanation of syntax of xkb configuration files.
|
|
||||||
|
|
||||||
4.1 Predefined XKB Symbol Sets
|
|
||||||
|
|
||||||
If you are about to define some European symbol map extension, you might want
|
|
||||||
to use on of four predefined latin alphabet layouts.
|
|
||||||
|
|
||||||
Okay, let's assume you want extend an existing keymap and you want to over-
|
|
||||||
ride a few keys. Let's take a simple U.K. keyboard as an example (defined in
|
|
||||||
pc/gb):
|
|
||||||
|
|
||||||
partial default alphanumeric_keys
|
|
||||||
xkb_symbols "basic" {
|
|
||||||
include "pc/latin"
|
|
||||||
|
|
||||||
name[Group1]="Great Britain";
|
|
||||||
|
|
||||||
key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
|
|
||||||
key <AE03> { [ 3, sterling, threesuperior, sterling ] };
|
|
||||||
key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
|
|
||||||
key <TLDE> { [ grave, notsign, bar, bar ] };
|
|
||||||
key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
|
|
||||||
key <RALT> { type[Group1]="TWO_LEVEL",
|
|
||||||
[ ISO_Level3_Shift, Multi_key ] };
|
|
||||||
|
|
||||||
modifier_map Mod5 { <RALT> };
|
|
||||||
};
|
|
||||||
|
|
||||||
It defines a new layout in basic variant as an extension of common latin
|
|
||||||
alphabet layout. The layout (symbol set) name is set to "Great Britain".
|
|
||||||
Then there are redefinitions of a few keycodes and a modifiers binding. As
|
|
||||||
you can see the number of shift levels is the same for <AE02>, <AE03>,
|
|
||||||
<AC11>, <TLDE> and <BKSL> keys but it differs from number of shift levels of
|
|
||||||
<RALT>.
|
|
||||||
|
|
||||||
Note that the <RALT> key itself is a binding key for Mod5 and that it serves
|
|
||||||
like a shift modifier for LevelThree, together with Shift as a multi-key. It
|
|
||||||
is a good habit to respect this rule in a new similar layout.
|
|
||||||
|
|
||||||
Okay, you could now define more variants of your new layout besides basic
|
|
||||||
simply by including (augmenting/overriding/...) the basic definition and
|
|
||||||
altering what may be needed.
|
|
||||||
|
|
||||||
4.2 Key Types
|
|
||||||
|
|
||||||
The differences in the number of columns (shift levels) are caused by a dif-
|
|
||||||
ferent types of keys (see the types definition in section basics). Most key-
|
|
||||||
codes have implicitly set the keytype in the included 'pc/latin' file to
|
|
||||||
'FOUR_LEVEL_ALPHABETIC'. The only exception is <RALT> keycode which is
|
|
||||||
explicitly set 'TWO_LEVEL' keytype.
|
|
||||||
|
|
||||||
All those names refer to pre-defined shift level schemes. Usually you can
|
|
||||||
choose a suitable shift level scheme from default types scheme list in proper
|
|
||||||
xkb component's subdirectory.
|
|
||||||
|
|
||||||
The most used schemes are:
|
|
||||||
|
|
||||||
ONE_LEVEL
|
|
||||||
The key does not depend on any modifiers. The symbol from first
|
|
||||||
level is always chosen.
|
|
||||||
|
|
||||||
TWO_LEVEL
|
|
||||||
The key uses a modifier Shift and may have two possible values.
|
|
||||||
The second level may be chosen by Shift modifier. If Lock modi-
|
|
||||||
fier (usually Caps-lock) applies the symbol is further processed
|
|
||||||
using system-specific capitalization rules. If both Shift+Lock
|
|
||||||
modifier apply the symbol from the second level is taken and cap-
|
|
||||||
italization rules are applied (and usually have no effect).
|
|
||||||
|
|
||||||
ALPHABETIC
|
|
||||||
The key uses modifiers Shift and Lock. It may have two possible
|
|
||||||
values. The second level may be chosen by Shift modifier. When
|
|
||||||
Lock modifier applies, the symbol from the first level is taken
|
|
||||||
and further processed using system-specific capitalization rules.
|
|
||||||
If both Shift+Lock modifier apply the symbol from the first level
|
|
||||||
is taken and no capitalization rules applied. This is often
|
|
||||||
called shift-cancels-caps behaviour.
|
|
||||||
|
|
||||||
THREE_LEVEL
|
|
||||||
Is the same as TWO_LEVEL but it considers an extra modifier -
|
|
||||||
LevelThree which can be used to gain the symbol value from the
|
|
||||||
third level. If both Shift+LevelThree modifiers apply the value
|
|
||||||
from the third level is also taken. As in TWO_LEVEL, the Lock
|
|
||||||
modifier doesn't influence the resulting level. Only Shift and
|
|
||||||
LevelThree are taken into that consideration. If the Lock modi-
|
|
||||||
fier is active capitalization rules are applied on the resulting
|
|
||||||
symbol.
|
|
||||||
|
|
||||||
FOUR_LEVEL
|
|
||||||
Is the same as THREE_LEVEL but unlike LEVEL_THREE if both
|
|
||||||
Shift+LevelThree modifiers apply the symbol is taken from the
|
|
||||||
fourth level.
|
|
||||||
|
|
||||||
FOUR_LEVEL_ALPHABETIC
|
|
||||||
Is similar to FOUR_LEVEL but also defines shift-cancels-caps
|
|
||||||
behaviour as in ALPHABETIC. If Lock+LevelThree apply the symbol
|
|
||||||
from the third level is taken and the capitalization rules are
|
|
||||||
applied. If Lock+Shift+LevelThree apply the symbol from the
|
|
||||||
third level is taken and no capitalization rules are applied.
|
|
||||||
|
|
||||||
KEYPAD
|
|
||||||
As the name suggest this scheme is primarily used for numeric
|
|
||||||
keypads. The scheme considers two modifiers - Shift and NumLock.
|
|
||||||
If none of modifiers applies the symbol from the first level is
|
|
||||||
taken. If either Shift or NumLock modifiers apply the symbol from
|
|
||||||
the second level is taken. If both Shift+NumLock modifiers apply
|
|
||||||
the symbol from the first level is taken. Again, shift-cancels-
|
|
||||||
caps variant.
|
|
||||||
|
|
||||||
FOUR_LEVEL_KEYPAD
|
|
||||||
Is similar to KEYPAD scheme but considers also LevelThree modi-
|
|
||||||
fier. If LevelThree modifier applies the symbol from the third
|
|
||||||
level is taken. If Shift+LevelThree or NumLock+LevelThree apply
|
|
||||||
the symbol from the fourth level is taken. If all Shift+Num-
|
|
||||||
Lock+LevelThree modifiers apply the symbol from the third level
|
|
||||||
is taken. This also, shift-cancels-caps variant.
|
|
||||||
|
|
||||||
Besides that, there are several schemes for special purposes:
|
|
||||||
|
|
||||||
PC_BREAK
|
|
||||||
It is similar to TWO_LEVEL scheme but it considers the Control
|
|
||||||
modifier rather than Shift. That means, the symbol from the sec-
|
|
||||||
ond level is chosen by Control rather than by Shift.
|
|
||||||
|
|
||||||
PC_SYSRQ
|
|
||||||
It is similar to TWO_LEVEL scheme but it considers the Alt modi-
|
|
||||||
fier rather than Shift. That means, the symbol from the second
|
|
||||||
level is chosen by Alt rather than by Shift.
|
|
||||||
|
|
||||||
CTRL+ALT
|
|
||||||
The key uses modifiers Alt and Control. It may have two possible
|
|
||||||
values. If only one modifier (Alt or Control) applies the symbol
|
|
||||||
from the first level is chosen. Only if both Alt+Control modi-
|
|
||||||
fiers apply the symbol from the second level is chosen.
|
|
||||||
|
|
||||||
SHIFT+ALT
|
|
||||||
The key uses modifiers Shift and Alt. It may have two possible
|
|
||||||
values. If only one modifier (Alt or Shift) applies the symbol
|
|
||||||
from the first level is chosen. Only if both Alt+Shift modifiers
|
|
||||||
apply the symbol from the second level is chosen.
|
|
||||||
|
|
||||||
If needed, special caps schemes may be used. They redefine the standard
|
|
||||||
behaviour of all *ALPHABETIC types. The layouts (maps of symbols) with keys
|
|
||||||
defined in respective types then automatically change their behaviour accord-
|
|
||||||
ingly. Possible redefinitions are:
|
|
||||||
|
|
||||||
o internal
|
|
||||||
|
|
||||||
o internal_nocancel
|
|
||||||
|
|
||||||
o shift
|
|
||||||
|
|
||||||
o shift_nocancel
|
|
||||||
|
|
||||||
None of these schemes should be used directly. They are defined merely for
|
|
||||||
'caps:' xkb options (used to globally change the layouts behaviour).
|
|
||||||
|
|
||||||
Don't alter any of existing key types. If you need a different behaviour cre-
|
|
||||||
ate a new one.
|
|
||||||
|
|
||||||
4.2.1 More On Definitions Of Types
|
|
||||||
|
|
||||||
When the XKB software deals with a separate type description it gets a com-
|
|
||||||
plete list of modifiers that should be taken into account from the 'modi-
|
|
||||||
fiers=<list of modifiers>' list and expects that a set of 'map[<combination
|
|
||||||
of modifiers>]=<list of modifiers>' instructions that contain the mapping for
|
|
||||||
each combination of modifiers mentioned in that list. Modifiers that are not
|
|
||||||
explicitly listed are NOT taken into account when the resulting shift level
|
|
||||||
is computed. If some combination is omitted the program (subroutine) should
|
|
||||||
choose the first level for this combination (a quite reasonable behavior).
|
|
||||||
|
|
||||||
Lets consider an example with two modifiers ModOne and ModTwo:
|
|
||||||
|
|
||||||
type "..." {
|
|
||||||
modifiers = ModOne+ModTwo;
|
|
||||||
map[None] = Level1;
|
|
||||||
map[ModOne] = Level2;
|
|
||||||
};
|
|
||||||
|
|
||||||
In this case the map statements for ModTwo only and ModOne+ModTwo are omit-
|
|
||||||
ted. It means that if the ModTwo is active the subroutine can't found
|
|
||||||
explicit mapping for such combination an will use the default level i.e.
|
|
||||||
Level1.
|
|
||||||
|
|
||||||
But in the case the type described as:
|
|
||||||
|
|
||||||
type "..." {
|
|
||||||
modifiers = ModOne;
|
|
||||||
map[None] = Level1;
|
|
||||||
map[ModOne] = Level2;
|
|
||||||
};
|
|
||||||
|
|
||||||
the ModTwo will not be taken into account and the resulting level depends on
|
|
||||||
the ModOne state only. That means, ModTwo alone produces the Level1 but the
|
|
||||||
combination ModOne+ModTwo produces the Level2 as well as ModOne alone.
|
|
||||||
|
|
||||||
What does it mean if the second modifier is the Lock? It means that in the
|
|
||||||
first case (the Lock itself is included in the list of modifiers but combina-
|
|
||||||
tions with this modifier aren't mentioned in the map statements) the internal
|
|
||||||
capitalization rules will be applied to the symbol from the first level. But
|
|
||||||
in the second case the capitalization will be applied to the symbol chosen
|
|
||||||
accordingly to he first modifier - and this can be the symbol from the first
|
|
||||||
as well as from the second level.
|
|
||||||
|
|
||||||
Usually, all modifiers introduced in 'modifiers=<list of modifiers>' list are
|
|
||||||
used for shift level calculation and then discarded. Sometimes this is not
|
|
||||||
desirable. If you want to use a modifier for shift level calculation but you
|
|
||||||
don't want to discard it, you may list in 'preserve[<combination of modi-
|
|
||||||
fiers>]=<list of modifiers>'. That means, for a given combination all listed
|
|
||||||
modifiers will be preserved. If the Lock modifier is preserved then the
|
|
||||||
resulting symbol is passed to internal capitalization routine regardless
|
|
||||||
whether it has been used for a shift level calculation or not.
|
|
||||||
|
|
||||||
Any key type description can use both real and virtual modifiers. Since real
|
|
||||||
modifiers always have standard names it is not necessary to explicitly
|
|
||||||
declare them. Virtual modifiers can have arbitrary names and can be declared
|
|
||||||
(prior using them) directly in key type definition:
|
|
||||||
|
|
||||||
virtual_modifiers <comma-separated list of modifiers> ;
|
|
||||||
|
|
||||||
as seen in for example basic, pc or mousekeys key type definitions.
|
|
||||||
|
|
||||||
4.3 Rules
|
|
||||||
|
|
||||||
Once you are finished with your symbol map you need to add it to rules file.
|
|
||||||
The rules file describes how all the five basic keycodes, types, compat, sym-
|
|
||||||
bols and geometry components should be composed to give a sensible resulting
|
|
||||||
xkb configuration.
|
|
||||||
|
|
||||||
The main advantage of rules over formerly used keymaps is a possibility to
|
|
||||||
simply parameterize (once) fixed patterns of configurations and thus to ele-
|
|
||||||
gantly allow substitutions of various local configurations into predefined
|
|
||||||
templates.
|
|
||||||
|
|
||||||
A pattern in a rules file (often located in /usr/lib/X11/xkb/rules) can be
|
|
||||||
parameterized with four other arguments: Model, Layout, Variant and Options.
|
|
||||||
For most cases parameters model and layout should be sufficient for choosing
|
|
||||||
a functional keyboard mapping.
|
|
||||||
|
|
||||||
The rules file itself is composed of pattern lines and lines with rules. The
|
|
||||||
pattern line starts with an exclamation mark ('!') and describes how will the
|
|
||||||
xkb interpret the following lines (rules). A sample rules file looks like
|
|
||||||
this:
|
|
||||||
|
|
||||||
! model = keycodes
|
|
||||||
macintosh_old = macintosh
|
|
||||||
...
|
|
||||||
* = xorg
|
|
||||||
|
|
||||||
! model = symbols
|
|
||||||
hp = +inet(%m)
|
|
||||||
microsoftpro = +inet(%m)
|
|
||||||
geniuscomfy = +inet(%m)
|
|
||||||
|
|
||||||
! model layout[1] = symbols
|
|
||||||
macintosh us = macintosh/us%(v[1])
|
|
||||||
* * = pc/pc(%m)+pc/%l[1]%(v[1])
|
|
||||||
|
|
||||||
! model layout[2] = symbols
|
|
||||||
macintosh us = +macintosh/us[2]%(v[2]):2
|
|
||||||
* * = +pc/%l[2]%(v[2]):2
|
|
||||||
|
|
||||||
! option = types
|
|
||||||
caps:internal = +caps(internal)
|
|
||||||
caps:internal_nocancel = +caps(internal_nocancel)
|
|
||||||
|
|
||||||
Each rule defines what certain combination of values on the left side of
|
|
||||||
equal sign ('=') results in. For example a (keyboard) model macintosh_old
|
|
||||||
instructs xkb to take definitions of keycodes from file keycodes/macintosh
|
|
||||||
while the rest of models (represented by a wild card '*') instructs it to
|
|
||||||
take them from file keycodes/xorg. The wild card represents all possible val-
|
|
||||||
ues on the left side which were not found in any of the previous rules. The
|
|
||||||
more specialized (more complete) rules have higher precedence than general
|
|
||||||
ones, i.e. the more general rules supply reasonable default values.
|
|
||||||
|
|
||||||
As you can see some lines contain substitution parameters - the parameters
|
|
||||||
preceded by the percent sign ('%'). The first alphabetical character after
|
|
||||||
the percent sign expands to the value which has been found on the left side.
|
|
||||||
For example +%l%(v) expands into +cz(bksl) if the respective values on the
|
|
||||||
left side were cz layout in its bksl variant. More, if the layout resp. vari-
|
|
||||||
ant parameter is followed by a pair of brackets ('[', ']') it means that xkb
|
|
||||||
should place the layout resp. variant into specified xkb group. If the brack-
|
|
||||||
ets are omitted the first group is the default value.
|
|
||||||
|
|
||||||
So the second block of rules enhances symbol definitions for some particular
|
|
||||||
keyboard models with extra keys (for internet, multimedia, ...) . Other mod-
|
|
||||||
els are left intact. Similarly, the last block overrides some key type defi-
|
|
||||||
nitions, so the common global behaviour ''shift cancels caps'' or ''shift
|
|
||||||
doesn't cancel caps'' can be selected. The rest of rules produces special
|
|
||||||
symbols for each variant us layout of macintosh keyboard and standard pc sym-
|
|
||||||
bols in appropriate variants as a default.
|
|
||||||
|
|
||||||
4.4 Descriptive Files of Rules
|
|
||||||
|
|
||||||
Now you just need to add a detailed description to <rules>.xml description
|
|
||||||
file so the other users (and external programs which often parse this file)
|
|
||||||
know what is your work about.
|
|
||||||
|
|
||||||
4.4.1 Old Descriptive Files
|
|
||||||
|
|
||||||
The formerly used descriptive files were named <rules>.lst Its structure is
|
|
||||||
very simple and quite self descriptive but such simplicity had also some cav-
|
|
||||||
ities, for example there was no way how to describe local variants of layouts
|
|
||||||
and there were problems with the localization of descriptions. To preserve
|
|
||||||
compatibility with some older programs, new XML descriptive files can be con-
|
|
||||||
verted to old format '.lst'.
|
|
||||||
|
|
||||||
For each parameter of rules file should be described its meaning. For the
|
|
||||||
rules file described above the .lst file could look like:
|
|
||||||
|
|
||||||
! model
|
|
||||||
pc104 Generic 104-key PC
|
|
||||||
microsoft Microsoft Natural
|
|
||||||
pc98 PC-98xx Series
|
|
||||||
macintosh Original Macintosh
|
|
||||||
...
|
|
||||||
|
|
||||||
! layout
|
|
||||||
us U.S. English
|
|
||||||
cz Czech
|
|
||||||
de German
|
|
||||||
...
|
|
||||||
|
|
||||||
! option
|
|
||||||
caps:internal uses internal capitalization. Shift cancels Caps
|
|
||||||
caps:internal_nocancel uses internal capitalization. Shift doesn't cancel Caps
|
|
||||||
|
|
||||||
And that should be it. Enjoy creating your own xkb mapping.
|
|
||||||
|
|
||||||
|
|
12
app/xkbcomp/aclocal.m4
vendored
12
app/xkbcomp/aclocal.m4
vendored
@ -498,18 +498,6 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# serial 8
|
|
||||||
|
|
||||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
|
||||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
|
||||||
|
|
||||||
# Do all the work for Automake. -*- Autoconf -*-
|
# Do all the work for Automake. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||||
|
55
app/xkbcomp/configure
vendored
55
app/xkbcomp/configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.62 for xkbcomp 1.2.0.
|
# Generated by GNU Autoconf 2.62 for xkbcomp 1.2.1.
|
||||||
#
|
#
|
||||||
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
||||||
#
|
#
|
||||||
@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='xkbcomp'
|
PACKAGE_NAME='xkbcomp'
|
||||||
PACKAGE_TARNAME='xkbcomp'
|
PACKAGE_TARNAME='xkbcomp'
|
||||||
PACKAGE_VERSION='1.2.0'
|
PACKAGE_VERSION='1.2.1'
|
||||||
PACKAGE_STRING='xkbcomp 1.2.0'
|
PACKAGE_STRING='xkbcomp 1.2.1'
|
||||||
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
||||||
|
|
||||||
# Factoring default headers for most tests.
|
# Factoring default headers for most tests.
|
||||||
@ -1326,7 +1326,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures xkbcomp 1.2.0 to adapt to many kinds of systems.
|
\`configure' configures xkbcomp 1.2.1 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1396,7 +1396,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of xkbcomp 1.2.0:";;
|
short | recursive ) echo "Configuration of xkbcomp 1.2.1:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1505,7 +1505,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
xkbcomp configure 1.2.0
|
xkbcomp configure 1.2.1
|
||||||
generated by GNU Autoconf 2.62
|
generated by GNU Autoconf 2.62
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||||
@ -1519,7 +1519,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by xkbcomp $as_me 1.2.0, which was
|
It was created by xkbcomp $as_me 1.2.1, which was
|
||||||
generated by GNU Autoconf 2.62. Invocation command line was
|
generated by GNU Autoconf 2.62. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -2168,7 +2168,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='xkbcomp'
|
PACKAGE='xkbcomp'
|
||||||
VERSION='1.2.0'
|
VERSION='1.2.1'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -4911,6 +4911,7 @@ AM_DEFAULT_VERBOSITY=1
|
|||||||
ac_config_headers="$ac_config_headers config.h"
|
ac_config_headers="$ac_config_headers config.h"
|
||||||
|
|
||||||
|
|
||||||
|
# If both the C file and YACC are missing, the package cannot be build.
|
||||||
for ac_prog in 'bison -y' byacc
|
for ac_prog in 'bison -y' byacc
|
||||||
do
|
do
|
||||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
@ -4994,39 +4995,16 @@ $as_echo "no" >&6; }
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
as_ac_File=`$as_echo "ac_cv_file_$srcdir/xkbparse.c" | $as_tr_sh`
|
if test ! -f "$srcdir/xkbparse.c"; then
|
||||||
{ $as_echo "$as_me:$LINENO: checking for $srcdir/xkbparse.c" >&5
|
if test -z "$YACC_INST"; then
|
||||||
$as_echo_n "checking for $srcdir/xkbparse.c... " >&6; }
|
{ { $as_echo "$as_me:$LINENO: error: yacc not found - unable to compile xkbparse.y" >&5
|
||||||
if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
test "$cross_compiling" = yes &&
|
|
||||||
{ { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
|
|
||||||
$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
|
|
||||||
{ (exit 1); exit 1; }; }
|
|
||||||
if test -r "$srcdir/xkbparse.c"; then
|
|
||||||
eval "$as_ac_File=yes"
|
|
||||||
else
|
|
||||||
eval "$as_ac_File=no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
ac_res=`eval 'as_val=${'$as_ac_File'}
|
|
||||||
$as_echo "$as_val"'`
|
|
||||||
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
|
|
||||||
$as_echo "$ac_res" >&6; }
|
|
||||||
if test `eval 'as_val=${'$as_ac_File'}
|
|
||||||
$as_echo "$as_val"'` = yes; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
test -z "$YACC_INST" && { { $as_echo "$as_me:$LINENO: error: yacc not found - unable to compile xkbparse.y" >&5
|
|
||||||
$as_echo "$as_me: error: yacc not found - unable to compile xkbparse.y" >&2;}
|
$as_echo "$as_me: error: yacc not found - unable to compile xkbparse.y" >&2;}
|
||||||
{ (exit 1); exit 1; }; }
|
{ (exit 1); exit 1; }; }
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for ac_func in strdup strcasecmp
|
for ac_func in strdup strcasecmp
|
||||||
do
|
do
|
||||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||||
@ -5251,7 +5229,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile"
|
ac_config_files="$ac_config_files Makefile man/Makefile"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
@ -5693,7 +5671,7 @@ exec 6>&1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by xkbcomp $as_me 1.2.0, which was
|
This file was extended by xkbcomp $as_me 1.2.1, which was
|
||||||
generated by GNU Autoconf 2.62. Invocation command line was
|
generated by GNU Autoconf 2.62. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -5746,7 +5724,7 @@ Report bugs to <bug-autoconf@gnu.org>."
|
|||||||
_ACEOF
|
_ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
xkbcomp config.status 1.2.0
|
xkbcomp config.status 1.2.1
|
||||||
configured by $0, generated by GNU Autoconf 2.62,
|
configured by $0, generated by GNU Autoconf 2.62,
|
||||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||||
|
|
||||||
@ -5871,6 +5849,7 @@ do
|
|||||||
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
|
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
|
||||||
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
|
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
|
||||||
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||||
|
"man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
|
||||||
|
|
||||||
*) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
*) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
||||||
$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
||||||
|
@ -21,7 +21,7 @@ dnl
|
|||||||
dnl Process this file with autoconf to create configure.
|
dnl Process this file with autoconf to create configure.
|
||||||
|
|
||||||
AC_PREREQ([2.60])
|
AC_PREREQ([2.60])
|
||||||
AC_INIT([xkbcomp], [1.2.0],
|
AC_INIT([xkbcomp], [1.2.1],
|
||||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xkbcomp])
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xkbcomp])
|
||||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
@ -32,13 +32,16 @@ m4_ifndef([XORG_MACROS_VERSION],
|
|||||||
XORG_MACROS_VERSION(1.8)
|
XORG_MACROS_VERSION(1.8)
|
||||||
XORG_DEFAULT_OPTIONS
|
XORG_DEFAULT_OPTIONS
|
||||||
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
|
||||||
|
# If both the C file and YACC are missing, the package cannot be build.
|
||||||
AC_PROG_YACC
|
AC_PROG_YACC
|
||||||
AC_PATH_PROG([YACC_INST], $YACC)
|
AC_PATH_PROG([YACC_INST], $YACC)
|
||||||
AC_CHECK_FILE([$srcdir/xkbparse.c], [],
|
if test ! -f "$srcdir/xkbparse.c"; then
|
||||||
[test -z "$YACC_INST" && AC_MSG_ERROR([yacc not found - unable to compile xkbparse.y])])
|
if test -z "$YACC_INST"; then
|
||||||
|
AC_MSG_ERROR([yacc not found - unable to compile xkbparse.y])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
AC_CHECK_FUNCS([strdup strcasecmp])
|
AC_CHECK_FUNCS([strdup strcasecmp])
|
||||||
|
|
||||||
@ -46,11 +49,14 @@ AC_CHECK_FUNCS([strdup strcasecmp])
|
|||||||
PKG_CHECK_MODULES(XKBCOMP, x11 xkbfile)
|
PKG_CHECK_MODULES(XKBCOMP, x11 xkbfile)
|
||||||
|
|
||||||
AC_ARG_WITH([xkb_config_root],
|
AC_ARG_WITH([xkb_config_root],
|
||||||
[AC_HELP_STRING([--with-xkb-config-root=<paths>],
|
[AS_HELP_STRING([--with-xkb-config-root=<paths>],
|
||||||
[Set default XKB config root (default: ${datadir}/X11/xkb)])],
|
[Set default XKB config root (default: ${datadir}/X11/xkb)])],
|
||||||
[XKBCONFIGROOT="$withval"],
|
[XKBCONFIGROOT="$withval"],
|
||||||
[XKBCONFIGROOT='${datadir}/X11/xkb'])
|
[XKBCONFIGROOT='${datadir}/X11/xkb'])
|
||||||
AC_SUBST([XKBCONFIGROOT])
|
AC_SUBST([XKBCONFIGROOT])
|
||||||
|
|
||||||
|
|
||||||
AC_OUTPUT([Makefile])
|
AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
|
man/Makefile])
|
||||||
|
AC_OUTPUT
|
||||||
|
12
app/xkbcomp/man/Makefile.am
Normal file
12
app/xkbcomp/man/Makefile.am
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
appmandir = $(APP_MAN_DIR)
|
||||||
|
appman_PRE = xkbcomp.man
|
||||||
|
appman_DATA = $(appman_PRE:man=$(APP_MAN_SUFFIX))
|
||||||
|
|
||||||
|
EXTRA_DIST = $(appman_PRE)
|
||||||
|
CLEANFILES = $(appman_DATA)
|
||||||
|
SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
||||||
|
|
||||||
|
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
|
||||||
|
.man.$(APP_MAN_SUFFIX):
|
||||||
|
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
|
360
app/xkbcomp/man/Makefile.in
Normal file
360
app/xkbcomp/man/Makefile.in
Normal file
@ -0,0 +1,360 @@
|
|||||||
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005 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@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
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
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(install_sh) -d
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
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 = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__installdirs = "$(DESTDIR)$(appmandir)"
|
||||||
|
appmanDATA_INSTALL = $(INSTALL_DATA)
|
||||||
|
DATA = $(appman_DATA)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
|
||||||
|
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
|
APP_MAN_DIR = @APP_MAN_DIR@
|
||||||
|
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CWARNFLAGS = @CWARNFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
|
||||||
|
DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FILE_MAN_DIR = @FILE_MAN_DIR@
|
||||||
|
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL_CMD = @INSTALL_CMD@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIB_MAN_DIR = @LIB_MAN_DIR@
|
||||||
|
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||||
|
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MAN_SUBSTS = @MAN_SUBSTS@
|
||||||
|
MISC_MAN_DIR = @MISC_MAN_DIR@
|
||||||
|
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
XKBCOMP_CFLAGS = @XKBCOMP_CFLAGS@
|
||||||
|
XKBCOMP_LIBS = @XKBCOMP_LIBS@
|
||||||
|
XKBCONFIGROOT = @XKBCONFIGROOT@
|
||||||
|
XORG_MAN_PAGE = @XORG_MAN_PAGE@
|
||||||
|
YACC = @YACC@
|
||||||
|
YACC_INST = @YACC_INST@
|
||||||
|
YFLAGS = @YFLAGS@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
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@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
appmandir = $(APP_MAN_DIR)
|
||||||
|
appman_PRE = xkbcomp.man
|
||||||
|
appman_DATA = $(appman_PRE:man=$(APP_MAN_SUFFIX))
|
||||||
|
EXTRA_DIST = $(appman_PRE)
|
||||||
|
CLEANFILES = $(appman_DATA)
|
||||||
|
SUFFIXES = .$(APP_MAN_SUFFIX) .man
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .$(APP_MAN_SUFFIX) .man
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign man/Makefile
|
||||||
|
.PRECIOUS: 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__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
uninstall-info-am:
|
||||||
|
install-appmanDATA: $(appman_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(appmandir)" || $(mkdir_p) "$(DESTDIR)$(appmandir)"
|
||||||
|
@list='$(appman_DATA)'; for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(appmanDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(appmandir)/$$f'"; \
|
||||||
|
$(appmanDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(appmandir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-appmanDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(appman_DATA)'; for p in $$list; do \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(appmandir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(appmandir)/$$f"; \
|
||||||
|
done
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$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)$(appmandir)"; 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:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-appmanDATA
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-appmanDATA uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic distclean \
|
||||||
|
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-appmanDATA install-data \
|
||||||
|
install-data-am install-exec install-exec-am install-info \
|
||||||
|
install-info-am install-man install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
||||||
|
pdf-am ps ps-am uninstall uninstall-am uninstall-appmanDATA \
|
||||||
|
uninstall-info-am
|
||||||
|
|
||||||
|
|
||||||
|
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
|
||||||
|
.man.$(APP_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:
|
@ -15,16 +15,16 @@ keymap file (.xkm extension) which can be read directly by XKB-capable X
|
|||||||
servers or utilities. The keymap compiler can also produce C header
|
servers or utilities. The keymap compiler can also produce C header
|
||||||
files or XKB source files. The C header files produced by xkbcomp can be
|
files or XKB source files. The C header files produced by xkbcomp can be
|
||||||
included by X servers or utilities that need a built-in default keymap.
|
included by X servers or utilities that need a built-in default keymap.
|
||||||
The XKB source files produced by \fIxkbcomp\fP are fully resolved and can be
|
The XKB source files produced by \fIxkbcomp\fP are fully resolved and can be
|
||||||
used to verify that the files which typically make up an XKB keymap
|
used to verify that the files which typically make up an XKB keymap
|
||||||
are merged correctly or to create a single file which contains a complete
|
are merged correctly or to create a single file which contains a complete
|
||||||
description of the keymap.
|
description of the keymap.
|
||||||
.PP
|
.PP
|
||||||
The \fIsource\fP may specify an X display, or an \fI.xkb\fP or \fI.xkm\fP
|
The \fIsource\fP may specify an X display, or an \fI.xkb\fP or \fI.xkm\fP
|
||||||
file; unless explicitly specified, the format of \fIdestination\fP
|
file; unless explicitly specified, the format of \fIdestination\fP
|
||||||
depends on the format of the source. Compiling a \fI.xkb\fP (keymap source)
|
depends on the format of the source. Compiling a \fI.xkb\fP (keymap source)
|
||||||
file generates a \fI.xkm\fP (compiled keymap file) by default. If the
|
file generates a \fI.xkm\fP (compiled keymap file) by default. If the
|
||||||
source is a \fI.xkm\fP file or an X display, \fIxkbcomp\fP generates a
|
source is a \fI.xkm\fP file or an X display, \fIxkbcomp\fP generates a
|
||||||
keymap source file by default.
|
keymap source file by default.
|
||||||
.PP
|
.PP
|
||||||
If the \fIdestination\fP is an X display, the keymap for the display
|
If the \fIdestination\fP is an X display, the keymap for the display
|
||||||
@ -48,7 +48,7 @@ Produce a C header file as output (.h extension).
|
|||||||
Compute defaults for any missing components, such as key names.
|
Compute defaults for any missing components, such as key names.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-I\fIdir\fP
|
.B \-I\fIdir\fP
|
||||||
Specifies top-level directories to be searched for files included by the
|
Specifies top-level directories to be searched for files included by the
|
||||||
keymap description. After all directories specified by \-I options
|
keymap description. After all directories specified by \-I options
|
||||||
have been searched, the current directory and finally, the default
|
have been searched, the current directory and finally, the default
|
||||||
xkb directory (usually __projectroot__/lib/X11/xkb) will be searched.
|
xkb directory (usually __projectroot__/lib/X11/xkb) will be searched.
|
||||||
@ -58,7 +58,8 @@ use the \-I option alone (i.e. without a directory), before any \-I
|
|||||||
options that specify the directories you do want searched.
|
options that specify the directories you do want searched.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-i\ \fIdeviceid\fP
|
.B \-i\ \fIdeviceid\fP
|
||||||
Specifies device ID (not name) to compile for.
|
If \fIsource\fP or \fIdestination\fP is a valid X display, load the keymap
|
||||||
|
from/into the device with the specified ID (not name).
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-l
|
.B \-l
|
||||||
List maps that specify the \fImap\fP pattern in any files listed on the
|
List maps that specify the \fImap\fP pattern in any files listed on the
|
||||||
@ -72,7 +73,7 @@ Merge the compiled information with the map from the server (not implemented
|
|||||||
yet).
|
yet).
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-o\ \fIname\fP
|
.B \-o\ \fIname\fP
|
||||||
Specifies a name for the generated output file. The default is the name of
|
Specifies a name for the generated output file. The default is the name of
|
||||||
the source file with an appropriate extension for the output format.
|
the source file with an appropriate extension for the output format.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-opt\ \fIparts\fP
|
.B \-opt\ \fIparts\fP
|
||||||
@ -88,7 +89,7 @@ Specifies the root directory for relative path names.
|
|||||||
Force synchronization for X requests.
|
Force synchronization for X requests.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-w\ \fIlvl\fP
|
.B \-w\ \fIlvl\fP
|
||||||
Controls the reporting of warnings during compilation. A warning level
|
Controls the reporting of warnings during compilation. A warning level
|
||||||
of 0 disables all warnings; a warning level of 10 enables them all.
|
of 0 disables all warnings; a warning level of 10 enables them all.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B \-xkb
|
.B \-xkb
|
@ -1037,6 +1037,7 @@ main(int argc, char *argv[])
|
|||||||
ok = False;
|
ok = False;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
result.xkb->device_spec = device_id;
|
||||||
}
|
}
|
||||||
else if (inputFormat == INPUT_XKM) /* parse xkm file */
|
else if (inputFormat == INPUT_XKM) /* parse xkm file */
|
||||||
{
|
{
|
||||||
@ -1053,6 +1054,7 @@ main(int argc, char *argv[])
|
|||||||
ERROR1("Cannot read XKM file \"%s\"\n", inputFile);
|
ERROR1("Cannot read XKM file \"%s\"\n", inputFile);
|
||||||
ok = False;
|
ok = False;
|
||||||
}
|
}
|
||||||
|
result.xkb->device_spec = device_id;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user