ログイン
編集不可のページディスカッション情報添付ファイル
"clear/note/2011-04"の差分

MMA
1と7のリビジョン間の差分 (その間の編集: 6回)
2011-04-01 01:40:09時点のリビジョン1
サイズ: 669
編集者: clear
コメント:
2011-04-02 00:18:11時点のリビジョン7
サイズ: 2953
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:
 * kagisysは私がモタモタしているうちにハードウェアの方が進んできているので、そちらに歩調を合わせます
 * いい加減勉強する。コードを書く
  * socket programming
  * X11 programming
行 5: 行 10:

=== X11、はじめました ===
とりあえずウィンドウを出す所までは行った。Win32APIを叩いていた頃の記憶がよみがえるような気がする。手始めに練習として、xmma(MMAのロゴを表示する。元ネタは言うまでもなくxlogo)を作ろうと思う。
 * どうやら、Win32APIの勘が結構生かせそうなので対比で学んでいくことにする
 * 何よりも最初にXサーバとの接続を行う。`XOpenDisplay()` <-> `XCloseDisplay()`
 * とりあえず何でも送られてくるWin32とは違って、欲しいイベントを最初に通知しておく
  * 拾わなかったものはどうやら祖先に送られるらしい
  * `MappingNotify`イベントは問答無用で全てのクライアントに届くらしい。これがどういうものかはまだ分からない
 * `XEvent`共用体というのがWin32でいうところの`MSG`構造体に当たるようだ。何か凄まじい宣言がなされている。以下`Xlib.h`から引用
 {{{#!highlight c numbers=no
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`を見ることでどのイベントか判別できるようだ
   * 個人的には、それをやるなら以下のようにするかなあと思うけど、まあ面倒になるだけか
   {{{#!highlight c numbers=no
typedef struct _XEvent {
    int type;
    union {
        XAnyEvent xany;
        /* ... */
        long pad[24];
    } u;
} XEvent;
}}}
  * `long pad[24];`は境界整合性を確保するための詰め物か。`union`なので、他のメンバが`pad`より小さければ`XEvent`のサイズは`pad`のサイズに従うはず

2011/04/01

  • 4月になってしまった
  • kagisysは私がモタモタしているうちにハードウェアの方が進んできているので、そちらに歩調を合わせます
  • いい加減勉強する。コードを書く
    • socket programming
    • X11 programming

Synaptics touchpad driver

タッチパッドのレスポンスが以前からよろしくない気がしていたので、synapticsのmanを読んだりここを読んだりしていた。MinSpeedMaxSpeedの値をいじれば良さそうな気がするが、試しに適当に変えてみてもあまり変わった気がしない。静的なパラメータの変更は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のサイズに従うはず

clear/note/2011-04 (最終更新日時 2011-04-30 19:17:27 更新者 clear)