aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man4/keyboard.4
blob: a5b8ce3ef2c6e89b00e6cff5c03736578b327942 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
.\"
.\"	%Id: keyboard.4,v 1.16 1998/06/29 07:04:08 hoek Exp %
.\" jpman %Id: keyboard.4,v 1.3 2000/08/03 06:58:14 horikawa Stab %
.\" WORD: function key		ファンクションキー
.\" WORD: history		履歴 [keyboard.4] (スクロールされた表示内容を戻す機能)
.\" WORD: modifier key		修飾キー
.\" WORD: normal key		通常キー
.\" WORD: numerical keypad	数字キーパッド
.\" WORD: scancode		スキャンコード [keyboard.4]
.\" WORD: substructure		サブ構造体 (構造体中の構造体メンバ)
.\" "
.Dd January 8, 1995
.Dt KEYBOARD 4 i386
.Os FreeBSD
.Sh 名称
.Nm keyboard
.Nd PC キーボードのインタフェース
.Sh 解説

PC キーボードはコンソールの文字入力デバイスとして使用されます。
キーボードは現在の仮想コンソールが専有します。
仮想コンソールを切り替えるには、シーケンス
.Ar ALT+Fn
を使ってください。これは、ALT を押しながらファンクションキーの
ひとつを押すという意味です。そうすると、そのファンクションキーの
番号と同じ仮想コンソールが現在の仮想コンソールとして選択され、
キーボードやディスプレイの専有的な使用権が与えられます。

コンソールでは、特別なキーシーケンスを用いることにより、キーボード上に物理的に
存在しない値を入力できます。この機能を使うには、ALT を押したままにして、
数字キーパッドで 0 から 255 の 10 進数字を入力し、ALT を離してください。
そうすると、入力された値がひとつの文字を表す ASCII 値として使われます。
このようにして、キーボード上に無い任意の ASCII 値を入力することができます。
また、コンソールドライバは履歴機能も備えています。
履歴機能は scroll-lock キーを押すことで有効になります。
これは表示を固定し、最近スクロールされた行に渡って矢印キーで
スクロールアップ・ダウンできるようにします。

キーボードは、個々のユーザや国の違いによる配置に合わせて設定できます。

キーボード上のキーは次の機能のどれでも持つことができます:

	通常キー		- そのキーに関連付けられた ASCII 値を入力。

	ファンクションキー	- ASCII 数値列を入力。

	スイッチキー		- 仮想コンソールを切り替える。

	修飾キー		- 別のキーの意味を変更する。


キーボードとは、1 から n の番号を付けられたキーの集合と見なせます。
この番号はよく、あるキーに対する「スキャンコード (scancode)」と呼ばれます。
あるキーが押されたとき、そのキーの番号はビット 7 が 0 の 8 ビット文字に
変換され、離されたときはビット 7 が 1 の数値に変換されます。
これにより、キーのマッピングが完全に設定可能となります。

それぞれのキーの持つ意味は PIO_KEYMAP ioctl の呼び出しによって
プログラムできます。これは keymap_t 構造体を引数に取ります。
この構造体の構成は次のようになります:
.Pp
.Bd -literal -offset indent
		struct keymap {
			u_short	n_keys;
			struct key_t {
				u_char map[NUM_STATES];
				u_char spcl;
				u_char flgs;
			} key[NUM_KEYS];
		};
.Ed
.Pp
フィールド n_keys はいくつのキー定義 (スキャンコード) が続くかをシステムに
示します。各スキャンコードはサブ構造体の key_t で指定されます。

各スキャンコードは、shift, control, alt の状態により
8 つの異なる値に変換され得ます。
これら 8 通りの状態は次のような配列 map で表現されます:

                                                            alt
 scan                          cntrl          alt    alt   cntrl
 code     base   shift  cntrl  shift   alt   shift  cntrl  shift
 map[n]      0       1      2      3     4       5      6      7
 ----     ------------------------------------------------------
 0x1E      'a'     'A'   0x01   0x01    'a'    'A'   0x01   0x01

これは、通常 0x1E のスキャンコードを持つ「A」と記されたキーの
デフォルトのマッピングです。8 通りの状態が示されているように、
「A」キーの通常の動作を与えます。
フィールド spcl は、キーに「特殊な (special)」扱いを与えるために使われ、
次のように解釈されます。
各ビットは上記の状態のひとつに対応します。
そのビットが 0 なら、そのキーは map[] の対応するエントリに示された数値を
送出します。ビットが 1 なら、そのキーは「特殊」です。
すなわち、そのキーは何も送出しません。
代わりに、「状態 (state)」の変更を施します。
つまり、そのキーは shift, control, alt, lock, switch-screen,
ファンクションキー, あるいは no-op キーであるということです。
map のビットは逆向きになります。
つまり、ビット 7 が base に、ビット 6 が shift に、などと対応します。

フィールド flgs は、そのキーが caps-lock (1)、num-lock (2)、または
その両方 (3) に反応すべきか、あるいは両方とも無視 (0) するべきかを決めます。

.Xr kbdcontrol 1
ユーティリティは、こういった記述をカーネルに/カーネルから
実行時にロードするために使われます。これにより実行時にキー割り当てを
変更することができます。あるいは、より重要なことですが、
キーの正確な意味を (GIO_KEYMAP ioctl で) カーネルから取得します
(例えば、X サーバが利用します)。

ファンクションキーは SETFKEY ioctl 呼び出しを用いてプログラムできます。

この ioctl は fkeyarg_t 型の引数を取ります:
.Bd -literal -offset indent
		struct fkeyarg {
			u_short	keynum;
			char	keydef[MAXFK];
			char	flen;
		};
.Ed
.Pp
フィールド keynum はどのファンクションキーをプログラムするかを決めます。
配列 keydef は使用する新しい文字列 (長さは MAXFK まで) を含み、
その長さを flen に入れなければなりません。

GETFKEY ioctl 呼び出しは似たように働きますが、
これは keynum の現在の設定を返します。

ファンクションキーは次のように番号付けされます:
.Bd -literal -offset indent
	F1-F12 			key 1 - 12
	Shift F1-F12		key 13 - 24
	Ctrl F1-F12		key 25 - 36
	Ctrl+shift F1-F12	key 37 - 48
	
	Home			key 49
	Up arrow		key 50
	Page Up			key 51
	(keypad) -		key 52
	Left arrow		key 53
	(keypad) 5              key 54
	Right arrow		key 55
	(keypad) +		key 56
	End			key 57
	Down arrow		key 58
	Page down		key 59
	Insert 			key 60
	Delete			key 61

	Right window		key 62
	Left window		key 63
	Menu			key 64
.Ed

.Xr kbdcontrol 1
ユーティリティで実行時にこれらの値を変更することもできます。
.Pp
.Sh 作者
.ie t .An S\(/oren Schmidt Aq sos@FreeBSD.org
.el .An So/ren Schmidt Aq sos@FreeBSD.org
.\" ISO-8859 集合の文字(0xe4)に対処     金ん田 1999.02.23
.\" .An Soren Schmidt Aq sos@FreeBSD.org
.\"      ^0xe4