libxkbcommon: Changes to 'upstream-unstable'
COPYING | 27
Makefile.am | 62
NEWS | 44
PACKAGING | 50
README.md | 92
bench/.gitignore | 4
bench/compose.c | 63
bench/key-proc.c | 2
bench/rules.c | 60
bench/rulescomp.c | 53
configure.ac | 29
doc/Doxyfile.in | 18
doc/compat.md | 55
doc/doxygen-extra.css | 9
doc/quick-guide.md | 24
src/compat.c | 189 -
src/compose/parser.c | 759 ++++
src/compose/parser.h | 36
src/compose/paths.c | 204 +
src/compose/paths.h | 42
src/compose/state.c | 196 +
src/compose/table.c | 219 +
src/compose/table.h | 100
src/darray.h | 6
src/keymap.c | 6
src/keymap.h | 2
src/keysym.c | 12
src/keysym.h | 3
src/scanner-utils.h | 44
src/state.c | 2
src/xkbcomp/ast-build.c | 8
src/xkbcomp/keycodes.c | 9
src/xkbcomp/keymap-dump.c | 32
src/xkbcomp/keymap.c | 4
src/xkbcomp/parser.y | 12
src/xkbcomp/rules.c | 115
src/xkbcomp/scanner.c | 6
src/xkbcomp/symbols.c | 74
test/.gitignore | 2
test/common.c | 43
test/compose.c | 525 ++
test/data/compat/accessx | 10
test/data/compat/basic | 11
test/data/compat/caps | 15
test/data/compat/complete | 2
test/data/compat/iso9995 | 9
test/data/compat/ledcaps | 35
test/data/compat/lednum | 33
test/data/compat/ledscroll | 35
test/data/compat/level5 | 31
test/data/compat/misc | 68
test/data/compat/mousekeys | 153
test/data/compat/pc | 10
test/data/compat/xfree86 | 4
test/data/compose/en_US.UTF-8/Compose | 5973 +++++++++++++++++++++++++++++++++
test/data/keycodes/xfree86 | 4
test/data/keymaps/host.xkb | 17
test/data/keymaps/no-aliases.xkb | 460 --
test/data/keymaps/stringcomp.data | 17
test/data/rules/base | 111
test/data/rules/evdev | 57
test/data/symbols/altwin | 107
test/data/symbols/ca | 42
test/data/symbols/capslock | 60
test/data/symbols/ch | 35
test/data/symbols/ctrl | 88
test/data/symbols/cz | 173
test/data/symbols/de | 125
test/data/symbols/empty | 2
test/data/symbols/group | 323 -
test/data/symbols/il | 136
test/data/symbols/in | 517 ++
test/data/symbols/inet | 264 -
test/data/symbols/keypad | 131
test/data/symbols/latin | 26
test/data/symbols/level3 | 115
test/data/symbols/level5 | 91
test/data/symbols/macintosh_vndr/apple | 141
test/data/symbols/macintosh_vndr/us | 145
test/data/symbols/pc | 45
test/data/symbols/ru | 838 ++--
test/data/symbols/shift | 29
test/data/symbols/srvr_ctrl | 51
test/data/symbols/terminate | 2
test/data/symbols/us | 174
test/data/sync.sh | 2
test/data/types/basic | 13
test/data/types/extra | 71
test/data/types/iso9995 | 6
test/data/types/level5 | 34
test/data/types/mousekeys | 6
test/data/types/numpad | 8
test/data/types/pc | 25
test/evdev-scancodes.h | 587 +++
test/filecomp.c | 1
test/interactive-evdev.c | 68
test/interactive-x11.c | 2
test/keyseq.c | 33
test/rules-file.c | 48
test/rulescomp.c | 57
test/state.c | 2
test/test.h | 5
test/x11comp.c | 9
xkbcommon-x11.map | 9
xkbcommon.map | 87
xkbcommon/xkbcommon-compose.h | 483 ++
xkbcommon/xkbcommon-x11.h | 73
xkbcommon/xkbcommon.h | 135
108 files changed, 12696 insertions(+), 3025 deletions(-)
New commits:
commit c43c3c866eb9d52cd8f61e75cbef1c30d07f3a28
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 16:41:59 2014 +0300
Bump version to 0.5.0
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/configure.ac b/configure.ac
index 169ab7c..cb176ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@ dnl Process this file with autoconf to create configure.
# Initialize Autoconf
AC_PREREQ([2.62])
-AC_INIT([libxkbcommon], [0.4.3],
+AC_INIT([libxkbcommon], [0.5.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon],
[libxkbcommon], [http://xkbcommon.org])
AC_CONFIG_SRCDIR([Makefile.am])
commit 60104e7955266f9b8ab43bf6ccd013d6fa8a2de3
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 16:35:49 2014 +0300
Update NEWS
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/NEWS b/NEWS
index 4dab3ae..bec2bd9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,47 @@
+libxkbcommon 0.5.0 - 2014-10-18
+==================
+
+- Added support for Compose/dead keys in a new module (included in
+ libxkbcommon). See the documentation or the
+ xkbcommon/xkbcommon-compose.h header file for more details.
+
+- Improved and reordered some sections of the documentation.
+
+- The doxygen HTML pages were made nicer to read.
+
+- Most tests now run also on non-linux platforms.
+
+- A warning is emitted by default about RMLVO values which are not used
+ during keymap compilation, which are most often a user misconfiguration.
+ For example, "terminate:ctrl_alt_backspace" instead of
+ "terminate:ctrl_alt_bksp".
+
+- Added symbol versioning for libxkbcommon and libxkbcommon-x11.
+ Note: binaries compiled against this and future versions will not be
+ able to link against the previous versions of the library.
+
+- Removed several compatablity symbols from the binary (the API isn't
+ affected). This affects binaries which
+
+ 1. Were compiled against a pre-stable (<0.2.0) version of libxkbcommon, and
+ 2. Are linked against the this or later version of libxkbcommon.
+
+ Such a scenario is likely to fail already.
+
+- If Xvfb is not available, the x11comp test is now correctly skipped
+ instead of hanging.
+
+- Benchmarks were moved to a separate bench/ directory.
+
+- Build fixes from OpenBSD.
+
+- Fixed a bug where key type entries such as "map[None] = Level2;" were
+ ignored.
+
+- New API:
+ XKB_COMPOSE_*
+ xkb_compose_*
+
libxkbcommon 0.4.3 - 2014-08-19
==================
commit b92f79240972a7eb9311039ee4e2eda2bca8039c
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 16:38:13 2014 +0300
Change initial symbol file versions to V_0.5.0
It will be quite confusing to use V_0.4.3 since this was already
released without symbol versioning.
Hopefully this doesn't cause any trouble for people who are using -git.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/xkbcommon-x11.map b/xkbcommon-x11.map
index c1a3240..a219288 100644
--- a/xkbcommon-x11.map
+++ b/xkbcommon-x11.map
@@ -1,4 +1,4 @@
-V_0.4.3 {
+V_0.5.0 {
global:
xkb_x11_setup_xkb_extension;
xkb_x11_get_core_keyboard_device_id;
diff --git a/xkbcommon.map b/xkbcommon.map
index 3bbb13e..29fd7ac 100644
--- a/xkbcommon.map
+++ b/xkbcommon.map
@@ -1,4 +1,4 @@
-V_0.4.3 {
+V_0.5.0 {
global:
xkb_keysym_get_name;
xkb_keysym_from_name;
commit 47bb9fd13794d0420e27da47b1a7ac2787cfc417
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 16:37:46 2014 +0300
compose: fill @since TBD
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/xkbcommon/xkbcommon-compose.h b/xkbcommon/xkbcommon-compose.h
index fd6badb..5755aec 100644
--- a/xkbcommon/xkbcommon-compose.h
+++ b/xkbcommon/xkbcommon-compose.h
@@ -38,7 +38,7 @@ extern "C" {
/**
* @defgroup compose Compose and dead-keys support
* Support for Compose and dead-keys.
- * @since TBD
+ * @since 0.5.0
*
* @{
*/
commit aa41d8833475fece07a29bc797100e3d827a8b7e
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 16:03:41 2014 +0300
doc/compat.md: add compose incompatibilities
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/doc/compat.md b/doc/compat.md
index c7c6518..63a45e7 100644
--- a/doc/compat.md
+++ b/doc/compat.md
@@ -44,3 +44,12 @@ Notable additions:
- multiple keysyms per level
+ this requires incompatible dataset changes, such that X11 would
not be able to parse these
+
+## Compose support
+
+Relative to the standard implementation in libX11 (described in the
+Compose(5) man-page), some features are not supported:
+
+- the (! MODIFIER) syntax
+- using modifier keysyms in Compose sequences
+- several interactions with Braille keysyms
commit 413954aa44e7fc103f27fdc7cd962ae8532d96be
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 15:51:41 2014 +0300
Add PACKAGING file
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index dfb3572..8e45ccb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,8 @@ EXTRA_DIST = \
doc/rules-format.txt \
doc/doxygen-extra.css \
xkbcommon.map \
- xkbcommon-x11.map
+ xkbcommon-x11.map \
+ PACKAGING
AM_CPPFLAGS = \
-DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \
diff --git a/PACKAGING b/PACKAGING
new file mode 100644
index 0000000..738ccc4
--- /dev/null
+++ b/PACKAGING
@@ -0,0 +1,50 @@
+libxkbcommon consists of two shared libraries, libxkbcommon (the main
+library) and libxkbcommon-x11 (an addon library for XCB clients).
+
+The files for libxkbcommon-x11 are:
+ libxkbcommon-x11.a libxkbcommon.so* xkbcommon/xkbcommon-x11.h
+ xkbcommon-x11.map xkbcommon-x11.pc
+
+libxkbcommon-x11 can be disabled with --disable-x11 (see
+`./configure --help` for other options/variables).
+
+Dependencies for libxkbcommon:
+- C compiler, autoconf, automake, pkg-config, libc, etc.
+
+- (build optional) xorg-util-macros.
+ Output included in tarball.
+
+- (build optional) bison (preferred) or byacc>=20141006.
+ Output included in tarball.
+ byacc must be configured with --enable-btyacc.
+
+- (build optional, runtime) xkeyboard-config.
+ During build, for automatically detecting the value of
+ --with-xkb-config-root instead of guessing (/usr/share/X11/xkb).
+ During runtime, not strictly needed, but most users of the library
+ would need it.
+
+- (runtime) libX11.
+ Contains the dataset for Compose support (/usr/share/X11/locale).
+ Please don't depend on it explicitly.
+
+- (build optional) doxygen.
+ For generating the HTML documentation.
+
+- (build optional) gperf.
+ Output included in git and tarball. To regenerate, use
+ `make update-keywords`.
+
+Dependencies for libxkbcommon-x11:
+- libxkbcommon.
+
+- libxcb>=1.10 with libxcb-xkb.
+
+Dependencies for libxkbcommon-x11 tests:
+- xkbcomp, Xvfb.
+ If they are not available, the relevant tests are skipped.
+
+Unless libxcb is always available as part of the system, it is preferred
+that libxkbcommon and libxkbcommon-x11 be split into separate packages,
+such that the main library does not depend on libxcb. This avoids a
+transitive dependency of Wayland clients on X libraries.
commit 047d06122e88886bd49a4438e75fcbfc990ba1bf
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 15:07:37 2014 +0300
Makefile.am: add symbol files to EXTRA_DIST
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index cd2dfab..dfb3572 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,7 +12,9 @@ EXTRA_DIST = \
doc/compat.md \
doc/keymap-format-text-v1.txt \
doc/rules-format.txt \
- doc/doxygen-extra.css
+ doc/doxygen-extra.css \
+ xkbcommon.map \
+ xkbcommon-x11.map
AM_CPPFLAGS = \
-DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \
commit 6337d789e66f7730fd347a324bdcbf52a57d86d7
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 14:52:54 2014 +0300
README: we also accepts patches through github
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/README.md b/README.md
index 043b485..867b532 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,7 @@ xkbcommon is maintained in git at
Patches are always welcome, and may be sent to either
<xorg-devel@lists.x.org> or <wayland-devel@lists.freedesktop.org>
+or through github.
Bugs are also welcome, and may be reported either at
Bugzilla https://bugs.freedesktop.org/describecomponents.cgi?product=libxkbcommon
commit 0419f6e78377a91f997f0f67ae0ef49fa1bc09c3
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 14:50:49 2014 +0300
docs: make html output have a fixed width, hide footer
It's hard to read text which stretches indefinitely.
The footer is not adding much.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index b2bdbe7..cd2dfab 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,7 +11,8 @@ EXTRA_DIST = \
doc/quick-guide.md \
doc/compat.md \
doc/keymap-format-text-v1.txt \
- doc/rules-format.txt
+ doc/rules-format.txt \
+ doc/doxygen-extra.css
AM_CPPFLAGS = \
-DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 8ef97b6..5881ff9 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -925,7 +925,7 @@ HTML_STYLESHEET =
# robust against future updates. Doxygen will copy the style sheet file to
# the output directory.
-HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_STYLESHEET = @abs_top_srcdir@/doc/doxygen-extra.css
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
diff --git a/doc/doxygen-extra.css b/doc/doxygen-extra.css
new file mode 100644
index 0000000..632ebad
--- /dev/null
+++ b/doc/doxygen-extra.css
@@ -0,0 +1,9 @@
+div#top, div.header, div.contents {
+ margin-left: auto;
+ margin-right: auto;
+ width: 960px;
+}
+
+.footer {
+ display: none;
+}
commit b05a05edbd4f386de8cb82003ed3408786478e0f
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 14:29:37 2014 +0300
README: add notes about Compose support
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/README.md b/README.md
index 5e68e93..043b485 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,9 @@
# libxkbcommon
-libxkbcommon is a keymap compiler and support library which processes a
-reduced subset of keymaps as defined by the XKB specification.
+libxkbcommon is a keyboard keymap compiler and support library which
+processes a reduced subset of keymaps as defined by the XKB (X Keyboard
+Extension) specification. It also contains a module for handling Compose
+and dead keys.
## Quick Guide
@@ -23,6 +25,9 @@ by all current distributions for their X11 XKB data. More information on
xkeyboard-config is available here:
http://www.freedesktop.org/wiki/Software/XKeyboardConfig
+The dataset for Compose is distributed in libX11, as part of the X locale
+data.
+
## Relation to X11
See [Compatibility](doc/compat.md) notes.
commit 49dc91cedb3f7a8205c1f346f8b2e891decf9209
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 14:12:14 2014 +0300
doc/quick-guide: some improvements
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/doc/quick-guide.md b/doc/quick-guide.md
index a8634fd..3cf5b3b 100644
--- a/doc/quick-guide.md
+++ b/doc/quick-guide.md
@@ -1,6 +1,6 @@
# Quick Guide
-## Intro
+## Introduction
This document contains a quick walk-through of the often-used parts of
the library. We will employ a few use-cases to lead the examples:
@@ -42,8 +42,9 @@ let's create one:
The xkb_context contains the keymap include paths, the log level and
functions, and other general customizable administrativia.
-Next we need to create a keymap, xkb_keymap. There are different ways to
-do this.
+Next we need to create a keymap, xkb_keymap. This is an immutable object
+which contains all of the information about the keys, layouts, etc. There
+are different ways to do this.
If we are an evdev client, we have nothing to go by, so we need to ask
the user for his/her keymap preferences (for example, an Icelandic
@@ -54,7 +55,14 @@ passing NULL chooses the system's default.
~~~{.c}
struct xkb_keymap *keymap;
- struct xkb_rule_names names = <...>;
+ /* Example RMLVO for Icelandic Dvorak. */
+ struct xkb_rule_names names = {
+ .rules = NULL,
+ .model = "pc105",
+ .layout = "is",
+ .variant = "dvorak",
+ .options = "terminate:ctrl_alt_bksp"
+ };
keymap = xkb_keymap_new_from_names(ctx, &names,
XKB_KEYMAP_COMPILE_NO_FLAGS);
@@ -65,6 +73,7 @@ If we are a Wayland client, the compositor gives us a string complete
with a keymap. In this case, we can create the keymap object like this:
~~~{.c}
+ /* From the wl_keyboard::keymap event. */
const char *keymap_string = <...>;
keymap = xkb_keymap_new_from_string(ctx, keymap_string,
@@ -92,7 +101,8 @@ we will use the core keyboard device:
~~~
Now that we have the keymap, we are ready to handle the keyboard devices.
-For each device, we create an xkb_state:
+For each device, we create an xkb_state, which remembers things like which
+keyboard modifiers and LEDs are active:
~~~{.c}
struct xkb_state *state;
commit bac0c323b6559e37af04c4d6c8eb118d926ce07c
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:58:56 2014 +0300
README: remove elaborate details from the intro
Point to the "quick guide" instead.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/README.md b/README.md
index 2d71d67..5e68e93 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,7 @@
# libxkbcommon
-xkbcommon is a keymap compiler and support library which processes a
-reduced subset of keymaps as defined by the XKB specification. Primarily,
-a keymap is created from a set of Rules/Model/Layout/Variant/Options names,
-processed through an XKB ruleset, and compiled into a struct xkb_keymap,
-which is the base type for all xkbcommon operations.
-
-From an xkb_keymap, an xkb_state object is created which holds the current
-state of all modifiers, groups, LEDs, etc, relating to that keymap. All
-key events must be fed into the xkb_state object using xkb_state_update_key().
-Once this is done, the xkb_state object will be properly updated, and the
-keysyms to use can be obtained with xkb_state_key_get_syms().
+libxkbcommon is a keymap compiler and support library which processes a
+reduced subset of keymaps as defined by the XKB specification.
## Quick Guide
commit ab9cb11c91d5d9041de7f198f30bca3f7470ac6b
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:53:25 2014 +0300
doc/compat.md: we don't support more groups or mods yet
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/doc/compat.md b/doc/compat.md
index 22c6164..c7c6518 100644
--- a/doc/compat.md
+++ b/doc/compat.md
@@ -39,8 +39,8 @@ On the other hand, some features and extensions were added.
Notable additions:
- 32-bit keycodes
-- extended number of modifiers
-- extended number of groups
+- extended number of modifiers (planned)
+- extended number of groups (planned)
- multiple keysyms per level
+ this requires incompatible dataset changes, such that X11 would
not be able to parse these
commit 494a8fbf3fdfff79cb763556db8b018b623d7ff9
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:50:54 2014 +0300
README: move compatibility notes to their own page
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/Makefile.am b/Makefile.am
index 9071e90..b2bdbe7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,6 +9,7 @@ EXTRA_DIST = \
test/data \
README.md \
doc/quick-guide.md \
+ doc/compat.md \
doc/keymap-format-text-v1.txt \
doc/rules-format.txt
diff --git a/README.md b/README.md
index c4174ad..2d71d67 100644
--- a/README.md
+++ b/README.md
@@ -34,48 +34,7 @@ xkeyboard-config is available here:
## Relation to X11
-Relative to the XKB 1.1 specification implemented in current X servers,
-xkbcommon has removed support for some parts of the specification which
-introduced unnecessary complications. Many of these removals were in fact
-not implemented, or half-implemented at best, as well as being totally
-unused in the standard dataset.
-
-Notable removals:
-- geometry support
- + there were very few geometry definitions available, and while
- xkbcommon was responsible for parsing this insanely complex format,
- it never actually did anything with it
- + hopefully someone will develop a companion library which supports
- keyboard geometries in a more useful format
-- KcCGST (keycodes/compat/geometry/symbols/types) API
- + use RMLVO instead; KcCGST is now an implementation detail
- + including pre-defined keymap files
-- XKM support
- + may come in an optional X11 support/compatibility library
-- around half of the interpret actions
- + pointer device, message and redirect actions in particular
-- non-virtual modifiers
- + core and virtual modifiers have been collapsed into the same
- namespace, with a 'significant' flag that largely parallels the
- core/virtual split
-- radio groups
- + completely unused in current keymaps, never fully implemented
-- overlays
- + almost completely unused in current keymaps
-- key behaviors
- + used to implement radio groups and overlays, and to deal with things
- like keys that physically lock; unused in current keymaps
-- indicator behaviours such as LED-controls-key
- + the only supported LED behaviour is key-controls-LED; again this
- was never really used in current keymaps
-
-Notable additions:
-- 32-bit keycodes
-- extended number of modifiers
-- extended number of groups
-- multiple keysyms per level
- + this requires incompatible dataset changes, such that X11 would
- not be able to parse these
+See [Compatibility](doc/compat.md) notes.
## Development
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 910e8a7..8ef97b6 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -656,6 +656,7 @@ WARN_LOGFILE =
INPUT = @abs_top_srcdir@/README.md \
@abs_top_srcdir@/doc/quick-guide.md \
+ @abs_top_srcdir@/doc/compat.md \
@abs_top_srcdir@/xkbcommon/xkbcommon.h \
@abs_top_srcdir@/xkbcommon/xkbcommon-names.h \
@abs_top_srcdir@/xkbcommon/xkbcommon-x11.h \
diff --git a/doc/compat.md b/doc/compat.md
new file mode 100644
index 0000000..22c6164
--- /dev/null
+++ b/doc/compat.md
@@ -0,0 +1,46 @@
+# Compatibility
+
+Relative to the XKB 1.1 specification implemented in current X servers,
+xkbcommon has removed support for some parts of the specification which
+introduced unnecessary complications. Many of these removals were in fact
+not implemented, or half-implemented at best, as well as being totally
+unused in the standard dataset.
+
+Notable removals:
+- geometry support
+ + there were very few geometry definitions available, and while
+ xkbcommon was responsible for parsing this insanely complex format,
+ it never actually did anything with it
+ + hopefully someone will develop a companion library which supports
+ keyboard geometries in a more useful format
+- KcCGST (keycodes/compat/geometry/symbols/types) API
+ + use RMLVO instead; KcCGST is now an implementation detail
+ + including pre-defined keymap files
+- XKM support
+ + may come in an optional X11 support/compatibility library
+- around half of the interpret actions
+ + pointer device, message and redirect actions in particular
+- non-virtual modifiers
+ + core and virtual modifiers have been collapsed into the same
+ namespace, with a 'significant' flag that largely parallels the
+ core/virtual split
+- radio groups
+ + completely unused in current keymaps, never fully implemented
+- overlays
+ + almost completely unused in current keymaps
+- key behaviors
+ + used to implement radio groups and overlays, and to deal with things
+ like keys that physically lock; unused in current keymaps
+- indicator behaviours such as LED-controls-key
+ + the only supported LED behaviour is key-controls-LED; again this
+ was never really used in current keymaps
+
+On the other hand, some features and extensions were added.
+
+Notable additions:
+- 32-bit keycodes
+- extended number of modifiers
+- extended number of groups
+- multiple keysyms per level
+ + this requires incompatible dataset changes, such that X11 would
+ not be able to parse these
commit 2e8ab38351266e3894cb797d4bd6a007f1d66603
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:44:02 2014 +0300
README: link to online API docs
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/README.md b/README.md
index 41208d8..c4174ad 100644
--- a/README.md
+++ b/README.md
@@ -18,11 +18,11 @@ See [Quick Guide](doc/quick-guide.md).
## API
-While xkbcommon's API is somewhat derived from the classic XKB API as found
+While libxkbcommon's API is somewhat derived from the classic XKB API as found
in X11/extensions/XKB.h and friends, it has been substantially reworked to
-expose fewer internal details to clients. The supported API is available
-in the xkbcommon/xkbcommon-*.h files. Additional support is provided for
-X11 (XCB) clients, in the xkbcommon-x11 library, xkbcommon/xkbcommon-x11.h.
+expose fewer internal details to clients.
+
+See the [API Documentation](http://xkbcommon.org/doc/current/modules.html).
## Dataset
commit cb46189335d8099364a2e1965e285f019312a6d4
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:34:15 2014 +0300
README: move note about xkeyboard-config to its own section
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/README.md b/README.md
index b45a674..41208d8 100644
--- a/README.md
+++ b/README.md
@@ -12,12 +12,6 @@ key events must be fed into the xkb_state object using xkb_state_update_key().
Once this is done, the xkb_state object will be properly updated, and the
keysyms to use can be obtained with xkb_state_key_get_syms().
-libxkbcommon does not distribute a dataset itself, other than for testing
-purposes. The most common dataset is xkeyboard-config, as used by all
-current distributions for their X11 XKB data. More information on
-xkeyboard-config is available here:
- http://www.freedesktop.org/wiki/Software/XKeyboardConfig
-
## Quick Guide
See [Quick Guide](doc/quick-guide.md).
@@ -30,6 +24,14 @@ expose fewer internal details to clients. The supported API is available
in the xkbcommon/xkbcommon-*.h files. Additional support is provided for
X11 (XCB) clients, in the xkbcommon-x11 library, xkbcommon/xkbcommon-x11.h.
+## Dataset
+
+libxkbcommon does not distribute a keymap dataset itself, other than for
+testing purposes. The most common dataset is xkeyboard-config, which is used
+by all current distributions for their X11 XKB data. More information on
+xkeyboard-config is available here:
+ http://www.freedesktop.org/wiki/Software/XKeyboardConfig
+
## Relation to X11
Relative to the XKB 1.1 specification implemented in current X servers,
commit 8bf1e193fc0a8a62760c641ceb02f5e023980118
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:31:32 2014 +0300
README: remove section on API stability
This was useful when we *weren't* stable. But now that we are this
should be obvious.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/README.md b/README.md
index 2627a32..b45a674 100644
--- a/README.md
+++ b/README.md
@@ -30,14 +30,6 @@ expose fewer internal details to clients. The supported API is available
in the xkbcommon/xkbcommon-*.h files. Additional support is provided for
X11 (XCB) clients, in the xkbcommon-x11 library, xkbcommon/xkbcommon-x11.h.
-The xkbcommon API and ABI are stable. We will attempt to not break ABI during
-a minor release series, so applications written against 0.1.0 should be
-completely compatible with 0.5.3, but not necessarily with 1.0.0. However, new
-symbols may be introduced in any release. Thus, anyone packaging xkbcommon
-should make sure any package depending on it depends on a release greater than
-or equal to the version it was built against (or earlier, if it doesn't use
-any newly-introduced symbols), but less than the next major release.
-
## Relation to X11
Relative to the XKB 1.1 specification implemented in current X servers,
commit f774f819d6d406bf859d22d447895b0bc256297a
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 13:23:53 2014 +0300
Replace some strncmp's with memcmp
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/src/compose/paths.c b/src/compose/paths.c
index c96d7d2..8deb1dd 100644
--- a/src/compose/paths.c
+++ b/src/compose/paths.c
@@ -115,13 +115,13 @@ resolve_name(const char *filename, enum resolve_name_direction direction,
s++;
if (direction == LEFT_TO_RIGHT) {
- if (left_len == name_len && strncmp(left, name, left_len) == 0) {
+ if (left_len == name_len && memcmp(left, name, left_len) == 0) {
match = strndup(right, right_len);
break;
}
}
else if (direction == RIGHT_TO_LEFT) {
- if (right_len == name_len && strncmp(right, name, right_len) == 0) {
+ if (right_len == name_len && memcmp(right, name, right_len) == 0) {
match = strndup(left, left_len);
break;
}
diff --git a/src/scanner-utils.h b/src/scanner-utils.h
index b60a100..5fdb22a 100644
--- a/src/scanner-utils.h
+++ b/src/scanner-utils.h
@@ -34,13 +34,13 @@ typedef darray(struct sval) darray_sval;
static inline bool
svaleq(struct sval s1, struct sval s2)
{
- return s1.len == s2.len && strncmp(s1.start, s2.start, s1.len) == 0;
+ return s1.len == s2.len && memcmp(s1.start, s2.start, s1.len) == 0;
}
static inline bool
svaleq_prefix(struct sval s1, struct sval s2)
{
- return s1.len <= s2.len && strncmp(s1.start, s2.start, s1.len) == 0;
+ return s1.len <= s2.len && memcmp(s1.start, s2.start, s1.len) == 0;
}
struct scanner {
commit a4cc119bf500d0c54ef5cc2b7d27a69a64686692
Author: Ran Benita <ran234@gmail.com>
Date: Sat Oct 18 12:36:40 2014 +0300
compose/parser: save len in keysym_from_name cache
This reduces a lot of strcmp's, and allows to use a faster memcmp.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/src/compose/parser.c b/src/compose/parser.c
index ebc1ffd..95f0fdd 100644
--- a/src/compose/parser.c
+++ b/src/compose/parser.c
@@ -75,6 +75,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
struct keysym_from_name_cache {
struct {
char name[64];
+ unsigned len;
xkb_keysym_t keysym;
} cache[KEYSYM_FROM_NAME_CACHE_SIZE];
unsigned next;
@@ -90,11 +91,13 @@ cached_keysym_from_name(struct keysym_from_name_cache *cache,
return XKB_KEY_NoSymbol;
for (unsigned i = 0; i < KEYSYM_FROM_NAME_CACHE_SIZE; i++)
- if (streq(cache->cache[i].name, name))
+ if (cache->cache[i].len == len &&
+ memcmp(cache->cache[i].name, name, len) == 0)
return cache->cache[i].keysym;
keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
strcpy(cache->cache[cache->next].name, name);
+ cache->cache[cache->next].len = len;
cache->cache[cache->next].keysym = keysym;
cache->next = (cache->next + 1) % KEYSYM_FROM_NAME_CACHE_SIZE;
return keysym;
commit a0d2b0297618b4e422deda5e247580747958405d
Author: Ran Benita <ran234@gmail.com>
Date: Fri Oct 17 01:14:57 2014 +0300
test/keyseq: test 'map[None] = Level2;' scenario
See previous commit for an explanation.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/test/keyseq.c b/test/keyseq.c
index 40a08e9..05c7957 100644
--- a/test/keyseq.c
+++ b/test/keyseq.c
@@ -459,6 +459,26 @@ main(void)
KEY_Z, BOTH, XKB_KEY_y, FINISH));
xkb_keymap_unref(keymap);
+ keymap = test_compile_rules(ctx, "evdev", "applealu_ansi", "us", "",
+ "terminate:ctrl_alt_bksp");
+ assert(keymap);
+
+ assert(test_key_seq(keymap,
+ KEY_5, BOTH, XKB_KEY_5, NEXT,
+ KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT,
+ KEY_NUMLOCK, BOTH, XKB_KEY_Clear, NEXT,
+ KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT,
+ KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT,
+ KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT,
+ KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT,
+ KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT,
+ KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L, NEXT,
+ KEY_KP1, BOTH, XKB_KEY_KP_1, NEXT,
+ KEY_LEFTSHIFT, UP, XKB_KEY_Shift_L, NEXT,
+ KEY_CAPSLOCK, BOTH, XKB_KEY_Caps_Lock, NEXT,
+ KEY_A, BOTH, XKB_KEY_a, FINISH));
+
+ xkb_keymap_unref(keymap);
xkb_context_unref(ctx);
return 0;
}
commit 312182ce7d33a95b5f87549f4cd5908f916e2131
Author: Ran Benita <ran234@gmail.com>
Date: Thu Oct 16 17:55:46 2014 +0300
test/data: add files for model=applealu_ansi layout=us
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/test/data/symbols/macintosh_vndr/apple b/test/data/symbols/macintosh_vndr/apple
new file mode 100644
index 0000000..551eabc
--- /dev/null
+++ b/test/data/symbols/macintosh_vndr/apple
@@ -0,0 +1,141 @@
+//
+// Keyboard modification for Apple keyboards
Reply to: