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 Original line 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
	  If unsure, say Y, or else you won't be able to do much with your new
	  shiny Linux system :-)
	  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
config VT_CONSOLE
	bool "Support for console on virtual terminal" if EMBEDDED
	bool "Support for console on virtual terminal" if EMBEDDED
	depends on VT
	depends on VT
+1 −1
Original line number Original line Diff line number Diff line
@@ -1381,7 +1381,7 @@ int __init kbd_init(void)
		kbd_table[i].lockstate = KBD_DEFLOCK;
		kbd_table[i].lockstate = KBD_DEFLOCK;
		kbd_table[i].slockstate = 0;
		kbd_table[i].slockstate = 0;
		kbd_table[i].modeflags = KBD_DEFMODE;
		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);
	error = input_register_handler(&kbd_handler);
+2 −2
Original line number Original line 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];
	struct kbd_struct *kbd = &kbd_table[fg_console];


	if (kbd)
	if (kbd)
		kbd->kbdmode = VC_XLATE;
		kbd->kbdmode = default_utf8 ? VC_UNICODE : VC_XLATE;
}
}
static struct sysrq_key_op sysrq_unraw_op = {
static struct sysrq_key_op sysrq_unraw_op = {
	.handler	= sysrq_handle_unraw,
	.handler	= sysrq_handle_unraw,
	.help_msg	= "unRaw",
	.help_msg	= "unRaw",
	.action_msg	= "Keyboard mode set to XLATE",
	.action_msg	= "Keyboard mode set to system default",
	.enable_mask	= SYSRQ_ENABLE_KEYBOARD,
	.enable_mask	= SYSRQ_ENABLE_KEYBOARD,
};
};
#else
#else
+5 −1
Original line number Original line 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 void set_palette(struct vc_data *vc);


static int printable;		/* Is console ready for printing? */
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);
module_param(default_utf8, int, S_IRUGO | S_IWUSR);


/*
/*
+1 −1
Original line number Original line Diff line number Diff line
@@ -1125,7 +1125,7 @@ int vt_waitactive(int vt)
void reset_vc(struct vc_data *vc)
void reset_vc(struct vc_data *vc)
{
{
	vc->vc_mode = KD_TEXT;
	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.mode = VT_AUTO;
	vc->vt_mode.waitv = 0;
	vc->vt_mode.waitv = 0;
	vc->vt_mode.relsig = 0;
	vc->vt_mode.relsig = 0;
Loading