LED_CAP 0x04 キャピタルロックが点灯
LEC_NUM 0x02 ナンバーロックが点灯
LED_SCR 0x01 スクロールロックが点灯
カーネル 1.1.54 以前は、LED はそれぞれのキーボードフラグの状態を反映する だけで、KDGETLED/KDSETLED もキーボードフラグを変更するだけであった。 カーネルl 1.1.54 からは LED に任意の表示をする事ができるようになったが、 デフォルトではキーボードフラグを表示する。 次に示す 2 つの ioctl はキーボードフラグにアクセスするのに用いられる。
KD_TEXT 0x00
KD_GRAPHICS 0x01
struct consolefontdesc { u_short charcount; /* フォントの文字数 (256または512) */ u_short charheight; /* 一文字の走査線の数 (1-32) */ char *chardata; /* 展開されたフォントデータ */ };
という構造体を指す。
必要ならスクリーンは適当にサイズ変更され、SIGWINCH が適切な プロセスに送られる。 このコールにより Unicode のマッピングが無効になる。
struct unimapdesc { u_short entry_ct; struct unipair *entries; };
という構造体を指す。 ここで entries は、
struct unipair { u_short unicode; u_short fontpos; };
という構造体の配列へのポインターである。 (カーネル 1.1.92 以降)
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 */ };
という構造体を指すポインターである。 (カーネル 1.1.92 以降)
K_RAW 0x00
K_XLATE 0x01
K_MEDIUMRAW 0x02
K_UNICODE 0x03
K_METABIT 0x03 set high order bit
K_ESCPREFIX 0x04 escape prefix
struct kbentry { u_char kb_table; u_char kb_index; u_short kb_value; };
へのポインターである。 最初の2つの要素、kb_table には選択するキーテーブル (0 <= kb_table < MAX_NR_KEYMAPS)、kb_index にはキーコード(0 <= kb_index < NR_KEYS)を設定する。 kb_value は対応するアクションコード、または、そのようなキーが ないときには K_HOLE、kb_table が無効な時には K_NOSUCHMAP に設定される。
struct kbsentry { u_char kb_func; u_char kb_string[512]; };
という構造体へのポインターである。
kb_func 番目のファンクションキーのアクションコードに対応する (NULL で終端された)文字列が kb_string に設定される。
struct kbdiacrs { unsigned int kb_cnt; struct kbdiacr kbdiacr[256]; };
という構造体へのポインターである。 ここで、kb_cnt は配列中のエントリーの個数で、個々のエントリーは、
struct kbdiacr { u_char diacr; u_char base; u_char result; }; という構造体である。
へのポインターである。 keycode は、scancode に対応した値に設定される。(ただし、89 <= scancode <= 255 のみについて。1 <= scancode <= 88 では keycode == scancode である。) (カーネル 1.1.63 以降)
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) */ };
という構造体を指すポインタであり、アクティブな vt のモードが セットされる。 mode は次のどれかに設定される:
VT_AUTO 自動vt切替え
VT_PROCESS プロセスコントロール切替え
VT_ACKACQ アクノリッジ切替え
struct vt_stat { ushort v_active; /* active vt */ ushort v_signal; /* signal to send */ ushort v_state; /* vt bit mask */ };
へのポインターである。 使用されているそれぞれの vt につき v_state の対応するビットが セットされる。 (カーネルl 1.0 から 1.1.92 まで)
struct vt_sizes { ushort v_rows; /* # rows */ ushort v_cols; /* # columns */ ushort v_scrollsize; /* no longer used */ };
へのポインターである。 これはビデオモードを変更しない事に注意。 resizecons(8) を見よ(カーネル 1.1.54 以降)。
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 */ };
へのポインターである。
パラメータはゼロであってもよい。そのときは ``変更しないこと'' を 意味するが、複数のパラメータが設定された時にはそれらの間で矛盾が ないようにしなければならない。 この関数呼び出しによってもビデオモードは変更されない事に注意。 resizecons(8) を参照の事(カーネル 1.3.3 以降)。
以下の ioctl がどのように動作をするかは、argp が指す構造体の 最初のバイト(ここでは subcode と呼ぶ)に依存する。 これらの呼出しは、スーパーユーザーか現在の tty のオーナにのみ許される。
struct { char subcode; short xs, ys, xe, ye; short sel_mode; }であり、ここで xs と ys は始めの桁と行で、xe と ye は終りの桁と 行である。 (左上の隅が 桁=行=1 ) sel_mode は 0 が文字毎の選択で、1は語毎の選択、2は行毎の選択を 意味する。 示されたスクリーン上の文字はハイライト表示され devices/char/console.c の 静的配列 sel_buffer に保存される。
0: スクリーンブランキングなし。
1:現在のビデオアダプターレジスタが保存されたあと、
コントローラは垂直同期パルスをオフにするようプログラムされる。これにより
モニターは「スタンバイ」モードにはいる。
モニターに Off_Mode タイマが備わっておれば、最終的にはモニターが自分で
電源を落す。
2:現在の設定を保存した後、垂直、水平同期パルスがオフになる。
これによりモニターは「オフ」モードになる。
モニターに Off_Mode タイマーがない時、または、blank_timer がタイムアウトしたら
すぐにモニターの電源を落したいときにこの選択肢を選ぶ。
(注意:頻繁にモニターの電源を切るとモニターを痛める。)
(カーネル 1.1.76 以降)
ioctl はカーネルと、ある特定のよく知られたプログラムとの情報交換のために 導入される事が非常に多い(fdisk, hdparm, setserial,tunelp, loadkeys, selection, setfont など)。そのため ioctl の動作は、その特定のプログラムが 必要とした時には変更になる。
これらの ioctl を使ったプログラムは他のバージョンの Unix との互換性が ないし、古いバージョンの Linux では、走らない。さらに将来のバージョンの Linux では走らなくなるかも知れない。