diff --git a/data/keyd-application-mapper.1.gz b/data/keyd-application-mapper.1.gz index a088a92..30c69d3 100644 Binary files a/data/keyd-application-mapper.1.gz and b/data/keyd-application-mapper.1.gz differ diff --git a/data/keyd.1.gz b/data/keyd.1.gz index a5a43f0..4a67f0c 100644 Binary files a/data/keyd.1.gz and b/data/keyd.1.gz differ diff --git a/docs/keyd.scdoc b/docs/keyd.scdoc index 9fe1440..56e09da 100644 --- a/docs/keyd.scdoc +++ b/docs/keyd.scdoc @@ -337,8 +337,8 @@ and not A layout is a special kind of layer intended for modifying alpha keys. Unlike layers, layouts cannot have any associated modifiers, and only one layout may -be active at a given time. The current layout can be set using the _setlayout_ -action. +be active at a given time. The default layout is called 'main', and can be +changed using the _setlayout()_ action. For convenience, keyd ships with a number of common letter layouts in /usr/share/keyd/layouts. Before including these, it is instructive to inspect them. diff --git a/src/config.c b/src/config.c index 44a67d3..5b65566 100644 --- a/src/config.c +++ b/src/config.c @@ -674,7 +674,9 @@ static int parse_descriptor(char *s, break; case ARG_LAYOUT: arg->idx = config_get_layer_index(config, argstr); - if (arg->idx == -1 || config->layers[arg->idx].type != LT_LAYOUT) { + if (arg->idx == -1 || + (arg->idx != 0 && //Treat main as a valid layout + config->layers[arg->idx].type != LT_LAYOUT)) { err("%s is not a valid layout", argstr); return -1; } diff --git a/src/keyboard.c b/src/keyboard.c index 9a2a576..37536b1 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -441,8 +441,11 @@ static void setlayout(struct keyboard *kbd, uint8_t idx) kbd->layer_state[i].active = 0; } - kbd->layer_state[idx].activation_time = 1; - kbd->layer_state[idx].active = 1; + // Setting the layout to main is equivalent to clearing all occluding layouts. + if (idx != 0) { + kbd->layer_state[idx].activation_time = 1; + kbd->layer_state[idx].active = 1; + } kbd->output.on_layer_change(kbd, &kbd->config.layers[idx], 1); }