2011/04/01
- 4月になってしまった
- kagisysは私がモタモタしているうちにハードウェアの方が進んできているので、そちらに歩調を合わせます
- いい加減勉強する。コードを書く
- socket programming
- X11 programming
Synaptics touchpad driver
タッチパッドのレスポンスが以前からよろしくない気がしていたので、synapticsのmanを読んだりここを読んだりしていた。MinSpeed、MaxSpeedの値をいじれば良さそうな気がするが、試しに適当に変えてみてもあまり変わった気がしない。静的なパラメータの変更はxorg.conf.d/10-synaptics.confに書けばできる。またsynclientコマンドを使えば動的に設定可能。もう少しパラメータの意味を探る必要あり。
X11、はじめました
とりあえずウィンドウを出す所までは行った。Win32APIを叩いていた頃の記憶がよみがえるような気がする。手始めに練習として、xmma(MMAのロゴを表示する。元ネタは言うまでもなくxlogo)を作ろうと思う。
- どうやら、Win32APIの勘が結構生かせそうなので対比で学んでいくことにする
何よりも最初にXサーバとの接続を行う。XOpenDisplay() <-> XCloseDisplay()
- とりあえず何でも送られてくるWin32とは違って、欲しいイベントを最初に通知しておく
- 拾わなかったものはどうやら祖先に送られるらしい
MappingNotifyイベントは問答無用で全てのクライアントに届くらしい。これがどういうものかはまだ分からない
XEvent共用体というのがWin32でいうところのMSG構造体に当たるようだ。何か凄まじい宣言がなされている。以下Xlib.hから引用
typedef union _XEvent { int type; /* must not be changed; first element */ XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; /* 中略。たくさんある */ XGenericEventCookie xcookie; long pad[24]; } XEvent;
XなになにEvent構造体はすべて先頭の要素にtypeを持っているために、typeを見ることでどのイベントか判別できるようだ
- 個人的には、それをやるなら以下のようにするかなあと思うけど、まあ面倒になるだけか
typedef struct _XEvent { int type; union { XAnyEvent xany; /* ... */ long pad[24]; } u; } XEvent;
- 個人的には、それをやるなら以下のようにするかなあと思うけど、まあ面倒になるだけか
long pad[24];は境界整合性を確保するための詰め物か。unionなので、他のメンバがpadより小さければXEventのサイズはpadのサイズに従うはず
2011/04/03
日々の記録(これ)の公開範囲を広げた
- 公開しても問題なさそうなものの方が多いことに最近気づいたので、外部から読めるようにした
- ページを再構築
2011/04/05