[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Xmgl



神木です。
X 書くのをサンプルケースとして整理しようかと
思ってたので、ってことはつまりまだ整理不十分ですが...
余談が先。

   >From: suz@hpc.bs1.fc.nec.co.jp
   >X-Ml-Count: 3478
   >Xserver の Imakefile には、
   > *  CFB4DIR  = cfb4  (if the server needs 4 bit cfb)
   >って書いてあるのですが、CFB4 ってのは、使えないんでしょうか?
   >もし使えるとすれば、linux-fb の Xドライバに CFB4 を突っ込むのが

これがまた嫌になるほど遠い話で ... CFB4 って定義だけで実装が
入ってない(ような気がする(^^;)のと、XF86_FBDev って CFB8 以外のこと
何にも考えてませんね。で、実装したとして、xclient が 1,8,15,16,32bpp 以外の
コトを考えて書かれてるとは思えない、ということもあって放棄しました。
# microwindows のサンプルアプリの方も cfb4 を無視してるものが多い...

   >使えないならば、Xvnc ベースでないと苦しそうです。

という訳でこっちの道を進行中っす。
以下が本題です。


   >私は、Xserver は、MGL_SK_RAW だけ使うのかなと思っていました。
   >ひょっとして、MGL_SK_EXTRANSLATED の実装モデルが、Xの keymap のところで
   >使えるものになっていると良いという話 でしょうか?

です。
まず大枠としての話から:

そろそろ MGL2 そのものの発想として

  「MGL2 on X11 の上に実装容易なものは MGL2 on PDA の上で容易に実現可能」

であるようにしたい、という気分があります。
MGL2 on X11 の上では簡単なのに MGL2 on PDA では実現困難(かもしれない)、
という状態は MGL2 アプリの開発を X の上でやってる現状では健康によくないです。

X アプリはおおむね OS independent ですから、MGL2 のモデルとしても
上の一文は整合性があります。

MGL_SK_EXTRANSLATED の実装が始まったことでキーイベントについては
(X の上では当然のように可能だった) up/down event が PDA の上でも
とれるようになったということであり、上記の実現に一歩近付いた...、
ように見えます。

で、MGL_SK_EXTRANSLATED の周囲の実装が実際にはどの程度必要なのか、
ということを考えるに、X server on MGL2 というのは手頃なテストケースなのではないかと。
コンソール周りでけっこういろいろ OS depend な ioctl 叩きまくってるわりに
Xnest や VNCviewer みたいに X の 1 window として実装できる程度には OS independent
なので、X server が使ってるような ioctl は結局は MGL_SK_EXTRANSLATED でも
面倒見ないといけなくなりそうなしろものであろうと思うので。

# ついでに言や、MGL_SK_RAW は on X と on PDA でまだ互換性皆無なので
# 出来るだけ使いたくない ...。


   >  | それと、とりあえず raw key mode で 
   >  | key event を取ってきた時に、key event を
   >  | mgl2 のほうに戻す仕掛けが欲しいな。
   >  | mgsrvcons の F9, F10 の機能をもいちど書き直すのはけっこうバカらしいです。
   >これは?

OS の機能かも〜とは思いつつ。

  scancode -> keycode  -> translated code 

という変換がコードの変換だけに終わるならいいんだけど、
keycode  -> translated code の途中でキーの組合せによっては
システムはいろんな挙動を起こしますよね。
VC を切替えたり、LCD を明るくしたり、suspend したり、etc.
mgsrvcons の F9, F10 での window 切替えもその一つ。

このテの function は一般に keycode  -> translated code の変換の途中で
実行されるので MGL_SK_RAW や MGL_SK_EXTRANSLATED にセットしている間は使えません。
で、F9 の keycode を MGL_SK_EXTRANSLATED で拾ったはいいけどアプリでは
使わないので MGL2 や OS のデフォルトの機能を起動したい、とやる場合に
「MGL2 や OS のデフォルトの機能」を MGL_SK_EXTRANSLATED を使うアプリ
すべてが自前で組み込まないといけないのでは嫌すぎる上に
たいがい OS に依存した書き方になっちゃいます。

という訳で、MGL_SK_EXTRANSLATED で拾ってきた keycode を
 keycode -> translated code の translation に戻すための手続きが欲しい...

X も mediumraw mode 使ってますが、console 切替えが動かなくなるので自前で ioctl() 
叩くコードが入ってますね。MGL_SK_EXTRANSLATED を実装するならそのへんも MGL2 lib 内
に取り込んでおかないと片手落ちの感があります。
# このへんが keymap/linux.c とかでやってたこと。


   >  | F13 〜 F15 を追加しておいたけど、F16 〜 F20 も欲しい。
   >  | でもスペースがない...
   >これは X と共用できる translate の仕組み として必要ということでしょうか?

X の 1 つの窓の中で *使えてしまう* 機能であってかつ原理的に PDA 上でも
それほどコード量的&速度的なオーバーヘッドなく実現できる部分は PDA でも
使えるようにしておきたい、もちろん階層メニューのサポートまでいったらそれは
X そのものなわけで、限度はあります。その限度を Xserver on MGL2 が OS independent
に書けるようになるところに定めてはどうだろう ... ということであって
「X と共用できる translate の仕組み」が出来てくるであろうというのはその結果として。
目的にしてる訳ではないつもり。


で、F13 〜 F20 というのはどーせそのうち使えるようになる R7x0 のアイコンも
MGL2 上のキーコードとして扱えたらいいな、という未来の話だけど、

  「最大公約数的な構造しか扱えない」
のと
  「最大公約数的な構造を扱うようになっている」

との差はけっこうあり、今の MGL2 の keysym table は余裕が
無さ過ぎて OS depend なトコまで手をひろげたような世界を作り辛いのがちょっち、
という話 ... 
# 上半分で書いたことと目的が正反対。

ちょっと昔に image 扱うのに座標値を short -> unsigned short したけど、
互換性や実装上の都合は分かるけどでもセンスとしてはイマイチの、
*こういう変更にせざるをえない* というのがこれからも出てくるかもしれない、
というのは出来れば避けたいっす。実装は小さくていいけど懐は大きくもっていたい。

そういったスクリーニングを raw key mode 周りを使うアプリがでてこない間に
やっておきたいです。

-- 
神木一也