diff options
author | se <se@FreeBSD.org> | 2014-08-14 14:22:12 +0000 |
---|---|---|
committer | se <se@FreeBSD.org> | 2014-08-14 14:22:12 +0000 |
commit | ca2ee07b02845b8e98b1def54813ca3dbbc08879 (patch) | |
tree | 87c88bb65dadbe8bc35bd95a9aa8111fb885a2f0 /usr.sbin/kbdmap | |
parent | 47f0aea153c32771536f4c649b522568b8898651 (diff) | |
download | FreeBSD-src-ca2ee07b02845b8e98b1def54813ca3dbbc08879.zip FreeBSD-src-ca2ee07b02845b8e98b1def54813ca3dbbc08879.tar.gz |
Add support for NEWCONS to kbdmap and vidfont.
The path to keymaps and fonts is selected based on the existence and value
of "sysctl kern.vty".
MFC after: 1 week
Diffstat (limited to 'usr.sbin/kbdmap')
-rw-r--r-- | usr.sbin/kbdmap/kbdmap.c | 29 | ||||
-rw-r--r-- | usr.sbin/kbdmap/kbdmap.h | 11 |
2 files changed, 34 insertions, 6 deletions
diff --git a/usr.sbin/kbdmap/kbdmap.c b/usr.sbin/kbdmap/kbdmap.c index 7d5a0d1..bf2aa81 100644 --- a/usr.sbin/kbdmap/kbdmap.c +++ b/usr.sbin/kbdmap/kbdmap.c @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include <sys/types.h> #include <sys/queue.h> +#include <sys/sysctl.h> #include <assert.h> #include <ctype.h> @@ -47,10 +48,10 @@ static const char *lang_default = DEFAULT_LANG; static const char *font; static const char *lang; static const char *program; -static const char *keymapdir = DEFAULT_KEYMAP_DIR; -static const char *fontdir = DEFAULT_FONT_DIR; +static const char *keymapdir = DEFAULT_VT_KEYMAP_DIR; +static const char *fontdir = DEFAULT_VT_FONT_DIR; +static const char *font_default = DEFAULT_VT_FONT; static const char *sysconfig = DEFAULT_SYSCONFIG; -static const char *font_default = DEFAULT_FONT; static const char *font_current; static const char *dir; static const char *menu = ""; @@ -146,6 +147,22 @@ add_keymap(const char *desc, int mark, const char *keym) } /* + * Return 0 if syscons is in use (to select legacy defaults). + */ +static int +check_newcons(void) +{ + size_t len; + char term[3]; + + len = 3; + if (sysctlbyname("kern.vty", &term, &len, NULL, 0) != 0 || + strcmp(term, "vt") != 0) + return 0; + return -1; +} + +/* * Figure out the default language to use. */ static const char * @@ -815,6 +832,12 @@ main(int argc, char **argv) sleep(2); } + if (check_newcons() == 0) { + keymapdir = DEFAULT_SC_KEYMAP_DIR; + fontdir = DEFAULT_SC_FONT_DIR; + font_default = DEFAULT_SC_FONT; + } + SLIST_INIT(&head); lang = get_locale(); diff --git a/usr.sbin/kbdmap/kbdmap.h b/usr.sbin/kbdmap/kbdmap.h index e57fa8c..89d27b1 100644 --- a/usr.sbin/kbdmap/kbdmap.h +++ b/usr.sbin/kbdmap/kbdmap.h @@ -28,7 +28,12 @@ #define DEFAULT_LANG "en" -#define DEFAULT_KEYMAP_DIR "/usr/share/syscons/keymaps" -#define DEFAULT_FONT_DIR "/usr/share/syscons/fonts" #define DEFAULT_SYSCONFIG "/etc/rc.conf" -#define DEFAULT_FONT "cp437-8x16.fnt" + +#define DEFAULT_SC_KEYMAP_DIR "/usr/share/syscons/keymaps" +#define DEFAULT_SC_FONT_DIR "/usr/share/syscons/fonts" +#define DEFAULT_SC_FONT "cp437-8x16.fnt" + +#define DEFAULT_VT_KEYMAP_DIR "/usr/share/vt/keymaps" +#define DEFAULT_VT_FONT_DIR "/usr/share/vt/fonts" +#define DEFAULT_VT_FONT "vgarom-thin-8x16.fnt" |