goo blog サービス終了のお知らせ 

Masatoshi Ito の備忘録

主にザウルス(SL-C3100)に関する備忘録を書いています。更新停滞中&書く内容迷走中…。

SHARP 純正Qtopia環境の左利き対応 その2

2010年06月17日 18時19分10秒 | Zaurus
以前に以下の記事を書いたのですが、補足というか、最近の進捗というか、メモを書きます。

SHARP 純正Qtopia環境の左利き対応
http://blog.goo.ne.jp/ito65/e/013a0b4648aec9dbe1d2b8dabaca2ca9
  • qtopiaのqpestyle.cppを書き換えることで、QPEスタイルのコンボボックスも左利き対応可能
  • 各ソースは、必要な関数のみを残してコメントアウトすると良さそう
  • qeserverに皮を被せることで、設定画面等、標準のアプリもある程度対応可能
  • 今までに書き換えたソース
    • qscrollview.cpp
    • qtableview.cpp
    • qspinbox.cpp
    • qpestyle.cpp
とりあえず、こんなところでということで。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Konqueror Embedded のコンパイル失敗

2010年06月16日 18時30分00秒 | Zaurus
AngstromのOPIE環境でKonqueror embeddedが使用できましたので、SHARP ROM環境でも新しいKonqueror embeddedをコンパイルして使用できないかと思ったのですが、失敗しました。

どうも、Qtのマルチスレッドが必須らしく、その辺りで軒並みコンパイルが失敗します。何も考えずにコメントアウトしていっても、当たり前ですが駄目でした。ソースを解析する気が起きません…。
どなたかコンパイルしてくださる方はいなでしょうか…と他力本願なことを思っていたりしています。

Angstromでコンパイルされたときのパッチが手に入れば、また違うのでしょうか?
もしくはマルチスレッド対応のQtを作り直さないといけないとか…。
何にしても面倒そうです。

とりあえず、参考サイトは以下の通りです。

Konqueror - Konqueror embedded
http://www.konqueror.org/embedded/

Konqueror/embedded - basysKom GmbH
http://www.basyskom.de/index.pl/konqe

Konqueror3-embedded Snapshots
http://www.cirulla.net/kdenox-snapshots/

Feed browser
http://www.angstrom-distribution.org/repo/?pkgname=konqueror-embedded
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

qgmapのPOI用アイコンの自作

2010年04月16日 22時06分54秒 | Zaurus
bucchiさんが公開されているqgmapのPOI用アイコンを自作してみました。

qgmap-0.2.1 リリース | ぷちのいず
http://petit-noise.net/blog/20100313/qgmap-021-%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9

見づらく改良の余地があるつたないアイコンですが、せっかくなので公開してみたいと思います。
また、もしかしたら、どっかで見たことがあるようなアイコンになっているかもしれません…。

肝心の自分用POIデータは、まだ作成途中だったりしますが…。
あと、気まぐれで追加したり変更したるするかもしれません。

画像を右クリックで保存してください。
ファイル名が英数字の羅列になってしまいますので、右のファイル名をコピーして使っていただけると良いかと思います。
star.png
house.png
office.png
wallet.png
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SHARP純正Qtopia環境の左利き対応

2010年01月30日 18時16分30秒 | Zaurus
私は左利きなのですが、以前からZaurusのスクロールバーが左側にあったらなと思っていました。

また、下記サイトに左利き対応の話が記載されていて興味はあったのですが、なんだかんだで個人的には標準のQtopia環境が使いやすいのと、QtoiaやQt/Eをコンパイルし直して入れ替える作業がおっくうだったため、何もしないでいました。

Linuxザウルス開発メモ/Qtopia - Walrus, Visit.
http://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%b3%ab%c8%af%a5%e1%a5%e2%2fQtopia#i12

しかし、Zten改を改造させていただく中で、LinuxにはLD_PRELOADという環境変数を指定することでライブラリ内の関数をフックできることを知りました。
そして最近、このフックを使用すれば、一部分だけlibqte.soを乗っ取ってスクロールバーを左側に変えたクラスと入れ替えられないかと思うようになり、試してみました。
結果は、以下の通りです。

左スクロールバー - ztev改

(2010/03/12追記:よく見るとヘルプボタンがない…。通常起動では問題なさそう。)

左スクロールバー - zeditor


左スクロールバー - launcher


結果的に、Qt/Eの2.3.10のソースを基に、QScrollViewとQTableViewのクラスを書き換えました。
そして、その二つだけでライブラリを作成し、LD_PRELOADで指定してからアプリを起動すると上記のようにすることができました。
具体的には、libqtehook.soというライブラリを作成して、以下のようなコマンドを打ちました。
$ LD_PRELOAD=/usr/local/lib/libqtehook.so /home/QtPalmtop/bin/ztenv
最終的には、シェルスクリプトを噛ましましたが。
QScrollViewは2.3.10で既に対応されているためグローバル変数の初期値を変えるだけで済むかと思っていたのですが、そうではなく結局二つともそれなりにいじりました。
今思えば、Qt/E2.3.2のソースを、上記ソースを参考に改造した方が早かったかもしれません。
また、スタイル等を変更すると位置とかずれるかも。
あと、対応できないアプリもあります。
純正アプリは、ほとんどだめです。

ただ、ネットを検索すると先陣の方はおられたようですが、結果どうなったのかはわかりません。
とりあえず、詳しく書いていませんが(書く気力がないというか・・・)、こんな方法でできたということで参考になればということで。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

μpodとD01NXIIと相性

2010年01月03日 15時35分57秒 | Zaurus
私は、以前GPSとしてμpodを購入しました。そして最近(といっても多分二ヶ月ぐらい前)、EMOBILEのD01NXIIを購入しました。

上記二つに関して、気づいた点と相性について記述したいと思います。ただ、記憶を元に記述しているため、間違い等があるかもしれませんがご了承ください。

まずμpodについて気づいたことを記述したいと思います。

μpodをqgmapやZegaで使用したとき、Zegaのページを参考にさせていただきましたが、タイミングによって認識できたりできなかったりしました。

動作報告のあった機器 - Zega (A GPS navigation software for Zaurus)
http://www.h7.dion.ne.jp/~rasiel/zega.html#Reports

デバイスドライバについて詳しくないのですが、自分なりに調べたところ、usbcore, acm, usb_ohci_pxa27xあたりのモジュールをロードし直せば良さそうだったので、上記を行うシェルを作成して対応していました。
(このシェルは残っていません。結果的に下に記述するシェルに修正されました)

とりあえず、認識しないときは繋ぎ直したり、上記シェルを起動したりで対応していました。

次に、D01NXIIを購入したわけですが、これを使用しているとGPSが使用できないことに気づきました。

調べたところ、acmのモジュールをこちらも使用しており、また、D01NXIIのドライバをインストールすると、このファイルが更新されているようでした。そして、CFスロットにD01NXIIが刺さっていると、μpodを繋げてもうまく動作しないようになっていました。CFスロットにD01NXIIが刺さっていなければ問題有りません。

そのため、最終的に、GPSを使用するときは以下のシェルを実行することで対応することにしました。
#!/bin/bash

count=1
maxcount=$1

if [ "$maxcount" = "" ] ; then
	maxcount=10
fi

read -t 1 LINE < /dev/ttyACM0

while [ "$LINE" = "" -a $count -le $maxcount ] ; do
	echo "try $count"

	sleep 1 ; sudo cardctl eject 0

	sleep 1 ; sudo rmmod acm
		  sudo rmmod usb_ohci_pxa27x
		  sudo rmmod vmb_usb
		  sudo rmmod usbcore

	sleep 5 ; sudo insmod usbcore
	sleep 3 ; sudo insmod acm
	sleep 2 ; sudo insmod usb_ohci_pxa27x

	sleep 5 ; read -t 1 LINE < /dev/ttyACM0

	count=$[$count+1]
done

if [ "$LINE" = "" ] ; then
	echo fail
fi
しばらく経ってしまったため、どう調べたのか、どのサイトを参考にしたのか、よく覚えていません。

余談

これらを調査しているときに、「ls -l /dev/ttyACM0」で表示される「166 0」の数字の意味も調べたと思うのですが、よく覚えていません。
気づいたことは、常に記述していった方がいいなと思いました。

また、この記事を記述するにあたり、少しネットで検索していたのですが、もしかするともっとよい方法がありそうな気がしてきました。
(違うかもしれませんが、「depmod」コマンドとか、怪しい気が…と勝手に思っていたりします)

ただ、現状動作していますので、ちゃんと調べたりする機会は、あまりないような気もします。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする