At least Mandriva offers configuring characters to toggle keyboard layout independently from main keymap. This functions much the same as XkbOptions for X11 and actually is configured together. The patch adds support for additional keymap, KEYMAP_TOGGLE, to /etc/vconsole.conf, that is intended to be used for the same purpose.
Signed-off-by: Andrey Borzenkov <[email protected]> --- src/vconsole-setup.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/vconsole-setup.c b/src/vconsole-setup.c index af7f37d..91e7c89 100644 --- a/src/vconsole-setup.c +++ b/src/vconsole-setup.c @@ -86,8 +86,8 @@ static int set_utf8(int fd, bool utf8) { return r; } -static int load_keymap(const char *vc, const char *map, bool utf8, pid_t *_pid) { - const char *args[7]; +static int load_keymap(const char *vc, const char *map, const char *map_toggle, bool utf8, pid_t *_pid) { + const char *args[8]; int i = 0; pid_t pid; @@ -98,6 +98,8 @@ static int load_keymap(const char *vc, const char *map, bool utf8, pid_t *_pid) if (utf8) args[i++] = "-u"; args[i++] = map; + if (map_toggle) + args[i++] = map_toggle; args[i++] = NULL; if ((pid = fork()) < 0) { @@ -146,6 +148,7 @@ static int load_font(const char *vc, const char *font, const char *map, const ch int main(int argc, char **argv) { const char *vc; char *vc_keymap = NULL; + char *vc_keymap_toggle = NULL; char *vc_font = NULL; char *vc_font_map = NULL; char *vc_font_unimap = NULL; @@ -184,6 +187,7 @@ int main(int argc, char **argv) { "KEYTABLE", &vc_keymap, #endif "vconsole.keymap", &vc_keymap, + "vconsole.keymap.toggle", &vc_keymap_toggle, "vconsole.font", &vc_font, "vconsole.font.map", &vc_font_map, "vconsole.font.unimap", &vc_font_unimap, @@ -198,6 +202,7 @@ int main(int argc, char **argv) { if (r <= 0 && (r = parse_env_file("/etc/vconsole.conf", NEWLINE, "KEYMAP", &vc_keymap, + "KEYMAP_TOGGLE", &vc_keymap_toggle, "FONT", &vc_font, "FONT_MAP", &vc_font_map, "FONT_UNIMAP", &vc_font_unimap, @@ -332,7 +337,7 @@ int main(int argc, char **argv) { set_utf8(fd, utf8); - if (load_keymap(vc, vc_keymap, utf8, &keymap_pid) >= 0 && + if (load_keymap(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid) >= 0 && load_font(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0) r = EXIT_SUCCESS; -- tg: (8dc43d3..) upstream/kbd-toggle (depends on: upstream/kbd-utf8) _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
