[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mgl2 update (Re: pwctl[12] on docomoba2)
> | > BackSpace と Del が同じ キーコードになるのは 構わないと思うんですが、
> |
> | 同じコードになっているのはemacsを使ったとき不便なので、
> | 直そうかと思うのですが、同じコードじゃないと困る!って方は
> | いらっしゃいますか?
>
> RAW モードで取得できる コードが 14 なのですが、scancode 一般にはこの
> コードは、BackSpace です。
>
> Delete キーの scancode は 一般に 83 なので RAW モード自体の コードが
> 逆になっているみたいです。
まず、i386 の RAW モード(これが本来の RAW モード)で得られるデータは
キーボードからシリアルで送られてきたデータそのままです。
ですから同じキーボードを使えば OS に関係なくおなじデータが
得られます。PS/2 キーボードならばどれでも同じようなものでは
ないでしょうか。
ですから、del キーのコードを 83 にするのは正しいと思います。
次に hpcmips での話ですが、キーコードはそれぞれの機種毎に
異なります。また、VR と TX では実装がかなり異なります。
VR に関してだけいうと、キーコードは sys/arch/hpcmips/vr/vrkiu.c に
あるキーマップで決定されます。
たとえば日本仕様の Mobile Gear II では以下のようになっており、
del と BS のキーコードが 14 になっているのがわかります。
これを 83 に変えれば良さそうです。
試してみて下さい。望みの動作になりますか?
/* NEC MobileGearII MCR series (Japan) */
static char mcr_jp_keytrans[] = {
/*00*/ 77, 28, 25, 52, 21, 48, 44, 57, /* right ent p . y b z space */
/*08*/ 80, 53, 24, 51, 20, 47, 30, 123, /* down / o , t v a nfer */
/*10*/ 75, 115, 23, 50, 19, 46, 17, 221, /* left \ i m r c w menu */
/*18*/ 13, IGN, 22, IGN, 18, 45, 16, 2, /* ^ - u - e x q 1 */
/*20*/ 81, 41, 11, 38, 40, 34, 15, 59, /* pgdn h/z 0 l : g tab f1 */
/*28*/ 121, 39, 10, 49, 6, 33, 3, 37, /* xfer ; 9 n 5 f 2 k */
/*30*/ 72, 27, 9, 36, 5, 32, 7, IGN, /* up [ 8 j 4 d 6 - */
/*38*/ 12, 26, 8, 35, 4, 43, 31, IGN, /* - @ 7 h 3 ] s - */
/*40*/ 58, IGN, IGN, IGN, 14, IGN, 66, 61, /* caps - - - bs - f8 f3 */
/*48*/ IGN, 56, IGN, IGN, 125, 112, 65, 62, /* - alt - - | k/h f7 f4 */
/*50*/ IGN, IGN, 29, IGN, 68, 73, 64, 60, /* - - ctrl - f10 pgup f6 f2 */
/*58*/ IGN, IGN, IGN, 42, 14, 67, 63, 1, /* - - - shift del f9 f5 esc */
↑ココ ↑ココ
};
> あと、RAW モードでは、オートリピートは効かないみたいなのですが、
> i386 などでも同じなのでしょうか?
> ( i386 は 、Linux でも FreeBSD でも オートリピートが効くみたい)
RAW モードでオートリピートが効くのは、まさにキーボードがシリアル
経由でキーコードを繰り返し送出しているからだと思います。
残念ながら VR 系のキーボードドライバ vrkiu.c にはこの機能は
全くありません。エミュレーションすることは可能だと思いますが、
私は今すぐには実装できません。
リピートの on/off、間隔などの設定のことまで考えると MGL 側で
キーリピートを別途実装した方が複数の OS に対応しやすいかも。
どうでしょうか?
Takemura