[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