summaryrefslogtreecommitdiffstats
path: root/usr.sbin/kbdmap
diff options
context:
space:
mode:
authorse <se@FreeBSD.org>2014-08-14 14:22:12 +0000
committerse <se@FreeBSD.org>2014-08-14 14:22:12 +0000
commitca2ee07b02845b8e98b1def54813ca3dbbc08879 (patch)
tree87c88bb65dadbe8bc35bd95a9aa8111fb885a2f0 /usr.sbin/kbdmap
parent47f0aea153c32771536f4c649b522568b8898651 (diff)
downloadFreeBSD-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.c29
-rw-r--r--usr.sbin/kbdmap/kbdmap.h11
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"
OpenPOWER on IntegriCloud