CONSOLE_IOCTL(4) | Linux Programmer's Manual | CONSOLE_IOCTL(4) |
名前
console_ioctl -コンソール端末と仮想コンソールの ioctl説明
次のような Linux 固有の ioctl(2) がサポートされている。それぞれ3番目の引数が必要である、ここでは argp とする。- KDGETLED
-
LED の状態を取得する。
argp は
char のポインターである。
*argp の下位 3 ビットに以下のように LED の状態がセットされる。
LED_CAP 0x04 キャピタルロックが点灯
LEC_NUM 0x02 ナンバーロックが点灯
LED_SCR 0x01 スクロールロックが点灯
- KDSETLED
- LEDを点灯させる。LEDは argp の下位 3 ビットに従い点灯される。しかし、より高位のビットがセットされている時には、キャピタルロック、ナンバーロック、スクロールロックのキーボード機能の状態を表示する LED は通常状態に戻る。
カーネル 1.1.54 以前は、LED はそれぞれのキーボードフラグの状態を反映するだけで、KDGETLED/KDSETLED もキーボードフラグを変更するだけであった。カーネルl 1.1.54 からは LED に任意の表示をする事ができるようになったが、デフォルトではキーボードフラグを表示する。次に示す 2 つの ioctl はキーボードフラグにアクセスするのに用いられる。
- KDGKBLED
- キャピタルロック、ナンバーロック、スクロールロックの(LED の表示ではなく)キーボードフラグを得る。 argp はフラグの状態がセットされる文字変数を指す。 (0x7)でマスクして得られる下位 3 ビットが現在のフラグの状態を示し、 (0x70)でマスクして得られる次の 3 ビットがデフォルトのフラグの状態を示す。(カーネル 1.1.54以降)
- KDSKBLED
- キャピタルロック、ナンバーロック、スクロールロックの(LED の表示ではなく) キーボードフラグをセットする。 argp がセットしたいフラグである。 (0x7)でマスクして得られる下位 3 ビットがフラグの状態で、(0x70)でマスクして得られる次の 3 ビットがデフォルトのフラグの状態である。(カーネル 1.1.54以降)
- KDGKBTYPE
- キーボードの種類を得る。これは値 0x02 と定義されている KB_101を返す。
- KDADDIO
- I/Oポートを有効な物として加える。これは ioperm(arg,1,1) と等価である。
- KDDELIO
- I/Oポートを有効な物から外す。これは ioperm(arg,1,0) と等価である。
- KDENABIO
- ビデオボードへの I/O を可能にする。これは ioperm(0x3b4, 0x3df-0x3b4+1, 1) と等価である。
- KDDISABIO
- ビデオボードへの I/O を不可能にする。これは ioperm(0x3b4, 0x3df-0x3b4+1, 0) と等価である。
- KDSETMODE
-
テキスト/グラフィクスモードを設定する。
argp は次のうちのどれか:
KD_TEXT 0x00
KD_GRAPHICS 0x01
- KDGETMODE
- テキスト/グラフィクスモードを取得する。 argp が指す long 型変数に上述の値のどちらかがセットされる。
- KDMKTONE
- 指定された長さのトーンを発生する。 argp の下位 16 ビットはクロックサイクルを単位にして周期を指定し、上位 16 ビットが msec の単位で表した、(トーンを発生させる)時間を指定する。トーンを発生させる時間がゼロのときは、サウンドはオフになる。制御は直ちに戻る。例えば、 argp = (125<<16) + 0x637 とすれば、通常 ctrl-G を押した時に発生する音になる。 (カーネル 0.99pl1 以降;この機能はカーネル 2.1.49 から 2.1.50 ではバグのため動作しない)
- KIOCSOUND
- 音の発生の開始や停止を行う。 argp の下位 16 ビットはクロックサイクルを単位として周期を示す。 (つまり argp = 1193180/周波数)。 argp = 0 の場合、サウンドはオフになる。どちらの場合でも、ただちに制御は戻る。
- GIO_CMAP
- 現在のデフォルトのカラーマップをカーネルより取得する。
- PIO_CMAP
- デフォルトのテキストモードのカラーマップを変更する。 argp が指す 48 バイトの配列中には、16 の可能なスクリーンの色を、赤、緑、青の順に 0 をオフ、255を最大強度とした値として納める。デフォルトの色は順に、黒、濃い赤、濃い緑、茶、濃い青、濃い紫、濃いシアン、明るい灰色、濃い灰色、明るい赤、明るい緑、黄、明るい青、明るい紫、明るいシアン、白である。(カーネル 1.3.3以降)
- GIO_FONT
- 拡張された形式で 256 文字のスクリーンフォントを得る。 argp は 8192 バイトの配列を指す。現在ロードされているフォントが 512 文字のフォントであるか、コンソールがテキストモードでない時には失敗し EINVAL のエラーコードを返す。
- GIO_FONTX
- スクリーンフォントとそれに関連した情報を取得する。 argp は構造体 consolefontdesc ( PIO_FONTX を参照のこと)を指す。関数呼び出しのときには、 charcount には、 chardata が指すバッファにおさまる最大の文字数をセットしなければならない。関数呼び出しから戻った時には charcount と charheight には、現在ロードされているフォントの該当するデータが収められている。配列 chardata には、最初に charcount にいれた値によってフォントを収めるのに十分なスペースがあるとわかればフォントデータが収められる。そうでない時には、バッファは変更されず、 errno に ENOMEM がセットされる(カーネル 1.3.1 以降)。
- PIO_FONT
- 256 文字のフォントをセットする。EGA/VGA キャラクタージェネレーター (character generator) にフォントをロードする。 argp は、8192 バイト(一文字 32 バイト)のマップを指す。マップのうち、最初の N のみが 8x N のフォントのために用いられる(0 < N <= 32)。この呼び出しをすると Unicode のマッピングが無効になる。
- PIO_FONTX
-
スクリーンフォントと、それに関連するレンダリング情報をセットする。
argp は、以下の構造体を指す。
struct consolefontdesc {
unsigned short charcount; /* フォントの文字数
(256 または 512) */
unsigned short charheight; /* 一文字の走査線の数
(1-32) */
char *chardata; /* 展開されたフォントデータ */
};
- PIO_FONTRESET
- スクリーンフォント、サイズ、 Unicode マッピングをブート時のデフォルト値にリセットする。 argp は用いられないが、将来のバージョンの Linux との互換性を保つために NULL にセットすべきである。
- GIO_SCRNMAP
- スクリーンマッピングをカーネルより取得する。 argp はサイズ E_TABSZ の領域を指す。その領域には各キャラクターを表示するのに用いられるフォントの位置がロードされている。この呼び出しは現在ロードされているフォントが 256 文字よりも多い時には無意味な情報を返す事が多い。
- GIO_UNISCRNMAP
- フル Unicode スクリーンマッピングをカーネルより取得する。 argp はサイズ E_TABSZ*sizeof(unsigned short) の領域を指す。その領域には各キャラクターを示す Unicode がロードされている。 U+F000 に始まる Unicode の特別な集合は、「フォント直接な(direct to font)」マッピングを示すのに用いられる(カーネル 1.3.1 以降)。
- PIO_SCRNMAP
- 「ユーザー定義可能な(user definable)」(4番目の)テーブルをカーネルにロードする。そのテーブルは各バイトをスクリーンシンボルにマッピングする。 argp はサイズE_TABSZの領域を指す。
- PIO_UNISCRNMAP
- 「ユーザー定義可能な」(4番目の)テーブルをカーネルにロードする。そのテーブルは各バイトをユニコードにマッピングし、その後、現在ロードされているユニコードからフォントへのマップに従いスクリーンシンボルに変換される。 U+F000 に始まるユニコードは直接フォントシンボルにマッピングするのに使える(カーネル 1.3.1 以降)
- GIO_UNIMAP
-
Unicode からフォントへのマッピングをカーネルから取得する。
argp は、
struct unimapdesc {
unsigned short entry_ct;
struct unipair *entries;
};
struct unipair {
unsigned short unicode;
unsigned short fontpos;
};
- PIO_UNIMAP
- Unicode からフォントへのマッピングをカーネルにセットする。 argp は構造体 struct unimapdesc へのポインターである。 (カーネル 1.1.92 以降)
- PIO_UNIMAPCLR
-
テーブルをクリアし、その事をハシュアルゴリズムに伝える。
argpは
struct unimapinit {
unsigned short advised_hashsize; /* 0 if no opinion */
unsigned short advised_hashstep; /* 0 if no opinion */
unsigned short advised_hashlevel; /* 0 if no opinion */
};
- KDGKBMODE
-
現在のキーボードモードを取得する。
argp の指す
long 型変数が、次のうちのどれかに設定される。
K_RAW 0x00
K_XLATE 0x01
K_MEDIUMRAW 0x02
K_UNICODE 0x03
- KDSKBMODE
- 現在のキーボードモードを設定する。 argp は上記の値のうちのどれかに等しい long にする。
- KDGKBMETA
-
メタキーハンドリングモード(meta key handling mode)を取得する。
argp が指す
long 型変数は、次のうちのどれかに設定される。
K_METABIT 0x03 set high order bit
K_ESCPREFIX 0x04 escape prefix
- KDSKBMETA
- メタキーハンドリングモードを設定する。 argp は上記の値のどれかに等しい long にする。
- KDGKBENT
-
キーコードをアクションコードに変換するキー変換表のエントリーの一つを取得する。
argp は、
struct kbentry {
unsigned char kb_table;
unsigned char kb_index;
unsigned short kb_value;
};
- KDSKBENT
- 変換テーブルのエントリーの一つを設定する。 argp は構造体 struct kbentry へのポインターである。
- KDGKBSENT
-
ファンクションキーの文字列を取得する。
argp は以下の構造体へのポインターである。
struct kbsentry {
unsigned char kb_func;
unsigned char kb_string[512];
};
- KDSKBSENT
- ファンクションキーの文字列のエントリーを設定する。 argp は、構造体 struct kbsentry へのポインターである。
- KDGKBDIACR
-
カーネルのアクセントテーブル(accent table)を読み込む。
argpは、次の構造体へのポインターである。
struct kbdiacrs {
unsigned int kb_cnt;
struct kbdiacr kbdiacr[256];
};
struct kbdiacr {
unsigned char diacr;
unsigned char base;
unsigned char result;
};
- KDGETKEYCODE
-
カーネルの(スキャンコードからキーコードへ変換する)キーコードテーブルエントリーを読み込む。
argp は、
struct kbkeycode {
unsigned int scancode;
unsigned int keycode;
};
- KDSETKEYCODE
- カーネルのキーコードテーブルエントリーを書き込む。 argp は構造体 struct kbkeycode へのポインターである。 (カーネル 1.1.63 以降)
- KDSIGACCEPT
- この関数呼び出しは、特別な組合せでキーを押した時に発生するシグナル argp (1 <= argp <= NSIG) を進んで受け付けるかどうかを示す。 (linux/drivers/char/keyboard.c の Spawn_console() を見よ。)
- VT_OPENQRY
- 最初の空いている(まだオープンされていない)コンソールを返す。 argp の指す int 型の整数には、vt の番号がセットされる (1 <= *argp <= MAX_NR_CONSOLES)。
- VT_GETMODE
-
アクティブな vt のモードを取得する。
argpは、
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_AUTO 自動vt切替え
VT_PROCESS プロセスコントロール切替え
VT_ACKACQ アクノリッジ切替え
- VT_SETMODE
- アクティブな vt のモードを設定する。 argp は構造体 struct vt_mode へのポインターである。
- VT_GETSTATE
-
グローバルな vt の状態の情報を取得する。
argpは、
struct vt_stat {
unsigned short v_active; /* active vt */
unsigned short v_signal; /* signal to send */
unsigned short v_state; /* vt bit mask */
};
- VT_RELDISP
- ディスプレーを解放する。
- VT_ACTIVATE
- argp (1 <= argp <= MAX_NR_CONSOLES)の vt に切替える。
- VT_WAITACTIVE
- argpの vt がアクティブになるまで待つ。
- VT_DISALLOCATE
- argp の vt に結びつけられたメモリーを解放する。 (カーネル 1.1.54 以降)
- VT_RESIZE
-
カーネルが認識するスクリーンサイズを設定する。
argp は、
struct vt_sizes {
unsigned short v_rows; /* # rows */
unsigned short v_cols; /* # columns */
unsigned short v_scrollsize; /* no longer used */
};
- VT_RESIZEX
-
カーネルが認識する各種のスクリーンパラメータを設定する。
argp は、以下の構造体へのポインターである。
struct vt_consize {
unsigned short v_rows; /* number of rows */
unsigned short v_cols; /* number of columns */
unsigned short v_vlin; /* number of pixel rows
on screen */
unsigned short v_clin; /* number of pixel rows
per character */
unsigned short v_vcol; /* number of pixel columns
on screen */
unsigned short v_ccol; /* number of pixel columns
per character */
};
以下の ioctl がどのように動作をするかは、 argp が指す構造体の最初のバイト(ここでは subcode と呼ぶ)に依存する。これらの呼出しは、スーパーユーザーか現在の端末のオーナにのみ許される。
- TIOCLINUX, subcode=0
- スクリーンをダンプ(dump)するカーネル 1.1.92 以降でなくなった(1.1.92 以降では、代わりに /dev/vcsN または /dev/vcsaN より読み込む)。
- TIOCLINUX, subcode=1
- タスク情報を取得する。カーネル 1.1.92 でなくなった。
- TIOCLINUX, subcode=2
-
選択を設定する。
argp が指すのは、
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 に保存される。
- TIOCLINUX, subcode=3
- 選択したものをペーストする。選択バッファ中の文字が fd に書き出される。
- TIOCLINUX, subcode=4
- スクリーンをアンブランク(unblank)する。
- TIOCLINUX, subcode=5
- 語毎の選択のための「語」中の文字を規定している 256 ビットのルックアップテーブルの内容を設定する(カーネル 1.1.32 以降)。
- TIOCLINUX, subcode=6
- argp は文字変数を指すポインタで、その内容がカーネル変数 shift_stateの値に設定される(カーネル 1.1.32 以降)。
- TIOCLINUX, subcode=7
- argp は文字変数を指すポインタで、その内容がカーネル変数 report_mouse の値に設定される(カーネル 1.1.33 以降)。
- TIOCLINUX, subcode=8
- スクリーン幅、スクリーン高さ、カーソル位置、全ての文字属性の組をダンプする (カーネル 1.1.67 から 1.1.91までのみ。カーネル 1.1.92 以降では /dev/vcsa*より読み込む)。
- TIOCLINUX, subcode=9
- スクリーン幅、スクリーン高さ、カーソル位置、全ての文字属性の組を復元する (カーネル 1.1.67 から 1.1.91 までのみ。カーネル 1.1.92 以降では /dev/vcsa* に書き込む)。
- TIOCLINUX, subcode=10
-
新世代モニターのパワーセーブ機能を制御する。 VESA スクリーンブランキングモードが
argp[1]に設定される。その値はスクリーンブランキングがどのように行われるかを示す。以下がその値である。
0: スクリーンブランキングなし。
1:現在のビデオアダプターレジスタが保存されたあと、コントローラは垂直同期パルスをオフにするようプログラムされる。これによりモニターは「スタンバイ」モードにはいる。モニターに Off_Mode タイマが備わっておれば、最終的にはモニターが自分で電源を落す。
2:現在の設定を保存した後、垂直、水平同期パルスがオフになる。これによりモニターは「オフ」モードになる。モニターに Off_Mode タイマーがない時、または、blank_timer がタイムアウトしたらすぐにモニターの電源を落したいときにこの選択肢を選ぶ。 (注意:頻繁にモニターの電源を切るとモニターを痛める。)
返り値
成功時には 0 が返される。エラーに対しては-1 が返され、 errno が設定される。エラー
errno は次のような値をとる:- EBADF
- ファイルディスクリプタが無効。
- ENOTTY
- ファイルディスクリプタがキャラクタ・スペシャルデバイスと関連付けられていない。または、要求されたものがそれに当てはまらない。
- EINVAL
- ファイルディスクリプタまたは argp が無効。
- EPERM
- 権限が不十分。
注意
警告: このマニュアルページを Linux のコンソール ioctl を文書化したものと思わない事。これは、興味がある人がソースを読むことの代わりになるように用意した物である。 ioctl は文書化されない Linux の内部機能であって、警告なしに変更されることがある。 (そして、このページはカーネル 1.1.94 のときの状況を記述した物で、それは以前のバージョンと比べれば、多くの違いがある)関連項目
dumpkeys(1), kbd_mode(1), loadkeys(1), mknod(1), setleds(1), setmetamode(1), execve(2), fcntl(2), ioperm(2), termios(3), console(4), console_codes(4), mt(4), sd(4), tty(4), tty_ioctl(4), ttyS(4), vcs(4), vcsa(4), charsets(7), mapscrn(8), resizecons(8), setfont(8)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2009-02-28 | Linux |