概要
FreeBSD における PC-98 用および AT 互換機用の K/B のキーと scancode および keycode との対応を提示する. (X Window System は XFree86 4 系および X.Org 6 系.)
概要
FreeBSD における PC-98 用および AT 互換機用の K/B のキーと scancode および keycode との対応を提示する. (X Window System は XFree86 4 系および X.Org 6 系.)
このページでは,"scancode" は system ssan code のうちキーを識別する部分のみを指すことにします.
"キーの刻印またはグループ" の欄のグループは,「英数」「Key Pad」「未使用」の三つです. またその後に書いた "(数字)" はその個数です.
keycode の欄の "<ESC>" のような表記は keycode 名 です. keycode 名 と keycode 番号との対応関係は,/usr/X11R6/lib/X11/xkb/keycodes/ の xfree98 や xfree86 に記されています.
PC-98 ではすべてのキーに対して scancode + 8 = keycode です.
scancode | キーの刻印またはグループ | keycode |
---|---|---|
000 | ESC | <ESC> = 8 |
001-013 | 英数 (13 個) ('1' から '\' まで) | <AE01>-<AE12> = 9-20, <BKSL> = 21 |
014 | BS | <BKSP> = 22 |
015 | TAB | <TAB> = 23 |
016-027 | 英数 (12 個) ('Q' から '{' まで) | <AD01>-<AD12> = 24-35 |
028 | Enter | <RTRN> = 36 |
029-040 | 英数 (12 個) ('A' から '}' まで) | <AC01>-<AC12> = 37-48 |
041-051 | 英数 (11 個) ('Z' から '_' まで) | <AB01>-<AB11> = 49-59 |
052 | SPACE | <SPCE> = 60 |
053 | XFER | <XFER> = 61 |
054 | ROLL UP | <PGUP> = 62 |
055 | ROLL DOWN | <PGDN> = 63 |
056 | INS | <INS> = 64 |
057 | DEL | <DELE> = 65 |
058 | UP | <UP> = 66 |
059 | LEFT | <LEFT> = 67 |
060 | RIGHT | <RGHT> = 68 |
061 | DOWN | <DOWN> = 69 |
062 | HOME | <HOME> = 70 |
063 | HELP | <HELP> = 71 |
064-080 | (Enter を除く) Key Pad (17 個) | <KP**> = 72-88 |
081 | NFER | <NFER> = 89 |
082-086 | vf1-5 | <FK11>-<FK15> = 90-94 |
087-095 | 未使用 (9 個) | |
096 | STOP | <BRK> = 104 |
097 | COPY | <PRSC> = 105 |
098-107 | f1-f10 | <FK01>-<FK10> = 106-115 |
108-111 | 未使用 (4 個) | |
112 | SHIFT | <LFSH> = 120 |
113 | CAPS | <CAPS> = 121 |
114 | かな | <ALGR> = 122 |
115 | GRPH (Alt) | <LALT> = 123 |
116 | CTRL | <LCTL> = 124 |
117-127 | 未使用 (11 個) |
集計すると,次のようになります.
キーの総数 : 109 [1] 独立なキーの数 : 107 (二つある [SHIFT] と [Enter] が各々独立でない.) 設定できるキーの数 : 104 ([LWIN], [RWIN], [MENU] が使用できない.[2]) 使用する code の数 : 104 未使用の code の数 : 24 = 9 + 4 + 11 計 : 128
[1] PC-9821 Rv, Ra のキーの総数は 109 個,PC-9821 Ap は 106 個,PC-9821 La13 は 88 個である.
[2] /usr/src/sys/pc98/pc98/pc98kbd.c の pckbd_read_char() にてこれらのキーの scancode を出力しようとしても反応がない. 従って,これらのキーは入力手段からして違うように思える. いずれにしても,FreeBSD においては,これらのキーは利用できない.
AT 互換機では scancode + 8 = keycode となる部分とならない部分とがあります. us101 の scancode で言えば,(000-088) の範囲は前者,(089-107) の範囲は後者です. jp106 はさらに (108-127) の範囲も使いますが,そこでの両者の対応関係はまちまちです. そこで,scancode + 8 にならない keycode はその番号に色付けしました.
こちらで確認した K/B は Happy Hacking Keyboard Lite 2 (英語配列) です.
Happy Hacking Keyboard Lite 2 は,厳密には 101/102 K/B ではなく,備わっていないキーがあります. (これは一つのキーを [Fn] キーを用いて使い分けている件ではなく,それも含めて提供されていないキーがあるということです.) それらは us.iso.kbd から推測し,下表では色付けしました.
scancode | キーの刻印またはグループ | keycode |
---|---|---|
000 | 未使用 (1 個) | |
001 | ESC | <ESC> = 9 |
002-013 | 英数 (12 個) | <AE01>-<AE12> = 10-21 |
014 | BS | <BKSP> = 22 |
015 | TAB | <TAB> = 23 |
016-027 | 英数 (12 個) | <AD01>-<AD12> = 24-35 |
028 | Enter | <RTRN> = 36 |
029 | LCTRL | <LCTL> = 37 |
030-040 | 英数 (11 個) | <AC01>-<AC11> = 38-48 |
041 | 英数 (1 個) '`', '~' | <TLDE> = 49 |
042 | LSHIFT | <LFSH> = 50 |
043 | 英数 (1 個) | <BKSL> = 51 |
044-053 | 英数 (10 個) | <AB01>-<AB10> = 52-61 |
054 | RSHIFT | <RTSH> = 62 |
055 | Key Pad '*' | <KPMU> = 63 |
056 | LALT | <LALT> = 64 |
057 | SPACE | <SPCE> = 65 |
058 | CAPS | <CAPS> = 66 |
059-068 | f1-f10 | <FK01>-<FK10> = 67-76 |
069 | nlock | <NMLK> = 77 |
070 | Scr Lk | <SCLK> = 78 |
071-082 | Key Pad (12 個) | (省略) |
083 | Key Pad '.' DEL | <KPDL> = 91 |
084-086 | 未使用 (3 個) | |
087 | f11 | <FK11> = 95 |
088 | f12 | <FK12> = 96 |
089 | Key Pad CR | <KPEN> = 108 |
090 | RCTRL | <RCTL> = 109 |
091 | Key Pad '/' | <KPDV> = 112 |
092 | PSc/SRq | <PRSC> = 111 |
093 | RALT | <RALT> = 113 |
094 | HOME | <HOME> = 97 |
095 | UP | <UP> = 98 |
096 | ROLL DOWN | <PGDN> = 105 |
097 | LEFT | <LEFT> = 100 |
098 | RIGHT | <RGHT> = 102 |
099 | End | <END> = 103 |
100 | DOWN | <DOWN> = 104 |
101 | ROLL UP | <PGUP> = 99 |
102 | INS | <INS> = 106 |
103 | DEL | <DELE> = 107 |
104 | Pus/Brk | <PAUS> = 110 |
105 | LWIN | <LWIN> = 115 |
106 | RWIN | <RWIN> = 116 |
107 | MENU | <MENU> = 117 |
108-127 | 未使用 (20 個) |
Happy Hacking Keyboard Lite 2 では,以下のキーは刻印に二種類のキーが併記されています. FreeBSD では,これらは前者 (色付けした方) に設定されています.
scancode | キーの刻印またはグループ | keycode |
---|---|---|
092 | PSc/SRq | <PRSC> = 111 / <SYRQ> = 92 |
104 | Pus/Brk | <PAUS> = 110 / <BRK> = 114 |
こちらで確認した K/B は Happy Hacking Keyboard Lite 2 (日本語配列),Libretto ff 1100 の K/B,および PC-98 配列 K/B です. 前二者は PS/2 かつ jp106 ,後者は USB かつ jp106 の亜種です.
jp106 K/B は,scancode (0-107) の範囲は us101 と同じ keycode です. ただし,ここでは示しませんが,いくつかのキーの keysym 名が異なります. 以下の表では,PC-98 配列とのキーの対応関係を示すためにこの範囲も示しました. (PC-98 配列の欄には jp106 と違う部分のみを記します.)
なお,Happy Hacking Keyboard Lite 2 には 109 個のキーが備わっていないので,jp.106..kbd から推測しました.
それと,keycode の欄に '/' がある場合,その左側が jp106,右側が PC-98 配列のものです. もちろん,後者は当方で設定したものです.
scancode | jp106 | PC-98 配列 | keycode |
---|---|---|---|
108-111 | 未使用 (4 個) | ||
112 | カタカナひらがな | かな | <HKTG> = 208 / <ALGR> = 225 |
113-114 | 未使用 (2 個) | ||
115 | 英数 (1 個) | 英数 (1 個) '_' | <AB11> = 211 / <AB11> = 228 |
116-120 | 未使用 (5 個) | ||
121 | 変換 | XFER | <XFER> = 129 / <XFER> = 158 |
122 | 未使用 (1 個) | ||
123 | 無変換 | NFER | <NFER> = 131 |
124 | 未使用 (1 個) | ||
125 | 英数 '\' | <AE13> = 133 / <BKSL> = 133 | |
126-127 | 未使用 (2 個) | ||
000 | 未使用 (1 個) | ||
001 | ESC | <ESC> = 9 | |
002-013 | 英数 (12 個) | <AE01>-<AE12> = 10-21 | |
014 | BS | <BKSP> = 22 | |
015 | TAB | <TAB> = 23 | |
016-027 | 英数 (12 個) | <AD01>-<AD12> = 24-35 | |
028 | Enter | <RTRN> = 36 | |
029 | LCTRL | CTRL | <LCTL> = 37 |
030-040 | 英数 (11 個) | <AC01>-<AC11> = 38-48 | |
041 | 全角半角 | vf5 | <HZTG> = <TLDE> = 49 / <FK15> = 49 |
042 | LSHIFT | <LFSH> = 50 | |
043 | 英数 (1 個) ']' | <AC12> = 51 | |
044-053 | 英数 (10 個) | <AB01>-<AB10> = 52-61 | |
054 | RSHIFT | <RTSH> = 62 | |
055 | Key Pad '*' | <KPMU> = 63 | |
056 | LALT | <LALT> = 64 | |
057 | SPACE | <SPCE> = 65 | |
058 | CAPS | <CAPS> = 66 | |
059-068 | F1-F10 | f1-f10 | <FK01>-<FK10> = 67-76 |
069 | Num Lock | vf3 | <NMLK> = 77 / <FK13> = 77 |
070 | Scroll Lock | vf4 | <SCLK> = 78 / <FK14> = 78 |
071-082 | Key Pad (12 個) | (省略) | |
083 | Key Pad '.' DEL | <KPDL> = 91 | |
084-086 | 未使用 (3 個) | ||
087 | F11 | vf1 | <FK11> = 95 |
088 | F12 | vf2 | <FK12> = 96 |
089 | Key Pad CR | 未使用 (1 個) | <KPEN> = 108 |
090 | RCTRL | 未使用 (1 個) | <RCTL> = 109 |
091 | Key Pad '/' | <KPDV> = 112 | |
092 | PrtSc, SysRq | COPY | <PRSC> = 111 |
093 | RALT | 未使用 (1 個) | <RALT> = 113 |
094 | HOME | <HOME> = 97 | |
095 | UP | <UP> = 98 | |
096 | PgDn | ROLL DOWN | <PGDN> = 105 |
097 | LEFT | <LEFT> = 100 | |
098 | RIGHT | <RGHT> = 102 | |
099 | End | HELP | <END> = 103 / <HELP> = 103 |
100 | DOWN | <DOWN> = 104 | |
101 | PgUp | ROLL UP | <PGUP> = 99 |
102 | INS | <INS> = 106 | |
103 | DEL | <DELE> = 107 | |
104 | Pause/Break | STOP | <PAUS> = 110 / <BRK> = 110 |
105 | LWIN | <LWIN> = 115 | |
106 | RWIN | <RWIN> = 116 | |
107 | MENU | <MENU> = 117 |
scancode 112, 115, 121 がなぜ異なる keycode に変換されるのかは追求していませんが,同一の環境 (FreeBSD 6.2, X.Org 6.9.0, Libretto) にて実際にこうなっています.
(補足) XFree86 4.4.0 よりも前の version では次のキーの keycode が上の表と異なります.
scancode | jp106 | PC-98 配列 | keycode |
---|---|---|---|
112 | カタカナひらがな | かな | <HKTG> = 120 / <ALGR> = 120 |
115 | 英数 (1 個) | 英数 (1 個) '_' | <AB11> = 123 / <AB11> = 123 |
121 | 変換 | XFER | <XFER> = 129 / <XFER> = 129 |
PC-98 配列 K/B は AT 互換機用の jp106 K/B の亜種であり,使用法もそれに準じます. ただし,両者は完全に対応が付くわけではないので,PC-98 と同様に使うためには jp106 用に提供された諸々の環境を修正する必要があります.
PC-98 配列の Key Pad の '=' と ',' を使えるようにするため,未使用の部分を利用して以下のように修正しました. <KPEQ>, <KPSP> は正規の名称ですが,keycode 134, 135 は当方で勝手に設定した値で,たまたま scancode + 8 の番号が未使用だったのでそれを使いました. 詳細は PC-98 K/B on AT を参照.
scancode | jp106 | PC-98 配列 | keycode |
---|---|---|---|
126 | 未使用 (1 個) | Key Pad '=' | なし / <KPEQ> = 134 |
127 | 未使用 (1 個) | Key Pad ',' | なし / <KPSP> = 135 |
jp106 K/B について集計すると,次のようになります.
キーの総数 : 109 独立なキーの数 : 109 設定できるキーの数 : 109 使用する code の数 : 109 未使用の code の数 : 19 計 : 128
PC-98 配列 K/B について集計すると,次のようになります.
キーの総数 : 109 独立なキーの数 : 108 ([Enter] が独立でない.) 設定できるキーの数 : 106 (Key Pad の '=', ',' 対応後は 108) 使用する code の数 : 106 (Key Pad の '=', ',' 対応後は 108) 未使用の code の数 : 22 (Key Pad の '=', ',' 対応後は 20) 計 : 128
Libretto ff 1100 も jp106 K/B ですが,先の表とは以下のキーが異なります. (キーが無いのです.)
scancode | jp106 | Libretto | keycode |
---|---|---|---|
069 | Num Lock | Fn + F10 | <NMLK> = 77 |
070 | Scroll Lock | Fn + F12 | <SCLK> = 78 |
093 | RALT | 未使用 | <RALT> = 113 / なし |
106 | RWIN | 未使用 | <RWIN> = 116 / なし |