|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > c > console_ioctl - スペシャルファイル (デバイス)の説明 console_ioctl - スペシャルファイル (デバイス)の説明 - Linux コマンド集 一覧表名前console ioctl - コンソール端末と仮想コンソールの ioctl 説明
次のような Linux 固有の ioctl
() がサポートされている。
それぞれ3番目の引数が必要である、ここでは argp
とする。
カーネル 1.1.54 以前は、LED はそれぞれのキーボードフラグの状態を反映する
だけで、KDGETLED/KDSETLED もキーボードフラグを変更するだけであった。
カーネルl 1.1.54 からは LED に任意の表示をする事ができるようになったが、
デフォルトではキーボードフラグを表示する。
次に示す 2 つの ioctl はキーボードフラグにアクセスするのに用いられる。
struct consolefontdesc {
u_short charcount; /* フォントの文字数(256または512) */
u_short charheight; /* 一文字の走査線の数(1-32) */
char *chardata; /* 展開されたフォントデータ */
};
という構造体を指す。 必要ならスクリーンは適当にサイズ変更され、SIGWINCH が適切な プロセスに送られる。 このコールにより Unicode のマッピングが無効になる。 スクリーンフォント、サイズ、 Unicode マッピングをブート時のデフォルト値に リセットする。argp は用いられないが、将来のバージョンの Linux との互換性を保つために NULL にセットすべきである。 スクリーンマッピングをカーネルより取得する。argp はサイズ E_TABSZ の 領域を指す。その領域には各キャラクターを表示するのに用いられるフォントの 位置がロードされている。 この呼び出しは現在ロードされているフォントが 256 文字よりも多い時には 無意味な情報を返す事が多い。 フル Unicode スクリーンマッピングをカーネルより取得する。 argp はサイズ E_TABSZ*sizeof(unsigned short) の領域を指す。 その領域には各キャラクターを示す Unicode がロードされている。 U+F000 に始まる Unicode の特別な集合は、「フォント直接な(direct to font)」 マッピングを示すのに用いられる(カーネル 1.3.1 以降)。 「ユーザー定義可能な(user definable)」(4番目の)テーブルをカーネルに ロードする。そのテーブルは各バイトをスクリーンシンボルにマッピングする。 argp はサイズE_TABSZの領域を指す。 「ユーザー定義可能な」(4番目の)テーブルをカーネルにロードする。 そのテーブルは各バイトをユニコードにマッピングし、その後、 現在ロードされているユニコードからフォントへのマップに従い スクリーンシンボルに変換される。 U+F000 に始まるユニコードは直接フォントシンボルにマッピングするのに 使える(カーネル 1.3.1 以降) Unicode からフォントへのマッピングをカーネルから取得する。argp は、 struct unimapdesc {
u_short entry_ct;
struct unipair *entries;
};
という構造体を指す。 ここで entries は、 struct unipair {
u_short unicode;
u_short fontpos;
};
という構造体の配列へのポインターである。 (カーネル 1.1.92 以降) Unicode からフォントへのマッピングをカーネルにセットする。argp は構造体 unimapdesc へのポインターである。(カーネル 1.1.92 以降) テーブルをクリアし、その事をハシュアルゴリズムに伝える。 argp は 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 以降) 現在のキーボードモードを取得する。argp の指す long 型変数が、 次のうちのどれかに設定される。 K_RAW 0x00 K_XLATE 0x01 K_MEDIUMRAW 0x02 K_UNICODE 0x03 現在のキーボードモードを設定する。 argp は上記の値のうちのどれかに等しい値にする。 メタキーハンドリングモード(meta key handling mode)を取得する。 argp が指す long 型変数は、次のうちのどれかに設定される。 K_METABIT 0x03 set high order bit K_ESCPREFIX 0x04 escape prefix メタキーハンドリングモードを設定する。 argp は上記の値のどれかに等しい値にする。 キーコードをアクションコードに変換するキー変換表のエントリーの一つを 取得する。 argp は、 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 に設定される。 変換テーブルのエントリーの一つを設定する。argp は 構造体 kbentry へのポインターである。 ファンクションキーの文字列を取得する。argp は、 struct kbsentry {
u_char kb_func;
u_char kb_string[512];
};
という構造体へのポインターである。 kb_func 番目のファンクションキーのアクションコードに対応する (NULL で終端された)文字列が kb_string に設定される。 ファンクションキーの文字列のエントリーを設定する。argp は、 構造体 kbsentry へのポインターである。 カーネルのアクセントテーブル(accent table)を読み込む。argp は、 struct kbdiacrs {
unsigned int kb_cnt;
struct kbdiacr kbdiacr[256];
};
という構造体へのポインターである。 ここで、kb_cnt は配列中のエントリーの個数で、個々のエントリーは、 struct kbdiacr {
u_char diacr,
base, result;
};
という構造体である。 カーネルの(スキャンコードからキーコードへ 変換する)キーコードテーブルエントリーを読み込む。 argp は、 struct kbkeycode { unsigned int scancode, keycode; };
へのポインターである。 keycode は、scancode に対応した値に設定される。(ただし、89 <= scancode <= 255 のみについて。1 <= scancode <= 88 では keycode == scancode である。) (カーネル 1.1.63 以降) カーネルのキーコードテーブルエントリーを書き込む。argp は構造体 kbkeycode へのポインターである。 (カーネル 1.1.63 以降) この関数呼び出しは、特別な組合せでキーを押した時に発生するシグナル argp (1 <= argp <= NSIG) を進んで受け付けるかどうかを示す。 (linux/drivers/char/keyboard.c の Spawn_console() を見よ。) 最初の空いている(まだオープンされていない)コンソールを返す。 argp の指す整数には、vt の番号がセットされる (1 <= *argp <= MAX_NR_CONSOLES)。 アクティブな 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 のモードが セットされる。 mode は次のどれかに設定される: VT_AUTO 自動vt切替え VT_PROCESS プロセスコントロール切替え VT_ACKACQ アクノリッジ切替え アクティブな vt のモードを設定する。argp は構造体 vt_mode への ポインターである。 グローバルな vt の状態の情報を取得する。argp は、 struct vt_stat {
ushort v_active; /* active vt */
ushort v_signal; /* signal to send */
ushort v_state; /* vt bitmask */
};
へのポインターである。 使用されているそれぞれの vt につき v_state の対応するビットが セットされる。 (カーネルl 1.0 から 1.1.92 まで) ディスプレーを解放する。 argp (1 <= argp <= MAX_NR_CONSOLES)の vt に切替える。 argp の vt がアクティブになるまで待つ。 argp の vt に結びつけられたメモリーを解放する。 (カーネル 1.1.54 以降) カーネルが認識するスクリーンサイズを設定する。argp は、 struct vt_sizes {
ushort v_rows; /* # rows */
ushort v_cols; /* # columns */
ushort v_scrollsize; /* no longer used */
};
へのポインターである。 これはビデオモードを変更しない事に注意。 resizecons (8)を見よ(カーネル 1.1.54 以降)。 カーネルが認識する各種のスクリーンパラメータを設定する。argp は、 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 のオーナにのみ許される。
戻り値成功時には 0 が返される。エラーに対しては -1 が返され、 errno が設定される。 エラーerrno は次のような値をとる:
警告
このマニュアルページを 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),
/usr/include/linux/kd.h
,
/usr/include/linux/vt.h
|
|