src/xkbcomp/xkbcomp.c


Log

Author Commit Date CI Message
Daniel Stone b4b40d73 2012-09-12T16:54:07 Copyright updates With Dan Nicholson's permission (via email), update his copyright and license statements to the standard X.Org boilerplate MIT license, as both myself and Ran have been using. Clean up my copyright declarations (in some cases to correct ownership), and add copyright/license statements from myself and/or Ran where appropriate. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita 300f3fb1 2012-08-29T10:12:56 Don't printf NULL strings Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita bce90d5b 2012-08-29T10:06:47 xkbcomp: add debug messages of the RMLVO and KcCGST Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 8c1b1b0e 2012-08-29T15:02:40 Add xkbcomp/keymap.c and move some code there Add CompileKeymap to do most of what compile_keymap_file does now, and move UpdateKeymapFromModifiers along with it from (mostly unrelated) compat.c. Also rename UpdateKeymapFromModifiers to UpdateDerivedKeymapFields, because it does more than update the modifiers. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 591df115 2012-08-27T19:20:41 Move enum xkb_file_type to xkbcomp/ast.h This is a more suitable place for this enum, since it's internal to xkbcomp. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita efc2d741 2012-08-27T18:58:36 xkbcomp: clean up compile_keymap function We make the xkb_file_type enum sequential instead of masks, and then we don't have to repeat the file types several times in the function. Makes the code cleaner. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita cdc228ea 2012-08-13T11:00:43 Organize xkbcomp/ header files Various non-functional changes: - Re-add keycodes.h and move some stuff there. - Add parser-priv.h for internal bison/flex stuff. - Don't include headers from other headers, such that file dependencies are immediate in each file. - Rename xkbcomp.h -> ast.h, parseutils.{c,h} -> ast-build.{c,h} - Rename path.{c,h} -> include.{c,h} - Rename keytypes.c -> types.c - Make the naming of XkbFile-related functions more consistent. - Move xkb_map_{new,ref,unref} to map.c. - Remove most extern keyword from function declarations, it's just noise (XKB_EXPORT is what's important here). - Append XKBCOMP_ to include guards. - Shuffle some code around to make all of this work. Splitting this would be a headache.. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 3634b156 2012-08-14T11:49:19 Allocate xkb_component_names on stack Instead of malloc'ing it as well. Also improve the error handling. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita e5353528 2012-08-13T13:49:17 Move ISEMPTY to utils.h Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 87dff888 2012-08-10T18:14:35 Store actions inside struct xkb_key Cuts out a lot of useless redirection and space. Signed-off-by: Ran Benita <ran234@gmail.com>
Daniel Stone 53e2db6b 2012-08-03T03:05:02 More useful error message on failing RMLVO -> KcCGST Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 41d97df9 2012-08-03T03:00:20 Move more of xkb_map_new_from_rmlvo into compilation Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 5cf4f510 2012-08-03T02:57:02 Staticise xkb_map_new_from_kccgst We didn't expose this to the outside world, and its only trivial user was xkb_map_new_from_rules. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 04253fb2 2012-08-03T02:51:10 Add support for default rules/model/layout Right now it just comes from build-time, but eventually this should be sourced from configuration files at runtime too. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita b2fba730 2012-08-07T08:52:23 types: use regular array for map entries This array is only initialized once. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 8ccfee82 2012-08-07T08:38:20 types: use regular array for types The current code doesn't resize it any more. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 233d85c4 2012-08-06T21:31:17 types: move preserve directly into xkb_kt_map_entry Currently each xkb_key_type has a preserve array, which is only allocated if a preserve[] statement is specified in the type. In this case each map entry has an element in the array. The space savings are negligible; put this field where it logically belongs. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 724f62c8 2012-07-25T17:29:08 Convert defines to enums in xkbcomp.h For statement / expression types. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 4f843c81 2012-07-24T13:24:59 Drop Xkbc prefix of text functions Not really needed and inconsistent. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 74be1762 2012-07-23T21:30:28 Remove alloc.{c,h} These functions are more appropriate elsewhere now. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 2c30fa7a 2012-07-21T16:10:17 Remove old logging leftovers Everything has been converted. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 70e3e7e5 2012-07-21T15:39:18 xkbcomp: use new log functions Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita f48ee2d2 2012-07-21T15:44:48 parse: use new log functions Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 58f8d2c1 2012-07-20T17:09:49 utils: remove Xfuncproto.h and use our own macros Add XKB_EXPORT to replace _X_EXPORT, and copy the definitions of _X_ATTRIBUTE_FOO as ATTR_FOO. Signed-off-by: Ran Benita <ran234@gmail.com>
Daniel Stone 9308a460 2012-07-17T10:20:15 Run source tree through uncrustify .uncrustify.cfg committed for future reference also, but had to manually fix up a few things: it really likes justifying struct initialisers. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita d705c5d9 2012-07-14T01:12:50 Make compile_keymap a little nicer Just using the fact that we must have all of the components, without optional ones. Also fixes a memleak on the way, by making the functions which allocate the XkbFiles to free them, which is easier to get right. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita fe4f9909 2012-07-14T00:27:19 Move CompileKeymap into xkbcomp.c It's nicer to see the code where its used. Removes keymap.c. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 13f030ba 2012-06-29T22:25:27 Tiny reformatting Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 37f43849 2012-06-30T00:49:41 rules: remove support for keymap rule This commit removes the ability to specify a keymap *in a rules file*, e.g. in /usr/share/X11/xkb/rules/evdev or somesuch. This is unused in xkeyboard-data, and the current code has never even supported it, because xkb_map_new_from_kccgst (which is no longer exposed in the API) checks to see that one of the usual components (e.g. symbols, types, ..) has been filled, while the rules parser, on the other hand, doesn't allow to specify a keymap and other stuff at the same time. ( The idea was to remove xkb_map_new_from_kccgst entirely, but it's used by a test so it can stay. ) tl;dr: dead code. Of course passing a keymap file to xkb_map_new_from_file still works. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 337c3007 2012-06-30T00:37:12 Remove _X_EXPORT from xkb_map_new_from_kccgst Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita ddb0ff9d 2012-06-29T19:26:01 xkbcomp: remove useless function XkbChooseMap compile_keymap can only be passes a single keymap file now, from all code paths leading to it. So this function doesn't do anything. The remaining check is performed inside CompileKeymap, so we can remove it as well; compile_keymap doesn't do much now. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 213dcf68 2012-06-29T17:31:10 Use enum for merge mode The merge mode shows up in a lot of functions, so it's useful to give it a distinct type. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 48b4d30a 2012-06-29T17:05:33 Use enum for file types enums are nice for some type safety and readability. This one also removes the distinction between file type mask / file type index and some naming consistency. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita b73bd676 2012-05-13T09:49:08 rules: only export a single function Really all we need from this file is a way to get xkb_component_names from an xkb_rule_names, which is now the only thing being exposed. This should allow for some much needed refactoring of this code. Since this is only used by xkbcomp.c and uses xkbcomp functions, also move rules.{c,h} under the xkbcomp dir. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita db3e8f2c 2012-05-13T10:14:10 Create path.h for the path.c functions No need to stash them in xkbcomp-priv.h; files which need the functions should explicitly include them. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita b89b8e70 2012-05-13T23:31:59 Change xkb_map_new_from_fd to use FILE* i.e. xkb_map_new_from_file. The reason is that flex only works with FILE's, so we must use fdopen on the file descriptor; but to avoid a memory leak, we must also fclose() it, which, in turn, closes the file descriptor itself. Either way is not acceptable, so we can either: * dup() the fd and use fdopen on that, or * have the user call fdopen on his own, and accept a FILE* instead of an fd. The second one seems better, and is standard C, so why not. We must add stdio.h to xkbcommon.h though, which is regrettable, but not a big deal. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 75ff2cef 2012-05-13T18:45:43 Various static analyzer fixes Signed-off-by: Ran Benita <ran234@gmail.com>
Daniel Stone 7b00485a 2012-05-11T15:03:43 Rename 'ctx' back to 'context' in external API Still keep things as 'ctx' internally so we don't have to worry about typing it too often, but rename the user-visible API back as it was kinda ugly. This partially reverts e7bb1e5f. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita 5e59ef3f 2012-05-09T17:54:37 Remove support for xkb_layout and xkb_semantics file types These are two aggregate file types which are not used anywhere. We maintain useful-enough backward compatibility in the parser, by treating them as xkb_keymap. The keymap type allows for all types of components, so they will still compile fine if they ever come up. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita e7bb1e5f 2012-05-09T15:03:11 Shorten context to ctx (This breaks the API.) "context" is really annoying to type all the time (and we're going to type it a lot more :). "ctx" is clear, concise and common in many other libraries. Use it! Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Fix for xkb -> keymap change.]
Ran Benita 699a0b84 2012-05-09T14:02:26 Contextualize the atom table Each context gets its own table, i.e. interning a string in one context does not affect any other context. The existing xkb_atom_* functions are turned into wrappers around a new standalone atom_table object. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb -> keymap.]
Ran Benita 4aef083e 2012-05-09T11:29:04 Contextualize XkbFile IDs Currently the IDs are assigned from a static variable inside CreateXKBFile. This can lead to some unpleasantness with threads, so maintain the counter in the context instead. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 64aa5c95 2012-05-09T11:12:30 Make the context available to the parser We will need the context to remove some global state. Also make the Parse* function just return bool while wer'e at it. Signed-off-by: Ran Benita <ran234@gmail.com>
Daniel Stone 38cb6390 2012-05-09T15:15:30 Change all 'xkb' xkb_keymap names to 'keymap' To make it a bit more clear what it actually is. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone b537b552 2012-05-08T17:48:29 Add flags to keymap compilation entrypoints No use as yet, but might as well ... Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita b610b2b9 2012-05-08T14:52:23 Rename XKBcommonint.h to xkb-priv.h and use it Make the files in the src/* directory use their own header or a consilidated private header. This makes the file dependencies clearer. Also drop the pointless "xkb" file name prefix, add split a few declarations to their own files (atom.h and text.h). Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 33273304 2012-05-08T13:57:07 Rename xkbcomp/misc.h to xkbcomp-priv.h and use it The include dependencies were quite convoluted, where you change the order and get a ton of errors. Instead, change one file to act as the internal interface for the xkbcomp files, and make every file use it. Also drop the pointless "xkb" prefix to file names. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 12b3495d 2012-04-11T01:55:50 Remove unused 'which' and 'merge' arguments Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb_desc -> xkb_keymap changes.]
Daniel Stone 1f81c0e1 2012-04-26T16:02:49 Dump include paths when we can't find rules Since the most common failure mode here is a failure to properly set the XKB data path, dump the include path so people at least have a clue where to look. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita 18e6a6a4 2012-04-05T10:47:43 Remove Xfuncproto.h and XKB.h from xkbcommon/xkbcommon.h The kbproto header is already not needed here anymore. Move the _X_EXPORT's to the corresponding function definitions, and use straight extern "C" clauses instead of _XFUNCPROTOBEGIN/END. It also makes more sense to have the EXPORT's in the source files, as it provides some documentation to the reader, whereas in the header it's obvious. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb_keymap changes.]
Ran Benita 467d7bb6 2012-04-05T10:13:24 Implement missing xkb_state_ref and add return value xkb_state_ref was missing. Also modify the _ref functions to return the object instead of being void. This is a useful idiom: struct my_object my_object_new(struct xkb_state *state) { [...] my_object->state = xkb_state_ref(state); [...] } Essentially "taking" a reference, such that you don't forget to increment it and it's one line less (see example in our own code). A case could also be made for _unref to return the object or NULL, but this is quite uncommon. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb_keymap changes.]
Daniel Stone ef88c7ef 2012-04-03T15:14:16 Rename xkb_desc to xkb_keymap struct xkb_desc was just a hangover from the old XkbDescRec, which isn't a very descriptive name. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita bb6ca768 2012-03-27T22:41:22 Make parser and scanner reentrant All global state is removed from the parser and scanner. This makes use of the standard facilities in Bison and Flex for reentrant/pure scanner/lexer and location tracking. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated to current sources.]
Daniel Stone 034ffce6 2012-03-27T17:22:35 Use xkb_contexts in keymap compilation Primarily for the include path, but also for the logging in future. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita 3104a8ef 2012-03-24T00:12:08 Move utility macro from XKBcommonint.h to utils.h And merge all the similar ones into the same name. The u* prefix is chosen over the _Xkb prefix because it has more uses throughout the codebase. But It should now be simple to choose a nice prefix and stay consistent. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: fixed for the case where we have strcasecmp]
Ran Benita 0480f427 2012-03-23T23:28:24 Remove useless stuff from utils Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: fixed conflicts from strcasecmp, added includes to make filecomp build again]
Daniel Stone d039622a 2012-03-22T17:39:12 Rename keymap allocation API Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 3d38da0c 2012-03-14T17:04:36 Fix leak in xkbcomp.c Accidentally regressed this one briefly, oops. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone c8fd3ea4 2012-03-10T13:48:13 Move allocation of xkb_desc into CompileKeymap Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 57b551a4 2012-03-09T18:46:46 Ensure we always have a complete keymap Refuse to compile without keycodes + compat + types + symbols. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone ed5c6c17 2012-03-09T16:26:34 Remove geometry support, again It still parses geometry, but happily throws it away. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 59e03bf5 2012-03-09T16:54:47 Use compile_keymap in xkb_compile_keymap_from_components We already had this exact function sitting right next to us, so use it rather than open-coding. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Ran Benita d94d9b45 2012-03-01T21:03:37 Free IncludePath when no longer needed Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 889a299e 2012-03-02T14:49:36 Free XkbFile's when no longer needed Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 1e6f956e 2012-03-01T21:03:13 Free scanFile when no longer needed Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 19e99bb2 2012-03-01T20:41:34 Free all atoms along with keymap The code to do this is taken from xserver, dix/atom.c. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 3216ecc0 2012-02-24T10:46:41 Don't cache loaded rules files This needlessly occupies memory for the lifetime of the library, and does not make a noticeable difference otherwise. This rules file won't be loaded more than once in most cases anyway, so just load it again when it happens. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a64e9708 2012-03-02T15:56:03 Remove unneeded freeing mechanisms Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita f3e4335f 2012-02-24T16:07:17 Fix all constness warnings These are all trivial/obvious fixes which clear a bunch of warnings. Signed-off-by: Ran Benita <ran234@gmail.com>
Pekka Paalanen c19661b9 2011-12-16T12:52:00 Add xkbc_free_keymap helper Which just calls XkbcFreeKeyboard with the only arguments you'd ever pass it. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com> Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Kristian Høgsberg a84c0879 2010-10-19T21:57:59 Use flex for generating the scanner, add support for parsing from strings Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Kristian Høgsberg 20bfe128 2010-08-29T21:30:10 Use const char * in struct xkb_rule_names
Kristian Høgsberg be2bd661 2010-08-25T14:51:52 Pull in a few #defines from libxkbfile and lower kbproto requirement
Kristian Høgsberg 97fbc348 2010-07-02T12:14:03 Rename XkbRMLVOSet to struct xkb_rule_names
Kristian Høgsberg 3f0034a9 2010-07-02T11:50:01 Rename public entry points to lowercase and underscore
Kristian Høgsberg 9f602686 2010-07-01T14:35:24 Pull in enough structs and defines from XKBstr.h to only need XKB.h We want to move away from sharing implementation structs and let libX11 and libxkbcommon use each their own set of structs.
Kristian Høgsberg 0ece2cdb 2010-06-30T16:56:24 Drop more malloc/free wrappers
Daniel Stone 8693c265 2010-06-22T15:54:52 Add really rudimentary rules caching support Keep the parsed form of the last-used rules file around, and reuse that if we get asked for the same ruleset. If not, bin it and cache the other one. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 7257d4c8 2010-06-21T14:28:34 Use CARD32 instead of Atom, move geom headers in Use CARD32 instead of Atom/KeySym/et al to avoid type size confusion between server and non-server code; relatedly, move the geometry headers in from kbproto, so every non-simple type (i.e. structs containing nothing more than basic types) is now copied into xkbcommon. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Dan Nicholson 53ead9b5 2009-04-11T10:35:44 Use xkbpath API for locating rules Instead of hardcoding the XKB base directory when searching for rules in the xkbcomp code, we can extend the xkbpath API to cover rules and reuse it. That will make it more convenient if it's ever exposed so people can set their XKB search paths in a reasonable way.
Dan Nicholson abbd1419 2009-04-10T12:25:51 Add interface to compile keyboard description from keymap files We need to support generating a keyboard description from a keymap file because there are just some cases where RMLVO or ktcsg is not enough. The map choosing logic has been refactored into its own function and now supports choosing a named or default keymap.
Dan Nicholson f5d37e27 2009-04-08T17:59:15 Constify public API There's no reason the arguments can't be const.
Dan Nicholson babae389 2009-04-08T17:54:55 Change CompileKeymapFromRules to take XkbRMLVOSet Let's use a nice interface now that it's available from XKBrulescommon.h.
Dan Nicholson 6a84a34d 2009-04-08T07:46:25 Remove all non-public API from XKBcommon.h header The noble intention was to expose all the new API and new generic types in the split out kbproto headers through XKBcommon.h. It turns out that would be a massive amount of work in the server. Someday, but first just wedging in XkbCompileKeymap* would be good. Most of the API is in new internal xkb*.h headers. In order to allow the XKBcommon.h header to be used from the server, we can't pull in other headers from kbproto since the server has its own copies. However, types that are different (XkbDescRec, XkbAction) still have Xkbc equivalents here, and I think they should be used in the server.
Dan Nicholson 5889cef8 2009-04-05T20:27:35 Require strdup and remove utils wrapper This kills a couple warnings from using the uStringDup wrapper. If you don't have strdup on your platform, you have bigger issues.
Dan Nicholson 85039a0d 2009-04-04T12:31:55 xkbcomp: Give keymap file empty name if none supplied Ensure that the keymap file topName is not NULL since it gets blindly dereferenced later.
Dan Nicholson 125ce76f 2009-04-04T12:21:05 xkbcomp: Ensure at least keycodes supplied in components It seems that at least a non-empty keycodes component is required to compile a XkbcDescPtr.
Dan Nicholson fdd8a9ec 2009-04-04T12:17:50 xkbcomp: Don't dereference NULL VarDefsPtr
Dan Nicholson 99d2f4a5 2009-04-04T12:16:04 xkbcomp: Refactor keymap file generator
Dan Nicholson 8269cbce 2009-04-04T10:02:39 xkbcomp: Generating components requires rules _and_ layout This came from trial and error, but it seems that you can generate a valid keymap with only rules and layout.
Dan Nicholson fa96602d 2009-04-04T09:51:33 xkbcomp: Fail when converting rules to components returns an error XkbcRF_GetComponents was returning an error but leaving the generated components alone. This ensures that the broken XkbComponentNamesPtr is freed and the error is passed up to the caller.
Dan Nicholson e72fc29f 2009-04-04T09:48:59 xkbcomp: Cleanup error messages
Dan Nicholson 83367a8d 2009-04-04T09:46:20 xkbcomp: Ensure user has supplied a rules name
Dan Nicholson ec86ce1f 2009-04-03T20:34:41 xkbcomp: Declare global debugging vars These will need to be sanitized at some point, but for now let's just get the code running.
Dan Nicholson a8d936bd 2009-03-31T05:36:52 Compile keyboard description from XKB rules, too XkbcCompileKeymapFromRules can be used to generate a XkbDescPtr from XKB rules instead of using components. The previous XkbcCompileKeymap has been renamed to XkbcCompileKeymapFromComponents.
Dan Nicholson 3fc0dcc8 2009-03-29T08:55:18 Generate keyboard description from components Finally, we can generate a XkbcDescPtr from a XkbComponentNamesPtr. This involves turning the components into a parsed XKB file and then passing it into the compiler. This first conversion needs more error handling.