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

menu "Console Utilities"

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

config CONFIG_CLEAR
	bool "clear"
	default n
	help
	  This program clears the terminal screen.

config CONFIG_DEALLOCVT
	bool "deallocvt"
	default n
	help
	  This program deallocates unused virtual consoles.

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

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

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

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

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

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

endmenu
