Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e8ecb9d authored by Bill Nottingham's avatar Bill Nottingham Committed by Linus Torvalds
Browse files

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: default avatarBill 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 430d275a
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -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
+5 −1
Original line number Diff line number Diff line
@@ -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);

/*
+1 −1
Original line number Diff line number Diff line
@@ -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;
Loading