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 <ran...@gmail.com> Date: Sat Oct 18 16:41:59 2014 +0300 Bump version to 0.5.0 Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 16:35:49 2014 +0300 Update NEWS Signed-off-by: Ran Benita <ran...@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 <ran...@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 <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 16:37:46 2014 +0300 compose: fill @since TBD Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 16:03:41 2014 +0300 doc/compat.md: add compose incompatibilities Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 15:51:41 2014 +0300 Add PACKAGING file Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 15:07:37 2014 +0300 Makefile.am: add symbol files to EXTRA_DIST Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 14:52:54 2014 +0300 README: we also accepts patches through github Signed-off-by: Ran Benita <ran...@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-de...@lists.x.org> or <wayland-de...@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 <ran...@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 <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 14:29:37 2014 +0300 README: add notes about Compose support Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 14:12:14 2014 +0300 doc/quick-guide: some improvements Signed-off-by: Ran Benita <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 13:50:54 2014 +0300 README: move compatibility notes to their own page Signed-off-by: Ran Benita <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 13:44:02 2014 +0300 README: link to online API docs Signed-off-by: Ran Benita <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@gmail.com> Date: Sat Oct 18 13:23:53 2014 +0300 Replace some strncmp's with memcmp Signed-off-by: Ran Benita <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@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 <ran...@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 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/e1yuph5-0001kf...@moszumanska.debian.org