Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| b0b11c4e | 2012-08-02 00:29:07 | types: don't use canonical/required types Xkb required every keymap to have at least the four following canonical types: ONE_LEVEL, TWO_LEVEL, ALPHABETIC, KEYPAD. This is specified in e.g. the kbproto spec and XkbKeyTypesForCoreSymbols(3) man page. If these types are not specified in the keymap, the code specifically checks for them and adds them to the 4 first places in the types array, such that they exist in every keymap. These are also the types (along with some non-required 4-level ones) that are automatically assigned to keys which do not explicitly declare a type (see FindAutomaticType in symbols.c, this commit doesn't touch these heuristics, whcih are also not very nice but necessary). The xkeyboard-config does not rely on the builtin xkbcomp definitions of these types and does specify them explicitly, in types/basic and types/numpad, which are virtually always included. This commit removes the special behavior: - The code is ugly and makes keytypes.c harder to read. - The code practically never gets run - everyone who uses xkeyboard-config or a keymap based upon it (i.e. everyone) doesn't need it. So it doesn't get tested. - It mixes policy with implementation for not very good reasons, it seems mostly for default compatibility with X11 core. - And of course we don't need to remain compatible with Xkb ABI neither. Instead, if we read a keymap with no types specified at all, we simply assign all keys a default one-level type (like ONE_LEVEL), and issue plenty of warnings to make it clear (with verbosity >= 3). Note that this default can actually be changed from within the keymap, by writing something like type.modifier = Shift type.whatever_field = value in the top level of the xkb_types section. (This functionality is completely unused as well today, BTW, but makes some sense). This change means that if someone writes a keymap from scratch and doesn't add say ALPHABETIC, then something like <AE11> = { [ q Q ]; }; will ignore the second level. But as stated above this should never happen. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 09dac54b | 2012-08-01 21:31:36 | vmod: remove unused fields Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 41d9afc5 | 2012-07-27 15:31:03 | Remove ExprResult Convert the IdentLookup typedef away from ExprResult, which drags along everything else. This should also make all of the conversions explicit. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 38614c88 | 2012-07-24 17:21:29 | expr: drop ExprResult from ResolveMask Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2e4933cd | 2012-07-24 10:39:15 | expr: drop ExprResult from ResolveInteger Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 724f62c8 | 2012-07-25 17:29:08 | Convert defines to enums in xkbcomp.h For statement / expression types. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 89723b7c | 2012-07-24 19:54:14 | utils: add/replace string equality macros It's more tidy and less error prone, since we use strcasecmp == 0 a lot. We replace strcmp == 0 by streq, strcasecmp == 0 by istreq, uStrCasePrefix by istreq_prefix and uDupString by strdup_safe. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 4f843c81 | 2012-07-24 13:24:59 | Drop Xkbc prefix of text functions Not really needed and inconsistent. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 6cb98200 | 2012-07-24 13:15:40 | Use xkb_mod_mask_t and xkb_mask_index_t throughout Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 112cccb1 | 2012-07-23 16:03:34 | Some atom related optimizations We often get a strdup'd string, just to pass it over the atom_intern and then immediately free it. But atom_intern then strdup's it again (if it's not interned already); so instead we can have the interning "steal" the memory instead of allocing a new one and freeing the old one. This is done by a new xkb_atom_steal function. It also turns out, that every time we strdup an atom, we don't actually modify it afterwards. Since we are guaranteed that the atom table will live as long as the context, we can just use xkb_atom_text instead. This removes a some more dynamic allocations. For this change we had to remove the ability to append two strings, e.g. "foo" + "bar" -> "foobar" which is only possible with string literals. This is unused and quite useless for our purposes. xkb_atom_strdup is left unused, as it may still be useful. Running rulescomp in valgrind, Before: ==7907== total heap usage: 173,698 allocs, 173,698 frees, 9,775,973 bytes allocated After: ==6348== total heap usage: 168,403 allocs, 168,403 frees, 9,732,648 bytes allocated Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 544a83e6 | 2012-07-21 15:27:09 | vmod: use new log functions Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 1313af8f | 2012-07-15 01:31:34 | Get rid of xkb_key_names Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 3de9d874 | 2012-07-15 00:26:28 | Get rid of xkb_server_map Same as xkb_client_map which was removed before. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9308a460 | 2012-07-17 10: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> | ||
| 213dcf68 | 2012-06-29 17: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> | ||
| 7b00485a | 2012-05-11 15: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> | ||
| e7bb1e5f | 2012-05-09 15: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.] | ||
| cdd2906d | 2012-05-09 13:50:05 | Make the context available for XkbcAtomText And rename the function to xkb_atom_text. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb -> keymap.] | ||
| 8d680e80 | 2012-05-09 12:01:03 | Make the context available for XkbcAtomGetString In preparation of contextualizing atom handling. Since we touch every function call, we also rename the function to xkb_atom_strdup to match xkb_atom_intern, and be more descriptive. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Updated for xkb -> keymap.] | ||
| c117318f | 2012-05-09 11:47:20 | Make the context available to xkb_intern_atom In preparation of contextualizing the atom table. Since we touch every function call, also rename the function to xkb_atom_intern, to match better with the rest (which will also be renamed). Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Fixed for 'xkb' -> 'keymap'.] | ||
| 38cb6390 | 2012-05-09 15: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> | ||
| 33273304 | 2012-05-08 13: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> | ||
| 62a75dc1 | 2012-04-10 23:08:49 | Remove unused stuff from XKBcommonint.h Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a641a185 | 2012-04-06 03:38:55 | Use stdbool.h 'Cause defining your own True and False is so 1990's. Signed-off-by: Ran Benita <ran234@gmail.com> [daniels: Fixed for xkb_desc -> xkb_keymap changes.] | ||
| ef88c7ef | 2012-04-03 15: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> | ||
| 84ec6b61 | 2012-04-01 16:51:48 | Add a NULL check before before strcmp'ing The names array can have NULL entries for some virtual modifier indexes. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| fb606b06 | 2012-04-01 17:07:56 | Avoid use of partly initialized VModInfo in error path Such as: Compiling path: ./test/data/bad.xkb mapName: ==1300== Conditional jump or move depends on uninitialised value(s) ==1300== at 0x4E46166: HandleVModDef (vmod.c:90) ==1300== by 0x4E3FEC9: HandleKeyTypesFile (keytypes.c:1035) ==1300== by 0x4E3FBE1: HandleIncludeKeyTypes.constprop.11 (keytypes.c:387) ==1300== by 0x4E401DD: HandleKeyTypesFile (keytypes.c:1022) ==1300== by 0x4E3FBE1: HandleIncludeKeyTypes.constprop.11 (keytypes.c:387) ==1300== by 0x4E401DD: HandleKeyTypesFile (keytypes.c:1022) ==1300== by 0x4E4026F: CompileKeyTypes (keytypes.c:1150) ==1300== by 0x4E3DF9B: CompileKeymap (keymap.c:169) ==1300== by 0x4E465E9: compile_keymap (xkbcomp.c:205) ==1300== by 0x4E46BE4: xkb_compile_keymap_from_file (xkbcomp.c:290) ==1300== by 0x400B37: test_file (filecomp.c:47) ==1300== by 0x4008E3: main (filecomp.c:90) ==1300== Uninitialised value was created by a stack allocation ==1300== at 0x4E3FB3F: HandleIncludeKeyTypes.constprop.11 (keytypes.c:366) Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 0480f427 | 2012-03-23 23: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] | ||
| a0e756fd | 2012-03-09 19:09:25 | Introduce xkb_atom_t type Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 731e5c40 | 2012-03-09 18:53:47 | Stringify public name types Ensure that all names under xkb_desc are strings, rather than atoms. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| b28823cc | 2012-03-09 16:04:00 | Remove KcCGST names from the map Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| eb738b13 | 2012-03-02 17:40:19 | Constify global tables Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a3e40917 | 2012-03-01 23:43:51 | Remove return's at the end of void functions Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f278cea1 | 2012-02-29 20:25:11 | Remove all uses of the register keyword Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a0dd0526 | 2012-02-25 11:46:12 | Remove unused includes of "tokens.h" Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 43ed3ff0 | 2012-02-20 17:14:04 | Switch expression resolution priv from char to void Avoids a lot of really lame casts. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 11ea0791 | 2012-02-20 17:07:48 | Invert LookupModMask/LookupVModMask order We never want to solely lookup a virtual modifier without also looking up core modifiers. So, rather than chaining the vmod lookup inside the core modifier lookup, invert the ordering. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 90d86c36 | 2012-02-20 16:54:54 | Remove field reference lookup support None of the lookup functions anyone ever used supported field references, so don't pretend we do in the API. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 91b89852 | 2012-02-20 16:24:02 | Turn ExprResolveInteger into a simple wrapper Move the bulk of ExprResolveInteger into an internal function called ExprResolveIntegerLookup, and introduce ExprResolveInteger as a simple wrapper which doesn't take priv/lookup arguments. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 3151ce36 | 2012-02-20 13:34:36 | Remove priv arguments from ExprResolveModMask What with them now being unused and all. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 1a6c3807 | 2012-02-15 15:58:14 | vmod: Pass xkb_desc explicitly to vmod functions Some error paths don't set info->xkb correctly, so just do like most utility functions and pass the xkb_desc explicitly. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| a63e82be | 2010-12-17 21:14:54 | Rename XkbcInternAtom() to xkb_intern_atom() and export Signed-off-by: Kristian Høgsberg <krh@bitplanet.net> | ||
| 73ca959d | 2010-09-27 16:05:52 | Dead code removal and static markup Signed-off-by: Adam Jackson <ajax@redhat.com> | ||
| 9f602686 | 2010-07-01 14: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. | ||
| e10e16ad | 2010-06-30 17:20:56 | Constify XkbcAtomText() Atoms aren't mutable and this lets us put tbGetBuffer() back in the box. | ||
| 47d3b396 | 2010-06-28 06:50:12 | Drop CARD32 and Opaque types | ||
| 7257d4c8 | 2010-06-21 14: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> | ||
| d20bdd3b | 2010-06-15 15:14:58 | xkbcomp: vmod: Don't get and immediately intern atoms XkbcInternAtom(XkbcAtomGetString(atom)) has to be the most spectacularly broken antipattern I've yet seen. Just compare the atoms directly. Signed-off-by: Daniel Stone <daniel@fooishbar.org> | ||
| 6a84a34d | 2009-04-08 07: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. | ||
| 8b100fc0 | 2009-04-05 15:15:20 | Add action datatypes as defined in the server Some of the XkbAction types are defined differently in the server, so we add those to XKBcommon.h and use them here like XkbcDescPtr. We'll have to deal with the impedance mismatch on the client side later. | ||
| a2e59767 | 2009-04-04 12:50:27 | xkbcomp: Don't say we're exiting when we're not | ||
| 5c910623 | 2009-04-04 09:19:51 | Remove trailing spaces in source files | ||
| a27e56b6 | 2009-03-31 07:21:20 | xkbcomp: Remove duplicated macros | ||
| 2671b777 | 2009-03-28 14:06:26 | Add more *Text functions from xkbfile This should cover all the usage in xkbcomp. The format arguments were dropped except for the special case of XkbModMaskText, which needs to write in XkbCFile format in HandleVModDef. This was just changed to a Bool to avoid the need for the macros in XKBfile.h. The function prefixes have been renamed to be unique from xkbfile. | ||
| 39d7be43 | 2009-03-28 11:45:05 | xkbcomp: Use xkbcommon allocation functions s/XkbAlloc/XkbcAlloc/ so we don't know XKBlib. | ||
| 8544cde5 | 2009-03-28 06:56:26 | xkbcomp: Drop unused Display argument in Atom functions The xkbcommon Atom implementation doesn't take Display into account. | ||
| 4fe322aa | 2009-03-27 20:13:22 | libxkbcomp: s/XPointer/char */ Replace XPointer with its definition since we don't have the privilege of using Xlib.h. Why this is char * and not void *, I'll never know. | ||
| 18337008 | 2009-03-27 20:58:27 | libxkbcomp: Use the internal Atom implementation s/XkbInternAtom/XkbcInternAtom/ and s/XkbAtomGetString/XkbcAtomGetString/ | ||
| 37769b5a | 2009-03-27 20:01:32 | libxkbcomp: s/XkbDescPtr/XkbcDescPtr/ We need to use the keyboard description structure from XKBcommon.h since it doesn't have the Display field. | ||
| 30e01032 | 2009-03-27 19:25:14 | libxkbcomp: Remove usage of client-side headers This will surely break things. Let's see just what we need to replace. | ||
| 0c1bbb05 | 2009-03-27 06:55:32 | Import xkbcomp sources for CompileKeymap A copy of the xkbcomp sources (except the frontend) have been copied in to provide a means to compile a XkbDescPtr. This definitely doesn't build or do the right thing yet. |