summaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorBill Nottingham <notting@redhat.com>2007-10-17 08:29:38 +0200
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-17 17:42:56 +0200
commit2e8ecb9db0bcc19e1cc8bb51e9252fe6a86a9863 (patch)
treec3d77e23a5aad820968601516392f8f440691f7a /drivers/char
parentavoid negative (and full-width) shifts in radix-tree.c (diff)
downloadlinux-2e8ecb9db0bcc19e1cc8bb51e9252fe6a86a9863.tar.xz
linux-2e8ecb9db0bcc19e1cc8bb51e9252fe6a86a9863.zip
add CONFIG_VT_UNICODE
As of now, the kernel defaults to non-unicode and XLATE for the keyboard. We've been changing this in Fedora, but that requires patching the defaults in the kernel. The attached introduces CONFIG_VT_UNICODE, which sets the console in unicode mode by default on boot, including both the virtual terminal and the keyboard driver. Signed-off-by: Bill Nottingham <notting@redhat.com> Cc: Samuel Thibault <samuel.thibault@ens-lyon.org> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Jiri Kosina <jkosina@suse.cz> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/Kconfig17
-rw-r--r--drivers/char/keyboard.c2
-rw-r--r--drivers/char/sysrq.c4
-rw-r--r--drivers/char/vt.c6
-rw-r--r--drivers/char/vt_ioctl.c2
5 files changed, 26 insertions, 5 deletions
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index f6f8c03047fa..1232ace097e1 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -36,6 +36,23 @@ config VT
If unsure, say Y, or else you won't be able to do much with your new
shiny Linux system :-)
+config VT_UNICODE
+ bool "Virtual console is Unicode by default"
+ depends on VT
+ default n
+ ---help---
+ If you say Y here, the virtual terminal will be in UTF-8 by default,
+ and the keyboard will run in unicode mode.
+
+ If you say N here, the virtual terminal will not be in UTF-8 by
+ default, and the keyboard will run in XLATE mode.
+
+ This can also be changed by passing 'default_utf8=<0|1>' on the
+ kernel command line.
+
+ Historically, the kernel has defaulted to non-UTF8 and XLATE mode.
+ If unsure, say N here.
+
config VT_CONSOLE
bool "Support for console on virtual terminal" if EMBEDDED
depends on VT
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 5ae2a3250c50..212276affa1f 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -1381,7 +1381,7 @@ int __init kbd_init(void)
kbd_table[i].lockstate = KBD_DEFLOCK;
kbd_table[i].slockstate = 0;
kbd_table[i].modeflags = KBD_DEFMODE;
- kbd_table[i].kbdmode = VC_XLATE;
+ kbd_table[i].kbdmode = default_utf8 ? VC_UNICODE : VC_XLATE;
}
error = input_register_handler(&kbd_handler);
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index 179fa36ce485..78d14935f2b8 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -108,12 +108,12 @@ static void sysrq_handle_unraw(int key, struct tty_struct *tty)
struct kbd_struct *kbd = &kbd_table[fg_console];
if (kbd)
- kbd->kbdmode = VC_XLATE;
+ kbd->kbdmode = default_utf8 ? VC_UNICODE : VC_XLATE;
}
static struct sysrq_key_op sysrq_unraw_op = {
.handler = sysrq_handle_unraw,
.help_msg = "unRaw",
- .action_msg = "Keyboard mode set to XLATE",
+ .action_msg = "Keyboard mode set to system default",
.enable_mask = SYSRQ_ENABLE_KEYBOARD,
};
#else
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index 0d56f8fc105c..645ad9808982 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -158,7 +158,11 @@ static void blank_screen_t(unsigned long dummy);
static void set_palette(struct vc_data *vc);
static int printable; /* Is console ready for printing? */
-static int default_utf8;
+#ifdef CONFIG_VT_UNICODE
+int default_utf8 = 1;
+#else
+int default_utf8;
+#endif
module_param(default_utf8, int, S_IRUGO | S_IWUSR);
/*
diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
index 6c7384afff13..e6f89e8b9258 100644
--- a/drivers/char/vt_ioctl.c
+++ b/drivers/char/vt_ioctl.c
@@ -1125,7 +1125,7 @@ int vt_waitactive(int vt)
void reset_vc(struct vc_data *vc)
{
vc->vc_mode = KD_TEXT;
- kbd_table[vc->vc_num].kbdmode = VC_XLATE;
+ kbd_table[vc->vc_num].kbdmode = default_utf8 ? VC_UNICODE : VC_XLATE;
vc->vt_mode.mode = VT_AUTO;
vc->vt_mode.waitv = 0;
vc->vt_mode.relsig = 0;