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>
This commit is contained in:
Родитель
430d275a39
Коммит
2e8ecb9db0
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -87,6 +87,7 @@ extern int unbind_con_driver(const struct consw *csw, int first, int last,
|
|||
extern char con_buf[CON_BUF_SIZE];
|
||||
extern struct mutex con_buf_mtx;
|
||||
extern char vt_dont_switch;
|
||||
extern int default_utf8;
|
||||
|
||||
struct vt_spawn_console {
|
||||
spinlock_t lock;
|
||||
|
|
Загрузка…
Ссылка в новой задаче