#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Console Utilities"

INSERT

config CHVT
	bool "chvt"
	default y
	help
	  This program is used to change to another terminal.
	  Example: chvt 4 (change to terminal /dev/tty4)

config FGCONSOLE
	bool "fgconsole"
	default y
	help
	  This program prints active (foreground) console number.

config CLEAR
	bool "clear"
	default y
	help
	  This program clears the terminal screen.

config DEALLOCVT
	bool "deallocvt"
	default y
	help
	  This program deallocates unused virtual consoles.

config DUMPKMAP
	bool "dumpkmap"
	default y
	help
	  This program dumps the kernel's keyboard translation table to
	  stdout, in binary format. You can then use loadkmap to load it.

config KBD_MODE
	bool "kbd_mode"
	default y
	help
	  This program reports and sets keyboard mode.

config LOADFONT
	bool "loadfont"
	default y
	help
	  This program loads a console font from standard input.

config LOADKMAP
	bool "loadkmap"
	default y
	help
	  This program loads a keyboard translation table from
	  standard input.

config OPENVT
	bool "openvt"
	default y
	help
	  This program is used to start a command on an unused
	  virtual terminal.

config RESET
	bool "reset"
	default y
	help
	  This program is used to reset the terminal screen, if it
	  gets messed up.

config RESIZE
	bool "resize"
	default y
	help
	  This program is used to (re)set the width and height of your current
	  terminal.

config FEATURE_RESIZE_PRINT
	bool "Print environment variables"
	default y
	depends on RESIZE
	help
	  Prints the newly set size (number of columns and rows) of
	  the terminal.
	  E.g.:
	  COLUMNS=80;LINES=44;export COLUMNS LINES;

config SETCONSOLE
	bool "setconsole"
	default y
	help
	  This program redirects the system console to another device,
	  like the current tty while logged in via telnet.

config FEATURE_SETCONSOLE_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on SETCONSOLE && LONG_OPTS
	help
	  Support long options for the setconsole applet.

config SETFONT
	bool "setfont"
	default y
	help
	  Allows to load console screen map. Useful for i18n.

config FEATURE_SETFONT_TEXTUAL_MAP
	bool "Support reading textual screen maps"
	default y
	depends on SETFONT
	help
	  Support reading textual screen maps.

config DEFAULT_SETFONT_DIR
	string "Default directory for console-tools files"
	default ""
	depends on SETFONT
	help
	  Directory to use if setfont's params are simple filenames
	  (not /path/to/file or ./file). Default is "" (no default directory).

config SETKEYCODES
	bool "setkeycodes"
	default y
	help
	  This program loads entries into the kernel's scancode-to-keycode
	  map, allowing unusual keyboards to generate usable keycodes.

config SETLOGCONS
	bool "setlogcons"
	default y
	help
	  This program redirects the output console of kernel messages.

config SHOWKEY
	bool "showkey"
	default y
	help
	  Shows keys pressed.

comment "Common options for loadfont and setfont"
	depends on LOADFONT || SETFONT

config FEATURE_LOADFONT_PSF2
	bool "Support for PSF2 console fonts"
	default y
	depends on LOADFONT || SETFONT
	help
	  Support PSF2 console fonts.

config FEATURE_LOADFONT_RAW
	bool "Support for old (raw) console fonts"
	default y
	depends on LOADFONT || SETFONT
	help
	  Support old (raw) console fonts.

endmenu
