1 .\" Copyright (c) 1995 Jim Van Zandt <jrv@vanzandt.mv.com> and aeb
2 .\" Sun Feb 26 11:46:23 MET 1995
4 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
5 .\" This is free documentation; you can redistribute it and/or
6 .\" modify it under the terms of the GNU General Public License as
7 .\" published by the Free Software Foundation; either version 2 of
8 .\" the License, or (at your option) any later version.
10 .\" The GNU General Public License's references to "object code"
11 .\" and "executables" are to be interpreted as the output of any
12 .\" document formatting or typesetting system, including
13 .\" intermediate and printed output.
15 .\" This manual is distributed in the hope that it will be useful,
16 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
17 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 .\" GNU General Public License for more details.
20 .\" You should have received a copy of the GNU General Public
21 .\" License along with this manual; if not, see
22 .\" <http://www.gnu.org/licenses/>.
25 .\" Modified, Sun Feb 26 15:04:20 1995, faith@cs.unc.edu
26 .\" Modified, Thu Apr 20 22:08:17 1995, jrv@vanzandt.mv.com
27 .\" Modified, Mon Sep 18 22:32:47 1995, hpa@storm.net (H. Peter Anvin)
28 .\" FIXME The following are not documented:
29 .\" KDFONTOP (since 2.1.111)
30 .\" KDGKBDIACRUC (since 2.6.24)
32 .\" KDSKBDIACRUC (since 2.6.24)
33 .\" KDKBDREP (since 2.1.113)
34 .\" KDMAPDISP (not implemented as at 2.6.27)
35 .\" KDUNMAPDISP (not implemented as at 2.6.27)
36 .\" VT_LOCKSWITCH (since 1.3.47, needs CAP_SYS_TTY_CONFIG)
37 .\" VT_UNLOCKSWITCH (since 1.3.47, needs CAP_SYS_TTY_CONFIG)
38 .\" VT_GETHIFONTMASK (since 2.6.18)
40 .TH CONSOLE_IOCTL 4 2009-02-28 "Linux" "Linux Programmer's Manual"
42 console_ioctl \- ioctls for console terminal and virtual consoles
44 The following Linux-specific
46 requests are supported.
47 Each requires a third argument, assumed here to be
58 are set to the state of the LEDs, as follows:
61 LED_CAP 0x04 caps lock led
62 LEC_NUM 0x02 num lock led
63 LED_SCR 0x01 scroll lock led
68 The LEDs are set to correspond to the lower three bits of
70 However, if a higher order bit is set,
71 the LEDs revert to normal: displaying the state of the
72 keyboard functions of caps lock, num lock, and scroll lock.
74 Before 1.1.54, the LEDs just reflected the state of the corresponding
75 keyboard flags, and KDGETLED/KDSETLED would also change the keyboard
77 Since 1.1.54 the LEDs can be made to display arbitrary
78 information, but by default they display the keyboard flags.
79 The following two ioctls are used to access the keyboard flags.
82 Get keyboard flags CapsLock, NumLock, ScrollLock (not lights).
84 points to a char which is set to the flag state.
85 The low order three bits (mask 0x7) get the current flag state,
86 and the low order bits of the next nibble (mask 0x70) get
87 the default flag state.
91 Set keyboard flags CapsLock, NumLock, ScrollLock (not lights).
93 has the desired flag state.
94 The low order three bits (mask 0x7) have the flag state,
95 and the low order bits of the next nibble (mask 0x70) have
96 the default flag state.
101 This returns the value KB_101, defined as 0x02.
104 Add I/O port as valid.
106 .IR ioperm(arg,1,1) .
109 Delete I/O port as valid.
111 .IR ioperm(arg,1,0) .
114 Enable I/O to video board.
116 .IR "ioperm(0x3b4, 0x3df-0x3b4+1, 1)" .
119 Disable I/O to video board.
121 .IR "ioperm(0x3b4, 0x3df-0x3b4+1, 0)" .
124 Set text/graphics mode.
135 Get text/graphics mode.
143 Generate tone of specified length.
146 specify the period in clock cycles,
147 and the upper 16 bits give the duration in msec.
148 If the duration is zero, the sound is turned off.
149 Control returns immediately.
152 = (125<<16) + 0x637 would specify
153 the beep normally associated with a ctrl-G.
154 (Thus since 0.99pl1; broken in 2.1.49-50.)
157 Start or stop sound generation.
160 specify the period in clock cycles
163 = 1193180/frequency).
166 In either case, control returns immediately.
169 Get the current default color map from kernel.
176 Change the default text-mode color map.
179 48-byte array which contains, in order, the Red, Green, and Blue
180 values for the 16 available screen colors: 0 is off, and 255 is full
182 The default colors are, in order: black, dark red, dark
183 green, brown, dark blue, dark purple, dark cyan, light grey, dark
184 grey, bright red, bright green, yellow, bright blue, bright purple,
185 bright cyan and white.
189 Gets 256-character screen font in expanded form.
191 points to an 8192 byte array.
192 Fails with error code
195 currently loaded font is a 512-character font, or if the console is
199 Gets screen font and associated information.
202 .I "struct consolefontdesc"
207 field should be set to the maximum number of
208 characters that would fit in the buffer pointed to by
215 the respective data for the currently loaded font, and the
217 array contains the font data if the initial value of
219 indicated enough space was available; otherwise the
220 buffer is untouched and
227 Sets 256-character screen font.
228 Load font into the EGA/VGA character
231 points to a 8192 byte map, with 32 bytes per
235 of them are used for an 8x\fIN\fP font
239 This call also invalidates the Unicode mapping.
242 Sets screen font and associated rendering information.
248 struct consolefontdesc {
249 unsigned short charcount; /* characters in font
251 unsigned short charheight; /* scan lines per
253 char *chardata; /* font data in
259 If necessary, the screen will be appropriately resized, and
261 sent to the appropriate processes.
262 This call also invalidates the Unicode mapping.
266 Resets the screen font, size and Unicode mapping to the bootup
269 is unused, but should be set to NULL to
270 ensure compatibility with future versions of Linux.
274 Get screen mapping from kernel.
276 points to an area of size
277 E_TABSZ, which is loaded with the font positions used to display each
279 This call is likely to return useless information if the
280 currently loaded font is more than 256 characters.
283 Get full Unicode screen mapping from kernel.
287 .IR "E_TABSZ*sizeof(unsigned short)" ,
288 which is loaded with the
289 Unicodes each character represent.
290 A special set of Unicodes,
291 starting at U+F000, are used to represent "direct to font" mappings.
295 Loads the "user definable" (fourth) table in the kernel which maps
296 bytes into console screen symbols.
302 Loads the "user definable" (fourth) table in the kernel which maps
303 bytes into Unicodes, which are then translated into screen symbols
304 according to the currently loaded Unicode-to-font map.
305 Special Unicodes starting at U+F000 can be used to map directly to the font
310 Get Unicode-to-font mapping from kernel.
317 unsigned short entry_ct;
318 struct unipair *entries;
325 points to an array of
330 unsigned short unicode;
331 unsigned short fontpos;
339 Put unicode-to-font mapping in kernel.
342 .IR "struct unimapdesc" .
346 Clear table, possibly advise hash algorithm.
353 unsigned short advised_hashsize; /* 0 if no opinion */
354 unsigned short advised_hashstep; /* 0 if no opinion */
355 unsigned short advised_hashlevel; /* 0 if no opinion */
363 Gets current keyboard mode.
379 Sets current keyboard mode.
383 equal to one of the above values.
386 Gets meta key handling mode.
395 K_METABIT 0x03 set high order bit
396 K_ESCPREFIX 0x04 escape prefix
400 Sets meta key handling mode.
404 equal to one of the above values.
407 Gets one entry in key translation table (keycode to action code).
414 unsigned char kb_table;
415 unsigned char kb_index;
416 unsigned short kb_value;
421 with the first two members filled in:
423 selects the key table (0 <=
432 is set to the corresponding action code,
433 or K_HOLE if there is no such key,
439 Sets one entry in translation table.
442 .IR "struct kbentry" .
445 Gets one function key string.
452 unsigned char kb_func;
453 unsigned char kb_string[512];
459 is set to the (null-terminated) string corresponding to
462 function key action code.
465 Sets one function key string entry.
468 .IR "struct kbsentry" .
471 Read kernel accent table.
479 struct kbdiacr kbdiacr[256];
486 is the number of entries in the array, each of which
494 unsigned char result;
500 Read kernel keycode table entry (scan code to keycode).
507 unsigned int scancode;
508 unsigned int keycode;
514 is set to correspond to the given
522 .IR keycode == scancode .)
526 Write kernel keycode table entry.
529 .IR "struct kbkeycode" .
533 The calling process indicates its willingness to accept the signal
535 when it is generated by pressing an appropriate key combination.
542 .IR linux/drivers/char/keyboard.c .)
545 Returns the first available (non-opened) console.
550 number of the vt (1 <=
555 Get mode of active vt.
562 char mode; /* vt mode */
563 char waitv; /* if set, hang on writes if not active */
564 short relsig; /* signal to raise on release req */
565 short acqsig; /* signal to raise on acquisition */
566 short frsig; /* unused (set to 0) */
571 which is set to the mode of the active vt.
573 is set to one of these values:
577 VT_AUTO auto vt switching
578 VT_PROCESS process controls switching
579 VT_ACKACQ acknowledge switch
583 Set mode of active vt.
586 .IR "struct vt_mode" .
589 Get global vt state info.
596 unsigned short v_active; /* active vt */
597 unsigned short v_signal; /* signal to send */
598 unsigned short v_state; /* vt bit mask */
603 For each vt in use, the corresponding bit in the
606 (Kernels 1.0 through 1.1.92.)
624 Deallocate the memory associated with vt
629 Set the kernel's idea of screensize.
636 unsigned short v_rows; /* # rows */
637 unsigned short v_cols; /* # columns */
638 unsigned short v_scrollsize; /* no longer used */
643 Note that this does not change the videomode.
649 Set the kernel's idea of various screen parameters.
656 unsigned short v_rows; /* number of rows */
657 unsigned short v_cols; /* number of columns */
658 unsigned short v_vlin; /* number of pixel rows
660 unsigned short v_clin; /* number of pixel rows
662 unsigned short v_vcol; /* number of pixel columns
664 unsigned short v_ccol; /* number of pixel columns
670 Any parameter may be set to zero, indicating "no change", but if
671 multiple parameters are set, they must be self-consistent.
672 Note that this does not change the videomode.
677 The action of the following ioctls depends on the first byte in the struct
680 referred to here as the
682 These are legal only for the superuser or the owner of the current terminal.
684 .B "TIOCLINUX, subcode=0"
686 Disappeared in 1.1.92. (With kernel 1.1.92 or later, read from
692 .B "TIOCLINUX, subcode=1"
693 Get task information.
694 Disappeared in 1.1.92.
696 .B "TIOCLINUX, subcode=2"
705 short xs, ys, xe, ye;
714 are the starting column and row.
720 (Upper left corner is row=column=1.)
722 is 0 for character-by-character selection,
723 1 for word-by-word selection,
724 or 2 for line-by-line selection.
725 The indicated screen characters are highlighted and saved
726 in the static array sel_buffer in
727 .IR devices/char/console.c .
729 .B "TIOCLINUX, subcode=3"
731 The characters in the selection buffer are
735 .B "TIOCLINUX, subcode=4"
738 .B "TIOCLINUX, subcode=5"
739 Sets contents of a 256-bit look up table defining characters in a "word",
740 for word-by-word selection.
743 .B "TIOCLINUX, subcode=6"
745 points to a char which is set to the value of the kernel
750 .B "TIOCLINUX, subcode=7"
752 points to a char which is set to the value of the kernel
757 .B "TIOCLINUX, subcode=8"
758 Dump screen width and height, cursor position, and all the
759 character-attribute pairs.
760 (Kernels 1.1.67 through 1.1.91 only.
761 With kernel 1.1.92 or later, read from
765 .B "TIOCLINUX, subcode=9"
766 Restore screen width and height, cursor position, and all the
767 character-attribute pairs.
768 (Kernels 1.1.67 through 1.1.91 only.
769 With kernel 1.1.92 or later, write to
773 .B "TIOCLINUX, subcode=10"
774 Handles the Power Saving
775 feature of the new generation of monitors.
776 VESA screen blanking mode is set to
779 screen blanking does:
782 Screen blanking is disabled.
784 The current video adapter
785 register settings are saved, then the controller is programmed to turn off
786 the vertical synchronization pulses.
787 This puts the monitor into "standby" mode.
788 If your monitor has an Off_Mode timer, then
789 it will eventually power down by itself.
791 The current settings are saved, then both the vertical and horizontal
792 synchronization pulses are turned off.
793 This puts the monitor into "off" mode.
794 If your monitor has no Off_Mode timer,
795 or if you want your monitor to power down immediately when the
796 blank_timer times out, then you choose this option.
798 Powering down frequently will damage the monitor.)
802 On success, 0 is returned.
803 On error, \-1 is returned, and
808 may take on these values:
811 The file descriptor is invalid.
814 The file descriptor is not associated with a character special device,
815 or the specified request does not apply to it.
818 The file descriptor or
823 Insufficient permission.
826 Do not regard this man page as documentation of the Linux console ioctls.
827 This is provided for the curious only, as an alternative to reading the
829 Ioctl's are undocumented Linux internals, liable to be changed
831 (And indeed, this page more or less describes the
832 situation as of kernel version 1.1.94;
833 there are many minor and not-so-minor
834 differences with earlier versions.)
836 Very often, ioctls are introduced for communication between the
837 kernel and one particular well-known program (fdisk, hdparm, setserial,
838 tunelp, loadkeys, selection, setfont, etc.), and their behavior will be
839 changed when required by this particular program.
841 Programs using these ioctls will not be portable to other versions
842 of UNIX, will not work on older versions of Linux, and will not work
843 on future versions of Linux.
858 .BR console_codes (4),
871 .IR /usr/include/linux/kd.h ,
872 .I /usr/include/linux/vt.h
874 This page is part of release 3.65 of the Linux
877 A description of the project,
878 and information about reporting bugs,
880 \%http://www.kernel.org/doc/man\-pages/.