From c1655dffbc1ecae540dc5f488385faf8787f1741 Mon Sep 17 00:00:00 2001 From: Raheman Vaiya Date: Sat, 30 Jul 2022 16:38:35 -0400 Subject: [PATCH] aliases: Assign keycodes of valid alias key names by default --- data/keyd.1.gz | Bin 6961 -> 7020 bytes docs/keyd.scdoc | 16 ++++++++++------ src/config.c | 19 +++++++++++++++---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/data/keyd.1.gz b/data/keyd.1.gz index f6652fb2c8ea7044df198a2edc66afca005bb569..fc27dd5a3653839f23fabf5b6ecf2549e1a75b16 100644 GIT binary patch delta 6959 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 diff --git a/docs/keyd.scdoc b/docs/keyd.scdoc index 21006de..2882520 100644 --- a/docs/keyd.scdoc +++ b/docs/keyd.scdoc @@ -279,9 +279,11 @@ E.G ## Aliases -An *alias* may be assigned to a key and used as a valid left hand value. -Multiple keys may be bound to a single alias, but _a given key may only be -assigned to one alias at a time_. For example, the keys 'leftmeta' and +Each key may optionally be assigned to an *alias*. This alias may be used in place +of the key as a valid left hand value. Multiple keys may be bound to the same alias, +but only one alias may be assigned to a key at a given time. + +For example, the keys 'leftmeta' and 'rightmeta' are bound to the alias *meta* by default. Thus the binding 'meta = a' is equivalent to the bindings 'leftmeta = a' and 'rightmeta = a'. @@ -293,9 +295,11 @@ the form: where __ must be a valid key name. Note that may itself be a valid key name, in which case all references -to the key within the config file will be replaced with the new key. When used -judiciously, aliases can be used in conjunction with the include directive to -share bindings between keyboards with different physical layouts. +to the key within the config file will be replaced with the new key. +Additionally, if the assigned alias is a valid key name, the corresponding +keycode will be assigned to the key by default. This makes it possible to +redefine keys before any bindings are applied and is particularly useful in +conjunction with the include mechanism to account for variations in hardware. For example: diff --git a/src/config.c b/src/config.c index 7314f0a..22a186e 100644 --- a/src/config.c +++ b/src/config.c @@ -336,21 +336,32 @@ static void parse_aliases(const char *path, struct config *config, struct ini_se for (i = 0; i < section->nr_entries; i++) { uint8_t code; struct ini_entry *ent = §ion->entries[i]; + const char *name = ent->val; if ((code = lookup_keycode(ent->key))) { - ssize_t len = strlen(ent->val); + ssize_t len = strlen(name); if (len > MAX_ALIAS_LEN) { fprintf(stderr, "\tERROR: %s exceeds the maximum alias length (%d)\n", - ent->val, MAX_ALIAS_LEN); + name, MAX_ALIAS_LEN); } else { - strcpy(config->aliases[code], ent->val); + uint8_t alias_code; + + if ((alias_code = lookup_keycode(name))) { + struct descriptor *d = &config->layers[0].keymap[code]; + + d->op = OP_KEYSEQUENCE; + d->args[0].code = alias_code; + d->args[1].mods = 0; + } + + strcpy(config->aliases[code], name); } } else { fprintf(stderr, "\tERROR %s:%zd: Failed to define alias %s, %s is not a valid keycode\n", - path, ent->lnum, ent->key, ent->val); + path, ent->lnum, ent->key, name); } } }