X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=man4%2Fconsole_ioctl.4;h=5dfc68d8d5a3bce4a979950be03add70ad17de89;hb=962708055e06376996bc4d148cb7773955f81cc9;hp=36df1bdd36f53a7cb87037e635ee11ef03108c8b;hpb=3ad4ddcd0bc934712d0dd71ce1518e561ca83623;p=thirdparty%2Fman-pages.git diff --git a/man4/console_ioctl.4 b/man4/console_ioctl.4 index 36df1bdd36..5dfc68d8d5 100644 --- a/man4/console_ioctl.4 +++ b/man4/console_ioctl.4 @@ -1,612 +1,2 @@ -.\" Copyright (c) 1995 Jim Van Zandt and aeb -.\" Sun Feb 26 11:46:23 MET 1995 -.\" -.\" This is free documentation; you can redistribute it and/or -.\" modify it under the terms of the GNU General Public License as -.\" published by the Free Software Foundation; either version 2 of -.\" the License, or (at your option) any later version. -.\" -.\" The GNU General Public License's references to "object code" -.\" and "executables" are to be interpreted as the output of any -.\" document formatting or typesetting system, including -.\" intermediate and printed output. -.\" -.\" This manual is distributed in the hope that it will be useful, -.\" but WITHOUT ANY WARRANTY; without even the implied warranty of -.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.\" GNU General Public License for more details. -.\" -.\" You should have received a copy of the GNU General Public -.\" License along with this manual; if not, write to the Free -.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, -.\" USA. -.\" -.\" Modified, Sun Feb 26 15:04:20 1995, faith@cs.unc.edu -.\" Modified, Thu Apr 20 22:08:17 1995, jrv@vanzandt.mv.com -.\" Modified, Mon Sep 18 22:32:47 1995, hpa@storm.net (H. Peter Anvin) -.\" " -.TH CONSOLE_IOCTL 4 1995-09-18 "Linux" "Linux Programmer's Manual" -.SH NAME -console ioctl \- ioctl's for console terminal and virtual consoles -.SH DESCRIPTION -The following Linux-specific -.BR ioctl (2) -requests are supported. -Each requires a third argument, assumed here to be \fIargp\fP. -.IP \fBKDGETLED\fP -Get state of LEDs. -\fIargp\fP points to a long int. -The lower three bits -of \fI*argp\fP are set to the state of the LEDs, as follows: - - LED_CAP 0x04 caps lock led - LEC_NUM 0x02 num lock led - LED_SCR 0x01 scroll lock led -.IP \fBKDSETLED\fP -Set the LEDs. -The LEDs are set to correspond to the lower three bits of -\fIargp\fP. -However, if a higher order bit is set, -the LEDs revert to normal: displaying the state of the -keyboard functions of caps lock, num lock, and scroll lock. -.LP -Before 1.1.54, the LEDs just reflected the state of the corresponding -keyboard flags, and KDGETLED/KDSETLED would also change the keyboard -flags. -Since 1.1.54 the leds can be made to display arbitrary -information, but by default they display the keyboard flags. -The following two ioctl's are used to access the keyboard flags. -.IP \fBKDGKBLED\fP -Get keyboard flags CapsLock, NumLock, ScrollLock (not lights). -\fIargp\fP points to a char which is set to the flag state. -The low order three bits (mask 0x7) get the current flag state, -and the low order bits of the next nibble (mask 0x70) get -the default flag state. (Since 1.1.54.) -.IP \fBKDSKBLED\fP -Set keyboard flags CapsLock, NumLock, ScrollLock (not lights). -\fIargp\fP has the desired flag state. -The low order three bits (mask 0x7) have the flag state, -and the low order bits of the next nibble (mask 0x70) have -the default flag state. (Since 1.1.54.) -.IP \fBKDGKBTYPE\fP -Get keyboard type. -This returns the value KB_101, defined as 0x02. -.IP \fBKDADDIO\fP -Add I/O port as valid. -Equivalent to ioperm(arg,1,1). -.IP \fBKDDELIO\fP -Delete I/O port as valid. -Equivalent to ioperm(arg,1,0). -.IP \fBKDENABIO\fP -Enable I/O to video board. -Equivalent to ioperm(0x3b4, 0x3df-0x3b4+1, 1). -.IP \fBKDDISABIO\fP -Disable I/O to video board. -Equivalent to ioperm(0x3b4, 0x3df-0x3b4+1, 0). -.IP \fBKDSETMODE\fP -Set text/graphics mode. -\fIargp\fP is one of these: - - KD_TEXT 0x00 - KD_GRAPHICS 0x01 -.IP \fBKDGETMODE\fP -Get text/graphics mode. -\fIargp\fP points to a long which is set to one -of the above values. -.IP \fBKDMKTONE\fP -Generate tone of specified length. -The lower 16 bits of \fIargp\fP specify the period in clock cycles, -and the upper 16 bits give the duration in msec. -If the duration is zero, the sound is turned off. -Control returns immediately. -For example, \fIargp\fP = (125<<16) + 0x637 would specify -the beep normally associated with a ctrl-G. -(Thus since 0.99pl1; broken in 2.1.49-50.) -.IP \fBKIOCSOUND\fP -Start or stop sound generation. -The lower 16 bits of -\fIargp\fP specify the period in clock cycles -(that is, \fIargp\fP = 1193180/frequency). -\fIargp\fP = 0 turns sound off. -In either case, control returns immediately. -.IP \fBGIO_CMAP\fP -Get the current default color map from kernel. -\fIargp\fP points to -a 48-byte array. -(Since 1.3.3.) -.IP \fBPIO_CMAP\fP -Change the default text-mode color map. -\fIargp\fP points to a -48-byte array which contains, in order, the Red, Green, and Blue -values for the 16 available screen colors: 0 is off, and 255 is full -intensity. -The default colors are, in order: black, dark red, dark -green, brown, dark blue, dark purple, dark cyan, light grey, dark -grey, bright red, bright green, yellow, bright blue, bright purple, -bright cyan and white. (Since 1.3.3.) -.IP \fBGIO_FONT\fP -Gets 256-character screen font in expanded form. -\fIargp\fP points to an 8192 byte array. -Fails with error code \fBEINVAL\fP if the -currently loaded font is a 512-character font, or if the console is -not in text mode. -.IP \fBGIO_FONTX\fP -Gets screen font and associated information. -\fIargp\fP points to a -\fIstruct consolefontdesc\fP (see \fBPIO_FONTX\fP). -On call, the -\fIcharcount\fP field should be set to the maximum number of -characters that would fit in the buffer pointed to by \fIchardata\fP. -On return, the \fIcharcount\fP and \fIcharheight\fP are filled with -the respective data for the currently loaded font, and the -\fIchardata\fP array contains the font data if the initial value of -\fIcharcount\fP indicated enough space was available; otherwise the -buffer is untouched and \fIerrno\fP is set to \fBENOMEM\fP. (Since -1.3.1.) -.IP \fBPIO_FONT\fP -Sets 256-character screen font. -Load font into the EGA/VGA character -generator. -\fIargp\fP points to a 8192 byte map, with 32 bytes per -character. -Only first \fIN\fP of them are used for an 8x\fIN\fP font -(0 < \fIN\fP <= 32). -This call also invalidates the Unicode mapping. -.IP \fBPIO_FONTX\fP -Sets screen font and associated rendering information. -\fIargp\fP -points to a - -.in +4n -.nf -struct consolefontdesc { - u_short charcount; /* characters in font (256 or 512) */ - u_short charheight; /* scan lines per character (1-32) */ - char *chardata; /* font data in expanded form */ -}; -.fi -.in - -If necessary, the screen will be appropriately resized, and -\fBSIGWINCH\fP sent to the appropriate processes. -This call also invalidates the Unicode mapping. -(Since 1.3.1.) -.IP \fBPIO_FONTRESET\fP -Resets the screen font, size and Unicode mapping to the bootup -defaults. -\fIargp\fP is unused, but should be set to NULL to -ensure compatibility with future versions of Linux. (Since 1.3.28.) -.IP \fBGIO_SCRNMAP\fP -Get screen mapping from kernel. -\fIargp\fP points to an area of size -E_TABSZ, which is loaded with the font positions used to display each -character. -This call is likely to return useless information if the -currently loaded font is more than 256 characters. -.IP \fBGIO_UNISCRNMAP\fP -Get full Unicode screen mapping from kernel. -\fIargp\fP points to an -area of size E_TABSZ*sizeof(unsigned short), which is loaded with the -Unicodes each character represent. -A special set of Unicodes, -starting at U+F000, are used to represent "direct to font" mappings. -(Since 1.3.1.) -.IP \fBPIO_SCRNMAP\fP -Loads the "user definable" (fourth) table in the kernel which maps -bytes into console screen symbols. -\fIargp\fP points to an area of -size E_TABSZ. -.IP \fBPIO_UNISCRNMAP\fP -Loads the "user definable" (fourth) table in the kernel which maps -bytes into Unicodes, which are then translated into screen symbols -according to the currently loaded Unicode-to-font map. -Special Unicodes starting at U+F000 can be used to map directly to the font -symbols. -(Since 1.3.1.) -.IP \fBGIO_UNIMAP\fP -Get Unicode-to-font mapping from kernel. -\fIargp\fP points to a - -.in +4n -.nf -struct unimapdesc { - u_short entry_ct; - struct unipair *entries; -}; -.fi -.in - -where \fIentries\fP points to an array of - -.in +4n -.nf -struct unipair { - u_short unicode; - u_short fontpos; -}; -.fi -.in - -(Since 1.1.92.) -.IP \fBPIO_UNIMAP\fP -Put unicode-to-font mapping in kernel. - \fIargp\fP points to a -\fIstruct unimapdesc\fP. (Since 1.1.92) -.IP \fBPIO_UNIMAPCLR\fP -Clear table, possibly advise hash algorithm. -\fIargp\fP points to a - -.in +4n -.nf -struct unimapinit { - u_short advised_hashsize; /* 0 if no opinion */ - u_short advised_hashstep; /* 0 if no opinion */ - u_short advised_hashlevel; /* 0 if no opinion */ -}; -.fi -.in - -(Since 1.1.92.) -.IP \fBKDGKBMODE\fP -Gets current keyboard mode. -\fIargp\fP points to a long which is set to one -of these: - - K_RAW 0x00 - K_XLATE 0x01 - K_MEDIUMRAW 0x02 - K_UNICODE 0x03 -.IP \fBKDSKBMODE\fP -Sets current keyboard mode. -\fIargp\fP is a long equal to one of the above values. -.IP \fBKDGKBMETA\fP -Gets meta key handling mode. -\fIargp\fP points to a long which is -set to one of these: - - K_METABIT 0x03 set high order bit - K_ESCPREFIX 0x04 escape prefix -.IP \fBKDSKBMETA\fP -Sets meta key handling mode. -\fIargp\fP is a long equal to one of the above values. -.IP \fBKDGKBENT\fP -Gets one entry in key translation table (keycode to action code). -\fIargp\fP points to a - -.in +4n -.nf -struct kbentry { - u_char kb_table; - u_char kb_index; - u_short kb_value; -}; -.fi -.in - -with the first two members filled in: -\fIkb_table\fP selects the key table (0 <= \fIkb_table\fP < MAX_NR_KEYMAPS), -and \fIkb_index\fP is the keycode (0 <= \fIkb_index\fP < NR_KEYS). -\fIkb_value\fP is set to the corresponding action code, -or K_HOLE if there is no such key, -or K_NOSUCHMAP if \fIkb_table\fP is invalid. -.IP \fBKDSKBENT\fP -Sets one entry in translation table. -\fIargp\fP points to -a \fIstruct kbentry\fP. -.IP \fBKDGKBSENT\fP -Gets one function key string. -\fIargp\fP points to a - -.in +4n -.nf -struct kbsentry { - u_char kb_func; - u_char kb_string[512]; -}; -.fi -.in - -\fIkb_string\fP is set to the (NULL terminated) string corresponding to -the \fIkb_func\fPth function key action code. -.IP \fBKDSKBSENT\fP -Sets one function key string entry. -\fIargp\fP points to -a \fIstruct kbsentry\fP. -.IP \fBKDGKBDIACR\fP -Read kernel accent table. -\fIargp\fP points to a - -.in +4n -.nf -struct kbdiacrs { - unsigned int kb_cnt; - struct kbdiacr kbdiacr[256]; -}; -.fi -.in - -where \fIkb_cnt\fP is the number of entries in the array, each of which -is a - -.in +4n -.nf -struct kbdiacr { - u_char diacr; - u_char base; - u_char result; -}; -.in -.IP \fBKDGETKEYCODE\fP -Read kernel keycode table entry (scan code to keycode). -\fIargp\fP points to a - -.in +4n -.nf -struct kbkeycode { - unsigned int scancode; - unsigned int keycode; -}; -.fi -.in - -\fIkeycode\fP is set to correspond to the given \fIscancode\fP. -(89 <= \fIscancode\fP <= 255 only. -For 1 <= \fIscancode\fP <= 88, \fIkeycode\fP==\fIscancode\fP.) -(Since 1.1.63.) -.IP \fBKDSETKEYCODE\fP -Write kernel keycode table entry. -\fIargp\fP points to -a \fIstruct kbkeycode\fP. -(Since 1.1.63.) -.IP \fBKDSIGACCEPT\fP -The calling process indicates its willingness to accept the signal -\fIargp\fP when it is generated by pressing an appropriate key combination. -(1 <= \fIargp\fP <= NSIG). -(See spawn_console() in linux/drivers/char/keyboard.c.) -.IP \fBVT_OPENQRY\fP -Returns the first available (non-opened) console. -\fIargp\fP points to an int which is set to the -number of the vt (1 <= \fI*argp\fP <= MAX_NR_CONSOLES). -.IP \fBVT_GETMODE\fP -Get mode of active vt. -\fIargp\fP points to a - -.in +4n -.nf -struct vt_mode { - char mode; /* vt mode */ - char waitv; /* if set, hang on writes if not active */ - short relsig; /* signal to raise on release req */ - short acqsig; /* signal to raise on acquisition */ - short frsig; /* unused (set to 0) */ -}; -.fi -.in - -which is set to the mode of the active vt. -\fImode\fP is set to one of these values: - - VT_AUTO auto vt switching - VT_PROCESS process controls switching - VT_ACKACQ acknowledge switch -.IP \fBVT_SETMODE\fP -Set mode of active vt. -\fIargp\fP points to -a \fIstruct vt_mode\fP. -.IP \fBVT_GETSTATE\fP -Get global vt state info. -\fIargp\fP points to a - -.in +4n -.nf -struct vt_stat { - ushort v_active; /* active vt */ - ushort v_signal; /* signal to send */ - ushort v_state; /* vt bit mask */ -}; -.fi -.in - -For each vt in use, the corresponding bit in the \fIv_state\fP member is set. -(Kernels 1.0 through 1.1.92.) -.IP \fBVT_RELDISP\fP -Release a display. -.IP \fBVT_ACTIVATE\fP -Switch to vt \fIargp\fP (1 <= \fIargp\fP <= MAX_NR_CONSOLES). -.IP \fBVT_WAITACTIVE\fP -Wait until vt \fIargp\fP has been activated. -.IP \fBVT_DISALLOCATE\fP -Deallocate the memory associated with vt \fIargp\fP. -(Since 1.1.54.) -.IP \fBVT_RESIZE\fP -Set the kernel's idea of screensize. -\fIargp\fP points to a - -.in +4n -.nf -struct vt_sizes { - ushort v_rows; /* # rows */ - ushort v_cols; /* # columns */ - ushort v_scrollsize; /* no longer used */ -}; -.fi -.in - -Note that this does not change the videomode. -See -.BR resizecons (8). -(Since 1.1.54.) -.IP \fBVT_RESIZEX\fP -Set the kernel's idea of various screen parameters. -\fIargp\fP points to a - -.in +4n -.nf -struct vt_consize { - ushort v_rows; /* number of rows */ - ushort v_cols; /* number of columns */ - ushort v_vlin; /* number of pixel rows on screen */ - ushort v_clin; /* number of pixel rows per character */ - ushort v_vcol; /* number of pixel columns on screen */ - ushort v_ccol; /* number of pixel columns per character */ -}; -.fi -.in - -Any parameter may be set to zero, indicating "no change", but if -multiple parameters are set, they must be self-consistent. -Note that this does not change the videomode. -See -.BR resizecons (8). -(Since 1.3.3.) -.PP -The action of the following ioctls depends on the first byte in the struct -pointed to by \fIargp\fP, referred to here as the \fIsubcode\fP. -These are legal only for the superuser or the owner of the current tty. -.IP "\fBTIOCLINUX, subcode=0\fP" -Dump the screen. -Disappeared in 1.1.92. (With kernel 1.1.92 or later, read from -/dev/vcsN or /dev/vcsaN instead.) -.IP "\fBTIOCLINUX, subcode=1\fP" -Get task information. -Disappeared in 1.1.92. -.IP "\fBTIOCLINUX, subcode=2\fP" -Set selection. -\fIargp\fP points to a -.nf - -.in +4n -struct { - char subcode; - short xs, ys, xe, ye; - short sel_mode; -}; -.in - -.fi -\fIxs\fP and \fIys\fP are the starting column and row. -\fIxe\fP and \fIye\fP are the ending -column and row. -(Upper left corner is row=column=1.) -\fIsel_mode\fP is 0 for character-by-character selection, -1 for word-by-word selection, -or 2 for line-by-line selection. -The indicated screen characters are highlighted and saved -in the static array sel_buffer in devices/char/console.c. -.IP "\fBTIOCLINUX, subcode=3\fP" -Paste selection. -The characters in the selection buffer are -written to \fIfd\fP. -.IP "\fBTIOCLINUX, subcode=4\fP" -Unblank the screen. -.IP "\fBTIOCLINUX, subcode=5\fP" -Sets contents of a 256-bit look up table defining characters in a "word", -for word-by-word selection. (Since 1.1.32.) -.IP "\fBTIOCLINUX, subcode=6\fP" -\fIargp\fP points to a char which is set to the value of the kernel -variable \fIshift_state\fP. (Since 1.1.32.) -.IP "\fBTIOCLINUX, subcode=7\fP" -\fIargp\fP points to a char which is set to the value of the kernel -variable \fIreport_mouse\fP. (Since 1.1.33.) -.IP "\fBTIOCLINUX, subcode=8\fP" -Dump screen width and height, cursor position, and all the -character-attribute pairs. -(Kernels 1.1.67 through 1.1.91 only. -With kernel 1.1.92 or later, read from /dev/vcsa* instead.) -.IP "\fBTIOCLINUX, subcode=9\fP" -Restore screen width and height, cursor position, and all the -character-attribute pairs. -(Kernels 1.1.67 through 1.1.91 only. -With kernel 1.1.92 or later, write to /dev/vcsa* instead.) -.IP "\fBTIOCLINUX, subcode=10\fP" -Handles the Power Saving -feature of the new generation of monitors. -VESA screen blanking mode is set to \fIargp\fP[1], which governs what -screen blanking does: - - \fI0\fP: Screen blanking is disabled. - - \fI1\fP: The current video adapter -register settings are saved, then the controller is programmed to turn off -the vertical synchronization pulses. -This puts the monitor into "standby" mode. -If your monitor has an Off_Mode timer, then -it will eventually power down by itself. - - \fI2\fP: The current -settings are saved, then both the vertical and horizontal -synchronization pulses are turned off. -This puts the monitor into "off" mode. -If your monitor has no Off_Mode timer, -or if you want your monitor to power down immediately when the -blank_timer times out, then you choose this option. -(\fICaution:\fP Powering down frequently will damage the monitor.) - -(Since 1.1.76.) -.SH "RETURN VALUE" -On success, 0 is returned. -On error \-1 is returned, and \fIerrno\fP is set. -.SH ERRORS -\fIerrno\fP may take on these values: -.TP -.B EBADF -The file descriptor is invalid. -.TP -.B -ENOTTY -The file descriptor is not associated with a character special device, -or the specified request does not apply to it. -.TP -.B EINVAL -The file descriptor or \fIargp\fP is invalid. -.TP -.B EPERM -Insufficient permission. -.SH NOTES -.BR Warning : -Do not regard this man page as documentation of the Linux console ioctl's. -This is provided for the curious only, as an alternative to reading the -source. -Ioctl's are undocumented Linux internals, liable to be changed -without warning. -(And indeed, this page more or less describes the -situation as of kernel version 1.1.94; -there are many minor and not-so-minor -differences with earlier versions.) - -Very often, ioctl's are introduced for communication between the -kernel and one particular well-known program (fdisk, hdparm, setserial, -tunelp, loadkeys, selection, setfont, etc.), and their behavior will be -changed when required by this particular program. - -Programs using these ioctl's will not be portable to other versions -of Unix, will not work on older versions of Linux, and will not work -on future versions of Linux. - -Use POSIX functions. -.SH "SEE ALSO" -.BR dumpkeys (1), -.BR kbd_mode (1), -.BR loadkeys (1), -.BR mknod (1), -.BR setleds (1), -.BR setmetamode (1), -.BR execve (2), -.BR fcntl (2), -.BR ioperm (2), -.BR termios (3), -.BR console (4), -.BR console_codes (4), -.BR mt (4), -.BR sd (4), -.BR tty (4), -.BR tty_ioctl (4), -.BR ttyS (4), -.BR vcs (4), -.BR vcsa (4), -.BR charsets (7), -.BR mapscrn (8), -.BR resizecons (8), -.BR setfont (8), -.IR /usr/include/linux/kd.h , -.I /usr/include/linux/vt.h +.so man2/ioctl_console.2 +.\" Link for old name of this page