Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |
2018 | 02 |

2005-03-31(Thu)

LAN経由でファイル共有

データをPCからザウルスに送るのにいちいちUSBケーブルを接続するのは面倒なのでsambaを使用してLAN経由のファイル共有ができるようにしてみました。参考サイトは以下です。



Walrus,Visit - Linuxザウルス/samba

http://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2fsamba



/usr/lib/samba/samba.confというファイルを編集して設定します。

	workgroup = WGROUP

PCと同じワークグループ名を設定

	hosts allow = 192.168. 127.0.0.1

	interfaces = usbd0,wlan0,eth0

無線LAN(wlan0)と有線LAN(eth0)を使用するので、interfaces行に追加します。また一応アクセス制限としてルータの内側(192.168.*.*)のみアクセス可能にする為、hosts allow行を追加します。

これでsambaコマンドを実行すれば起動/停止できますが、ターミナルから実行するのは面倒なので、KeyHelperのメニューランチャーに登録

[menu]
01_smbstart = @exec(TAB)/usr/bin/sudo /etc/rc.d/init.d/samba start
02_smbstop = @exec(TAB)/usr/bin/sudo /etc/rc.d/init.d/samba stop

Windows XPの場合、ランチャーメニューからsambaを起動して「マイネットワーク」-「ネットワーク全体」-「MicrosoftWindowsNetwork」-「ワークグループ名」を開くと「Samba 2.07-ja-2.2(Zaurus)」が見えるので、これをクリックして更にhomeフォルダクリックすると内蔵HDD(InternalDisk)とSD_Cardがあるのでファイルのやり取りが可能になります。


試しに100MBのデータのPCザウルスの転送速度を測定してみました。

・USBストレージ	7.02Mbps
・有線LAN(10Base-T)	4.65Mbps	Planex CF-10T
・無線LAN(802.11b)	2.28Mbps	Planex GW-CF11H

う〜ん、無線LANってかなり速度遅いですね、11gにすれば少しなマシになるのかな?

でも接続は無線LANの方が簡単になったので、細々したファイルの転送は無線LAN動画などの大きなファイル転送はUSBストレージをという使い分けになりそうです。

2005-03-29(Tue)

USBホスト機能でマウスを使う

USBホストケーブルにマウスを繋いで動かしてみました、やり方は簡単、yaktyさんのInputHelper Appletインストールして再起動するだけです。


LinuZau ToolBox - InputHelper Applet -

http://tbox.jpn.org/wiki/linuzau/wiki.cgi?InputHelperApplet


マウスを接続して、しばらくしてから動かすと十字型のマウスカーソルが表示されるので、後はアイコンクリックアプリケーションソフト起動です。3月9日日記で紹介したタイトルバーを細くする操作も簡単にできますね、ホイールでのスクロールもちゃんと機能しています。

アドレス帳やメール、ZEditor等といったソフトで文字を入力する部分では右クリックをすると、編集メニューが出てきてコピーペーストを行うことができました、Qtopiaに元々機能としてあったのでしょうかね。あとターミナル上での右クリックコピー、中ボタンホイールクリックペーストの機能も効いています、すばらしい!

ザウルスを机の上で操作する機会がどれだけあるかわかりませんが、その場合はペン操作よりも使い易いと思いました。


/home/zaurus/Settings/inputhelper.confの[Step]セクションに値を追加することでマウスカーソル移動の設定変更が可能とのこと。

[Step]
normal = 移動幅(通常)
small = 移動幅(Ctrlを押しながら)
large = 移動幅(Shuftを押しながら)
accels = 加速しきい値(リスト)
wrap = ラップモード

accelsとwrapを設定してみましたが、accelsの方は違いがよく判りませんでした。

なお、inputhelper.confを書き換えた場合は再起動するか、qcopコマンド

qcop QPE/TaskBar 'reloadApplets()'

を実行しないと、変更が反映されないみたいです。

2005-03-28(Mon)

USBホスト機能

USBホストケーブルを購入したのでUSBメモリを繋げてみました。


塩田紳二のPDAレポートSL-C3000USBホスト機能を使う

http://pc.watch.impress.co.jp/docs/2004/1122/pda39.htm

の「実際の作業」に沿って作業をすると、ザウルスホーム画面の「ファイル」タブに「本体ディスク」「SDカード」等と一緒に「Storage /dev/sda1」が表示されてUSBメモリの内容にアクセスすることができるようになります。


自分の場合、以下のように変更しました。



/etc/hotplug/usb/usb-storage

#!/bin/sh
. /etc/hotplug/hotplug.functions
if [ ! -L /var/run/usb/%proc%bus%usb%* ]; then
  #mount -t vfat -o umask=000,noatime,iocharset=utf8,codepage=932 /dev/sda1 /mnt/usbmem
  mount -t vfat -o umask=000,noatime,iocharset=utf8,codepage=932 /dev/sda1 /hdd3/Documents/Photo_Files/usb
  if [ $? = 0 ]; then
    ln -s /etc/hotplug/usb/usb-storage.off $REMOVER
    mesg make REMOVER in $REMOVER
  fi
fi

/etc/hotplug/usb/usb-storage.off

#/bin/sh
. /etc/hotplug/hotplug.functions
#umount /mnt/usbmem
umount /hdd3/Documents/Photo_Files/usb
rmmod usb-storage

上の二つのスクリプトはchmod a+xで実行属性をつけること、chown root:rootもしておいた方が良いかもしれません。



アンマウント用にKeyHelper.confに以下を追加

[Menu]
01_USB_exit = @exec(TAB)/usr/bin/sudo /etc/hotplug/usb/usb-storage.off

USBメモリのパーティションの作成し直し

手持ちのUSBメモリを接続してみましたが、いくつかはそのままでは認識しませんでした。これらのUSBメモリザウルスに入っているfdiskコマンドで以下の作業をすることで使用可能になりました。

注意:USBメモリ内のデータはなくなります。全てのUSBメモリがこの作業で認識する保証はありません。



$ su
# umount /mnt/usbmem	アンマウント操作(念の為)
或いは
# umount /hdd3/Documents/Photo_Files/usb


# fdisk /dev/sda

d 4		既存パーティション4情報削除
d 3		既存パーティション3情報削除
d 2		既存パーティション2情報削除
d 1		既存パーティション1情報削除
n p 1		新規パーティション
		プライマリパーティション
		ファーストパーティション
(Enter)		ファーストシリンダー(デフォルト)
(Enter)		エンドシリンダー(デフォルト)
t c		パーティションタイプ選択
		Win95 FAT32(LBA)を選択
p		パーティションテーブル確認
w		変更情報の書き込み

# mkdosfs -F32 /dev/sda1	フォーマット
# exit
$ exit

2005-03-27(Sun)

qshdlg その4

qshdlg 4日目、今日はアイコン登録するのではなくターミナル上から、あるいはKeyHelper等から呼び出すタイプの実験をしてみました。と言っても殆ど同じですけど。


まずはメッセージの表示、sample4というスクリプトを作成

#!/bin/sh

export QSHDLG_APP=qshdlg_smpl4

INPUT=/var/spool/qshdlg/input_$QSHDLG_APP
OUTPUT=/var/spool/qshdlg/output_$QSHDLG_APP
CONTROL=/var/spool/qshdlg/control_$QSHDLG_APP


echo "Message Dialog Open"

qshdlg message -n -h 50 -w 200 2> /dev/null &
while [ ! -p $CONTROL ]
do
done
echo "メッセージを表示します" > $OUTPUT
while read RET < $INPUT
do
done

echo "Message Dialog Close"


実行するとメッセージダイアログが表示して「メッセージを表示します」と出力されます。-h と-w はダイアログサイズの指定です。

while read RET < $INPUT
do
done

で入力待ちにすることで、「OK」か「Cancel」が押されるまでスクリプトの続きを実行するのを停止させています。while文がないとメッセージダイアログが表示していてもスクリプトは先を実行します。while文の有無でターミナルに“Message Dialog Close”が表示されるタイミングに注意。

メッセージダイアログを指定時間だけ表示させたい場合は、-q オプションで秒数を指定します。




次は値の入力、sample5というファイルを作成

#!/bin/sh

export QSHDLG_APP=qshdlg_smpl5

INPUT=/var/spool/qshdlg/input_$QSHDLG_APP
OUTPUT=/var/spool/qshdlg/output_$QSHDLG_APP
CONTROL=/var/spool/qshdlg/control_$QSHDLG_APP

echo "Input Dialog Open"

qshdlg input -n -t "Please Input!" -h 20 -w 250 2> /dev/null &
while [ ! -p $CONTROL ]
do
done
read RET < $INPUT
echo 'reject()' > $CONTROL

echo "Input Dialog Close"
echo "Input Value is "$RET

インプットダイアログを表示して入力された文字を$RETに代入しています、日本語も入力できました。インプットダイアログは上にメッセージビューがくっついてくるのでサイズ調整して見えないようにしています。入力された文字はメッセージビューにエコーバック表示されるみたいなのでこれが嫌な場合は -N オプションパスワード入力のように入力欄の文字も隠したい場合は -P オプションをつけること。

なお、「Cancel」が押された場合は空文字が返されるみたいですね。「OK」や「Enter」で文字を入力した場合はダイアログが閉じないので

echo 'reject()' > $CONTROL

で閉じるようにしています。

2005-03-26(Sat)

qshdlg その3

qshdlg 3日目、簡単な電卓を作成しました。といっても整数の加減算しかできないへタレ電卓ですが(汗

乗除算も試したのですが上手くいきませんでした、ターミナル上の計算では上手くいくのですが、何故だろう?


qshdlg_smpl3というファイルを作って、アイコン登録

起動すると画面下に「1」〜「0」、「+」「-」「=」「Exitボタンが出来るので計算ができます、終了は「Exitボタン

#!/bin/sh

export QSHDLG_APP=qshdlg_smpl3

INPUT=/var/spool/qshdlg/input_$QSHDLG_APP
OUTPUT=/var/spool/qshdlg/output_$QSHDLG_APP
CONTROL=/var/spool/qshdlg/control_$QSHDLG_APP

qshdlg reply -v "1,2,3,4,5,6,7,8,9,0,+,-,=,Exit" -A -f lcfont -t "sample3" -c eucJP -M &

while [ ! -p $CONTROL ]
do
done

echo "メッセージを表示します" > $OUTPUT
echo 'hideDefault()' > $CONTROL

VALUE=0
STR=""

while read RET < $INPUT
do
  case $RET in
    Exit)
        echo 'reject()' > $CONTROL
        ;;
    =)
        VALUE=`expr $STR`
        STR="$VALUE"
        echo $VALUE > $OUTPUT
        ;;
    +)
        STR="$STR $RET "
        echo $STR > $OUTPUT
        ;;
    -)
        STR="$STR $RET "
        echo $STR > $OUTPUT
        ;;
    *)                     # push number(1-0)button
        STR="${STR}${RET}"
        echo $STR > $OUTPUT
        ;;
  esac
done



qshdlg reply -v "1,2,3,4,5,6,7,8,9,0,+,-,=,Exit" -A -f lcfont -t "sample3" -c eucJP -M &

今回はボタンで入力を行うので、qshdlgはreplyモード?で起動します。オプションの-v で表示させるボタンのラベルと値を指定しています。もしラベルと値が異なる場合は-l オプションでラベル名を指定します。




標準で表示される「OK」「Cancel」ボタンは今回は必要ないので

echo 'hideDefault()' > $CONTROL

で表示させなくしています、これはqshdlg起動時に-n オプションを指定することでも可能です。




押されたボタンの値は$INPUTから返されるので、もし数字ボタンと「+」「-」の場合は$STRに数式として追加させて、「=」の場合はexpr コマンドでその数式を評価して値を計算させます。

Exitボタンが押された場合は

echo 'reject()' > $CONTROL

を実行、「Cansel」ボタンを押した場合と同じ動作をするので、これでプログラムを終了させています。

2005-03-25(Fri)

qshdlg その2

ひきつづきqshdlgをいじっています、今日は簡易ランチャーのようなものを作ってみました。

ザウルスGUIアプリケーションプログラムの本体は/home/QtPalmtop/bin/以下に存在します、ここのファイルリストをメニューに表示、選択させて起動させるという至って簡単なものです。

昨日の日記と同様にqshdlg_smpl2というファイルを作成してアイコン登録

#!/bin/sh

export QSHDLG_APP=qshdlg_smpl2

INPUT=/var/spool/qshdlg/input_$QSHDLG_APP
OUTPUT=/var/spool/qshdlg/output_$QSHDLG_APP
CONTROL=/var/spool/qshdlg/control_$QSHDLG_APP

qshdlg custom -C message -A -t "sample2" -c eucJP -M &

while [ ! -p $CONTROL ]
do
done

echo "メッセージを表示します" > $OUTPUT

DIR=/home/QtPalmtop/bin
echo 'label(QString)' '"ファイルリスト"' > $CONTROL
for FILE in `ls $DIR`
do
   echo 'item(QString)' "$FILE" > $CONTROL
done
echo 'showSelect()' > $CONTROL

echo "ファイルリストを表示しました" > $OUTPUT

while read RET < $INPUT
do
   echo "$RET を起動します" > $OUTPUT
   qcop QPE/System 'execute(QString,QString)' $RET
done


昨日は

echo 'item(QString,QString)' ラベル 値 > $CONTROL

を使ってメニュー項目を作成しましたが、今日は

echo 'item(QString)' ラベル > $CONTROL

を使用します、QStringが1個少ないので引数も「ラベル」しかありません、このメニューが選択された場合に返される値は「ラベル」そのものとなります。

for文の中で、/home/QtPalmtop/bin/以下に存在するファイル名を1個ずつ取り出し、それをラベルとしてメニュー作成します。

なお、

echo 'label(QString)' '"ファイルリスト"' > $CONTROL

はセレクトビューに他のメニュー項目と一緒に表示されますが、選択はできない項目となります。メニューのタイトルや区切りのような使い方をさせる感じですか。




メニューからファイル名が選択されると、そのファイル名が返されるのでwhile文の中で

qcop QPE/System 'execute(QString,QString)' $RET

としてqcopコマンドアプリケーションを起動させています。




画面上半分のメッセージビューを消して全面セレクトビューとして表示させたい場合は、qshdlgを起動させている行を

qshdlg select -A -t "sample2" -c eucJP -M &

とすればOK。


注意:

表示されるファイルにはQTアプリケーションではないファイルもあるので選択実行は、「addressbook」「calculater」「datebook」など何をするアプリかがわかるもので実験すること。

2005-03-24(Thu)

qshdlg - シェルスクリプトと対話的に処理を行う

現在シェルスクリプト勉強をしながらザウルスを弄っているわけですけれども、GUIな環境とのやりとりが簡単にできればもっと面白いことができるんじゃないかなと思い、yaktyさんのqshdlgに挑戦してみました。

LinuZau ToolBox -qshdlg-

http://tbox.jpn.org/wiki/linuzau/wiki.cgi?qshdlg


まずは/home/QtPalmtop/bin/qshdlg_smplというスクリプトファイルを作成して、chmod a+xで実行属性をつけます。日本語はeucコードで書くこと。

#!/bin/sh

export QSHDLG_APP=qshdlg_smpl

INPUT=/var/spool/qshdlg/input_$QSHDLG_APP
OUTPUT=/var/spool/qshdlg/output_$QSHDLG_APP
CONTROL=/var/spool/qshdlg/control_$QSHDLG_APP

qshdlg message -A -t "sample1" -M -c eucJP &

while [ ! -p $CONTROL ]
do
done

echo "メッセージを表示します" > $OUTPUT

次にザウルスホーム画面の「設定」タブの「ホーム画面設定」でアイコン登録をします、名前は適当に(例として「qshdlg_smpl」)、アイコン適当なもの、ソフトウェアに上記スクリプト名「qshdlg_smpl」を指定。起動させてみて横倒しに表示された場合は/home/QtPalmtop/apps/Applicasions/UserApp?.desktopファイルアプリケーションタブにアイコンを置いた場合、?は数字)をエディタで開いて

Type=Application
Display=640x480/144dpi,480x640/144dpi

を追加して、再度「ホーム画面設定」を開いて、なにもしないで「OK」を押したら上手くいきました、原因は不明。



アイコンクリックして起動させると下部に「OK」「Cancel」ボタンのあるメッセージビューというウィンドウが開いて、中に「メッセージを表示します」という文字が表示される。「OK」あるいは「Cancel」ボタンを押すと終了する。

ここで

export QSHDLG_APP=qshdlg_smpl

アプリケーション名を設定、ファイル名と同じ名前にする。

qshdlg message -A -t "sample1" -M -c eucJP &

でqshdlgを起動させている。-t はタイトルバーに表示させる文字を指定するオプション、-c は日本語の文字コードを指定するオプション

$INPUT、$OUTPUT、$CONTROLは情報のやり取りを行うパイプを定義、while文でパイプが作成されるまでウェイトさせている。このあたりはyaktyさんのところのサンプルをそのまま利用しています。

echo "メッセージを表示します" > $OUTPUT

最後にecho文の出力を$OUTPUTにリダイレクトさせる。こうすることで任意の文字をメッセージビューに表示させることができます。




これだけではメッセージを表示してボタンを押すと終了してしまうので、qshdlgを起動させている行を以下のように「message」の部分を「custom -C messsage」と書き換える。

qshdlg custom -C message -A -t "sample1" -M -c eucJP &

こうすることで、「OK」ボタンを押しても終了しなくなります。




次に入力系の記述。スクリプトqshdlg_smplの最後に以下を追加します。

echo 'item(QString,QString)' '"メニュー1"' 1 > $CONTROL
echo 'item(QString,QString)' '"メニュー2"' 2 > $CONTROL
echo 'item(QString,QString)' '"メニュー3"' 3 > $CONTROL
echo 'showSelect()' > $CONTROL

アイコンクリックすると画面の下半分がセレクトビューとなり

メニュー1
メニュー2
メニュー3

が表示される、これは上下カーソルキーと「OK」で選択可能なメニュー項目となります。

item(QString,QString)はメニューのラベルと値を設定している、例えば1行目の場合ラベル「メニュー1」を表示して、もし選択された場合は値「1」を返す。最後にshowSelect()の行をつけるのがポイント、これでセレクトビューが作成されてメニュー項目が表示されます。




更に返された値の処理系を記述。スクリプトqshdlg_smplの最後に以下を追加

while read RET < $INPUT
do
  case $RET in
       1)
           echo "$RET:メニュー1が選択されました" > $OUTPUT
           ;;
       2)
           echo "$RET:メニュー2が選択されました" > $OUTPUT
           ;;
       3)
           echo "$RET:メニュー3が選択されました" > $OUTPUT
           ;;
   esac
done

セレクトビューで選択されたメニューの値は$INPUTから返されるので、その値を$RETで受けてcase文で場合わけしている。ここでは返された値(1〜3)に応じた文字をメッセージビューに表示させている。つまり、「メニュー1」を選択すれば「メニュー1が選択されました」と表示されることになります。




ここでshowSelect()の行を

echo 'showReply()' > $CONTROL

と書き換えてみます。こうするとセレクトビューの代わりに「メニュー1」「メニュー2」「メニュー3」のボタンが追加されて、メニューの代わりにボタンで選択が可能になります。




この様にqshdlgを使うと単純なシェルスクリプトGUIな入出力系が簡単に作成可能となります。自分のようなまともなソフトウェアを作成するスキルや根性が無い人間にとってqshdlgは非常にありがたい存在ですね(汗


注意事項:

2005-03-22(Tue)

kino2用の動画作成

阿川さんの2004年12月26日日記にPocketDivXEncoderが紹介されていた。操作も簡単でなかなか良さげ。

ザウルスはビュースタイルでの表示の方が動画の再生パフォーマンスが良いらしい、だから動画エンコードの段階で動画データを90度回転してしまえというわけ。

PocketDivXEncoder

http://divx.ppccool.com/

2005-03-21(Mon)

スペシャルカーネルを試す

前から気になっていたスペシャルカーネルを試してみました。

SL-B500/C700/C750/C760/C860/6000/C3000 special kernel

http://tetsu.homelinux.org/zaurus/kernel/index.html

qclockchange-for-c3000

http://www.piro.hopto.org/~piro/pukiwiki/pukiwiki.php?%5B%5B%A5%AB%A1%BC%A5%CD%A5%EB%A5%D1%A5%C3%A5%C1forC3000%5D%5D

BatteryPlus

http://www.piro.hopto.org/~piro/pukiwiki/pukiwiki.php?BatteryPlus



起動時にペンギンのロゴが出るようになりました(笑

qclockchange-for-c3000で現在の設定値をみることができ、BatteryPlusで設定の変更が簡単に行えます。

Satoshi村さんのところのZBenchで内部の速度、コマンドで100MBデータの転送速度を計ってみました。なおZBenchは3回の平均、コマンドは2回の測定した結果です。

条件A:ノーマルカーネル V1.11JP
条件B:スペカV17h CPUクロック416MHz システムバス208MHz LCD104MHz (default)
条件C:スペカV17h CPUクロック624MHz システムバス312MHz LCD156MHz

                   条件A    条件B    条件C 単位秒
[    Integer     ]  4.962     4.928     3.261
[ Floating point ]  6.939     6.889     4.558
[   Draw Text    ] 13.310    13.121     8.987
[  Draw Graphic  ] 11.593    11.453     7.610

[ 100MB to    SD ]  28 28     31 31     22 26
[ 100MB from  SD ]  39 38     33 33     30 30
[ 100MB to   HDD ]  66 65     38 34     28 28
[ 100MB from HDD ]  56 56     56 55     51 51

command:
dd if=/dev/zero of=${DIR}/100M.dat bs=1M count=100 2> /dev/null
cat ${DIR}/100M.dat > /dev/null

  ${DIR} is /mnt/card or /hdd3

ZBenchの結果ではクロックの影響がもろに現れています。データ転送もクロックが高いと良い結果がでていますが、クロックが同じ条件Aと条件Bでも差が出ているのはよく判らないなぁ。

また条件Cにすると画面のチラツキが目だってきますね、ちょっと危険かも(汗

あとkino2でVGA,12fps,400kbpsの動画再生をさせてみました、クロックアップさせるとさすがにコマ落ちは少なくなったのが実感できましたが実用という面ではやはり今一歩という感じでした。


オリジナル環境への復帰

2005-03-19(Sat)

PortaBaseデータをアドレス帳へ

好きな項目の追加削除ができない、デザインが気に入らないなどの理由でアドレス帳を使用せずにPortaBaseで情報を管理していたわけですけれども、アドレス帳にデータを入れておけばメールを書くときにリストがから相手のメールアドレスを選べるんだよね。これだけは便利なのでメールアドレス+αの情報をPortaBaseからアドレス帳にコピーするスクリプトを作ってみました。


使用するツールは以下の通り

zdbat - LiniZau TollBoxより入手

 http://tbox.jpn.org/wiki/linuzau/wiki.cgi?zdbat

nkf - Walrus,Visit.より入手

 http://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2f%a5%c0%a5%a6%a5%f3%a5%ed%a1%bc%a5%c9


#!/bin/sh
#
# From PortaBase phone data to AddressBook
# (name,company,E-mail)
#

DTMDIR="/home/zaurus/Applications/dtm"
PBDIR="/home/zaurus/Documents/application"
PBFILE=${PBDIR}/phone.pob

TMP1=${PBDIR}/tmp1.tmp
TMP2=${PBDIR}/tmp2.tmp
TMP3=${PBDIR}/tmp3.tmp

cd $DTMDIR
rm SLADR*.bak
for SLADR in `ls SLADR*`
do
   mv $SLADR ${SLADR}.bak
done

cd $PBDIR
portabase tocsv $PBFILE $TMP1
nkf -e $TMP1 > $TMP2

CARDID=0
echo CARDID,FULL,LNME,CPNY,MAL1 > $TMP3

while read LINE
do
   LNME=`echo $LINE | cut -d, -f 5` # name
   CPNY=`echo $LINE | cut -d, -f 2` # company
   MAL1=`echo $LINE | cut -d, -f 7` # E-mail

   FULL=${CPNY}" "${LNME} # cpmpany name

   if [ -n "$MAL1" ]; then   # if exist E-mail
      echo $CARDID,"$FULL",$LNME,$CPNY,$MAL1 >> $TMP3
   fi
done < $TMP2


/home/QtPalmtop/bin/qcop QPE/System 'execute(QString,QString)' addressbook
sleep 10
/home/QtPalmtop/bin/qcop QPE/InputHelper 'mouse(QString)' "click 624 8"

zdbat address -w < $TMP3
rm $TMP1
rm $TMP2
rm $TMP3

以下はポイントの説明

for SLADR in `ls SLADR*`
do
   mv $SLADR ${SLADR}.bak
done

アドレス帳のデータファイル(/home/zaurus/Applications/dtm/SLADR*)を.bak付きに変更。zdbatを使用して書き込むと追加という形になる、本来は既にある情報を比較して新規情報だけ書き込むようにしたほうが良いのだろうけれど面倒なので新規状態からの作成とします。元のデータは削除しちゃっても良いのだけれど、一応.bakをつけて保存。



portabase tocsv $PBFILE $TMP1
nkf -e $TMP1 > $TMP2

PortaBase用のデータファイル$PBFILEをcsv形式にして$TMP1に書き出しする、このファイル日本語はUTF8なのでnkfにてEUCコードに変換したものを$TMP2に書き出しする。なおPortaBaseで利用できるコマンドは、portabase --helpで確認できます。



   LNME=`echo $LINE | cut -d, -f 5` # name
   CPNY=`echo $LINE | cut -d, -f 2` # company
   MAL1=`echo $LINE | cut -d, -f 7` # E-mail

   FULL=${CPNY}" "${LNME} # cpmpany name

   if [ -n "$MAL1" ]; then   # if exist E-mail
      echo $CARDID,"$FULL",$LNME,$CPNY,$MAL1 >> $TMP3
   fi

$TMP2のcsvデータから一行ずつ読み出して、そのうち個人名(5番目)、会社名(2番目)、メールアドレス(7番目)を切り出しする。また$FULLには“会社名 個人名”のデータを代入する。$FULLがアドレス帳の個人名欄、或いはメールの宛先選択リストの名前欄になります。自分の場合、会社名と担当者名は一緒表示されていた方が便利なのでこのようにしました。もしメールのデータが存在していたら、これらのデータを$TMP3に書き出しします。

$TMP3の内容は下記のようになります。なお、個人名アドレス帳の個人名(姓)欄に入れました。

CARDID,FULL,LNME,CPNY,MAL1
0,会社名1 個人名1,個人名1,会社名1,メールアドレス1
0,会社名2 個人名2,個人名2,会社名2,メールアドレス2
0,会社名3 個人名3,個人名3,会社名3,メールアドレス3


/home/QtPalmtop/bin/qcop QPE/System 'execute(QString,QString)' addressbook
sleep 10
/home/QtPalmtop/bin/qcop QPE/InputHelper 'mouse(QString)' "click 624 8"

最初にアドレス帳のデータファイルを別名にしてしまったので、アドレス帳を一度起動させて新規データファイル(SLADRS.BOX,SLADRS.IDX)を作成させ、10秒後に右上の×をクリックさせて終了。このファイルがないとzdbatでデータが書き込めない。



zdbat address -w < $TMP3

アドレス帳に$TMP3のデータを書き込みする。



アドレス帳のデータを別名にして新規作成してしまうなど乱暴なことやっているので事前にバックアップは必要、またアドレス帳の高速起動のチェックを外しておくこと。とりあえずメールの宛先選択でリストが表示されるようになったので満足。

2005-03-18(Fri)

kino2 - QVGA映像をフルスクリーン表示

3月14日の日記で、kino2でQVGA映像をフルスクリーン表示できないかと書いたところ、kou1さんからコメントをいただきました、どうもありがとうございました。

kou1さんは阿川さんのZPlayerで実現しているとのことですがkino2でも同じ方法でフルスクリーン表示ができましたので、その手順を書きたいと思います。


まずkino2本体のシンボリックリンクとしてkino2.qvgaを作成する。

$ su
# cd /home/QtPalmtop/bin
# ln -s kino2 kino2.qvga

ターミナルコマンドを使用しなくても、Tree!Explorer QTを使用して、「コピー」→「リンク貼り付け」→「名前の変更」で同じことが可能です。(アイコンを長押しして出てくるメニューで「ルート権限で実行」にチェックを入れて操作すること)


次にザウルスのホーム画面の「設定」タブの「ホーム画面設定」で新規アイコンを登録、名前は「kino2.qvga」、アイコン適当なものを選択、ソフトウェアは上で作成したリンクファイル「kino2.qvga」を選択する。できたアイコンを長押しして出てくるメニューで「アプリケーションVGA(480x640ドット)の画面に最適化して実行する」にチェックが入っていることを確認、これが重要


あとは、作成したkino2.qvgaアイコンクリックして起動、画面が横倒しで再生ボタンの三角マークが表示しなくなるけど気にしないでファイル選択して再生させます。これでしっかりフルスクリーン表示になります、すばらしい!! AC接続にしているとタスクバーの電池のアイコンがピコピコするのはご愛嬌ですか(笑

なお、カーソルの機能も90度回転、上下で早送/巻戻、左右で音量調節になるので注意。




こうなるとリモコンでも操作させたくなってくる、3月16日の日記で再生ボタンを押すとMusicPlayerが起動する設定にしたのでkino2動作中は再生/一時停止機能にするようにKeyHelperの設定を追加。

[Launch2_kino2]
0x201c = @qcop(TAB)QPE/InputHelper key(QString) "click F33"

[Launch2_kino2.qvga]
0x201c = @qcop(TAB)QPE/InputHelper key(QString) "click F33"

リモコンの早送/巻戻は、kino2の「File」→「preferences」の「Controls」タブで定義する。具体的には「Use Extera Keymap」にチェックを入れ、定義させたい機能の一番右側で「Press new key」を選択してリモコン操作をするとそのキーコードが定義される。早送/巻戻は±10秒、±1分、±10分があるので好きなところに定義を行う。


MoviePlayer用に作成したファイルも見れますし、早送/巻戻もしっかり動作するのでザウルス動画を見るのには最高の環境かもしれません。次は阿川さんのZPlayerも試してみたいと思います。


追記:

ぴろさんのページで、kino2_0.4.2p5が公開されてました。

http://www.piro.hopto.org/~piro/pukiwiki/pukiwiki.php?%5B%5BKino2%5D%5D

インストールしなおしたら、「Use Extera Keymap」のチェックが外れていたので注意。

2005-03-17(Thu)

WgetでHPまるごとゲット

SL-C3000ネットサーフィン(すでに死語?)をしていると興味があって保存しておきたいページ、あるいは時間があるときにオフラインでゆっくりと読みたい小説サイトなどに出くわすときがある。このような場合にはそのページを保存して置くのだけれども標準のNetFrontのページメモ機能では対象ページ1ページだけを保存する機能のため、複数ページにわたってリンクで接続しているHPには対応できない。

そこでザウルスにもともと入っているwgetというコマンドを使って対象HPをまるごと入手してみる。ただし取り込みを行う度にターミナルからコマンドをたたくのは大変なので、直ぐに実行できる方法にする。また、後で参照が楽になるように取り込むHPファイルの置き場所は本体ディスクの下のWeb_Files/Pagememo_Filesにする。

まずシェルスクリプト /home/zaurus/Documents/Web_Files/Pagememo_Files/get.shを作成。スクリプトは他の場所に置いても良いがその場合はchmod a+xを留意しておく。

#!/bin/sh

URL=`qcf -w`

cd /home/zaurus/Documents/Web_Files/Pagememo_Files
wget -k -q -nc -np -L -r -l=5 -R .jpg,.bmp,.png $URL

IMkit-Anthyの単語登録のときと同様にyaktyさんのqcfを使用してURLクリップボード経由で取得する。wgetオプションは下記の通り、ただしこれは状況や好みに応じて変更しても良い。

wgetオプションは、wget --helpの出力と下記の解説ページを参考にした。ここではhtmlファイルのみを取得するようにしたが画像のみ、音楽ファイルのみ取り込みということも可能のようだ。


次にKeyHelperのMenuランチャーにこのシェルスクリプトを登録する。日本語はUTF8で書くこと。

[Menu]
01_HP取得 = @exec(TAB)/home/zaurus/Documents/Web_Files/Pagememo_Files/get.sh

NetFrontあるいはOperaで取り込みしたいHPを表示させ、そのURLを「Fn+C」でクリップボードコピーする。Operaの場合GoToMenuを開くと既に現URLが選択された状態になっているのでコピーに便利。次にKeyHelperのランチャーメニューからHP取得を選択すると、タスクバーにget.shと一時表示されて取り込みが開始され、終了するとタスクバーに0:exitの表示が一瞬あらわれる。


取り込まれたhtmlファイルは、本体ディスクの下のWeb_Files/Pagememo_Files以下にURLの構造のフォルダが作成されて、そこに保存される。例として対象をhttp://www.aaa.ne.jp/bbb/index.htmlとした場合は、www.aaa.ne.jpフォルダの下のbbbフォルダの下に各htmlファイルが置かれる。ここはザウルスのホーム画面の「ファイル」タブで表示が可能なので、ここからファイルを直接選択してブラウザを起動させることもできる。


参考HP

Wgetを使おう的ページ

http://www.geocities.jp/horiuchimasaru/wget.html


LinuZau ToolBox - qcf -

http://tbox.jpn.org/wiki/linuzau/wiki.cgi?qcf

2005-03-16(Wed)

MusicPlayerアップデート(Ver.2.0)

C3000用のMusicPlayerがバージョン2.0にアップデートした。近日発売のSL-C1000と同じバージョンになるようだ。

http://www.zaurusworld.ne.jp/menu21/music/

  • ライブラリ機能でザウルス内に取り込んだ音楽を一元管理
  • 複数プレイリストに対応
  • WMP同期対応
  • スマートプレイ機能、時間、曲数、再生時間を決めて再生。お気に入りの1曲が最後に必ずかかる「ラスト一曲」も指定可能
  • エフェクト画像表示、曲にあわせたイメージを選んで表示することができる
  • 評価&コメント機能、曲の評価,コメントのできる機能

インストールするとオリジナルのMusicPlayerのプログラム他各種データが/home/QtPalmtop/etc/musicplayerOrg.tarに保存される。アンインストールすると保存したデータを利用して元の状態に復活させる。


ライブラリ機能

表示メニューにファイルリスト、プレイリストの他にライブラリリストが追加される。ライブラリリストは音楽データ内のタグ情報からアーティスト、アルバム、ジャンル情報を読み出してフォルダ分類してくれる、例えばあるアルバムだけを聞きたい場合はライブラリリストのアルバムフォルダの中から聞きたいアルバムフォルダを開いて再生すれば良い。

ライブラリの検索対象は、本体ディスクのMusic_Files、WMP同期フォルダSDカードCFのほかに一ヵ所選択可能。いままではアルバム毎にフォルダ分けしていたけど、Music_Filesフォルダに全ての曲をいれたほうが便利になりそう。


複数プレイリスト

いままで非公式の機能だった複数プレイリストが正式にサポートされた。ただしプレイリストの保存場所が変わったのに自動で引き継いでくれないみたいなので、自分で引継ぎ操作する必要あり。

具体的には、/home/zaurus/Documens/.playlist/以下のファイルを/home/zaurus/Applications/MusicPlayer/.playlist/以下へ移動させる、ザウルスホーム画面の「ファイル」では操作できないのでTree!Explorer QTなどで操作するのが良い。この保存場所の変更で標準のバックアップ/リストアでの保存対象になったので個別にバックアップする必要はなくなる。

また、ライブラリ検索対象でない場所に置いてある音楽データも登録できました。


エフェクト画像

単位あるいはアルバム、アーティスト毎に好きな画像表示が可能になる。CD画像などを表示させるのが良いかも。設定ファイルは音楽ファイルと同じ場所のsqnフォルダ内の音楽ファイル名と同名のファイル


スマートプレイ

指定時間まで、曲数、再生時間を決めて再生することが出来る。特にその範囲内で最後の一曲に好きな曲を選択可能な「ラスト一曲」というのは面白い機能だと思う、BGM&擬似タイマーみたいな使い方ができる。


コメント機能

各曲にコメントと星5段階評価を追加可能。データは/home/zaurus/Applocations/MusicPlayer/.liblary.attr2に保存されるみたい。


その他

自分の環境だけかもしれないけど、リモコンの再生ボタンで蓋を閉じた電源オフの状態からの起動ができなくなった。砂時計アイコンは表示するのだけれどね。これでは不便なのでKeyHelperでリモコンの再生ボタンを押したら起動するように定義する。(あくまで暫定ね)

[Launch2]
0x201c = Applications/musicplayer

[Launch2_musicplayer]
0x201c = @qcop(TAB)QPE/InputHelper key(QString) "click F33"

[Launch2_movieplayer]
0x201c = @qcop(TAB)QPE/InputHelper key(QString) "click F33"

2005-03-14(Mon)

ザウルスで動画 その2(kino2)

DivX動画が再生可能ということなので、kino2というプレーヤーを試してみる。これはmplayerというCUIのプレーヤーにGUIスキンを被せたもののようだ。

ぴろのページ-kino2-

http://www.piro.hopto.org/~piro/pukiwiki/pukiwiki.php?%5B%5BKino2%5D%5D

から、kino2_0.4.2p3-bvdd_arm.ipk をダウンロード。/etc/rc.d以下にスクリプトインストールされるので一応再起動させる。

  • 最初再生させるといきなり画面が真っ白で音も無し……、これはメニューバーのFile→PreferencesのVideoタブでUsePXA27X(bvdd) overrayのチェックを外すと再生できた。ってこのオプションC3000用ではないのだろうか?
  • WME9で作成したQVGAデータ、DivXザウルス用に作成したQVGAデータ(400bps,12fps)は通常画面では問題なく再生可能。
  • PC用に作成したDivXVGAファイルは再生されるものの、コマ落ちがひどく実用的ではない。フレームレートを適正な値にすれば問題ないのか?
  • メニューバーのView→Scale to Screenにチェックをいれないと画面左下に画像が表示される、チェックを入れると中央に表示されるが他の部分は真黒になる。
  • MoviePlayerで問題のあった早送りは、左右カーソルキーで問題なく行えるようだ。
  • Cancelキーで再生を中止させると映像が残ってしまうのでメニューが見えなくなる。それらしい場所をタップするとメニューが表示されるので単に画面の書き換えをしていないだけのようだ。画面左下のQTメニュで縦横表示切替を2回行うことで対応。
  • QVGAデータ再生でフルスクリーンにするにはどうしたら良いのだろう? 

同じくぴろさんのところにあったkino2_0.4.2p3-iwmmxt_arm.ipkも試したがどのファイルも再生してくれなかった。2つのipkファイルの違いはわかりません。

う〜ん、DivXデータの再生が可能、早送/巻戻が問題なくできるなどMoviePlayerよりも優れた点もあるけれども、ちょっと実用的ではないなぁ、せめてQVGAデータのフルスクリーンが可能なら使えそうなのだけれど。

今後の改善に期待といったところでしょうか。

kou1kou1 2005/03/18 01:33 お初に失礼します。kou1と申します。
自分は阿川さんの所で公開しているZplayerを使っています。
自分はスペシャルカーネルを使っていないので、no-iwmmxtの方を使っていますが、それでもbvddドライバを使用すると再生できない場合が多いので、fbdevを使うために以下のようにしています。
1、/home/QtPalmtop/bin/zplayer のシンボリックリンクを別名で作る。
ln -s /home/QtPalmtop/bin/zplayer zplayer.qvga
2、ランチャーに先程作ったzplayer.qvgaを登録する。
3、ランチャーに登録されたzplayerは「アプリケーションをVGA(480x640)の画面に最適化して実行する」にチェックが付いた状態になっているはずなのでそれを確認

3をやるのはfbdevだと320x240のムービーをフルスクリーンで再生するためです。
これで結構使えています。
突然失礼しました。御参考になれば幸いです。

hakehake 2005/03/18 11:13 kou1さん、はじめまして。
コメントありがとうございました、kino2で試したところフルスクリーンできました!!
アプリで出来ないところをザウルス側の機能で実現してしまうというところが眼から鱗ですね(笑
早速最新の日記に書かさせていただきました。

kou1kou1 2005/03/19 00:18 どもです。kou1です。
日記へのお取り上げありがとうございました(^^

w100のドライバが使えるC860とかだったらここら辺の事は要らないんですよね。
阿川さんがmplayerのbvddのドライバを仕上げてくれるのに期待中です(w

過去の日記も少しづつみてます。
自分も少しまとめたりしてたんですが、凄く綿密にまとめてて凄いなぁと思います。

hakehake 2005/03/19 12:03 mplayerこれからもどんどん進化して行きそうですね、楽しみですね(^^

日記はタイトルの通りあちこちで集めた知識を書き綴ってます、あまり大した情報ではありませんが、少しでもザウルスユーザーの方のお役に立てればと思います。

2005-03-12(Sat)

ザウルスで動画(MoviePlayer)

SL-C3000動画を見るためには、ザウルスで再生できる形式に変換する必要がある。もともとPC用のデータを持っているのでそれを用いて変換してみる。

juyama.com(zaurus動画の作成 WMV編)

http://www.juyama.com/index.html

モバチキ(母艦でモバイル向けデータを作成する)- WMEL+WME9で楽々SL-C750用動画変換

http://mobachiki.com/windowsce/

http://mobachiki.com/windowsce/bokan/wmel.htm

TRICKSTERさんのWMEL

http://hp.vector.co.jp/authors/VA012754/


上記のサイトを参考にPCに対して以下の作業を行う


パラメータは画面サイズ320x240、フレームレート12fps、ビットレート400kbps(+音楽56kbps)で変換。変換時間は自分の環境では再生時間の50〜70%くらいかかった。WMELを使用すれば複数のファイルを一括で変換できるのでPCが空いている時に変換させれば便利かもしれない。

で、できたファイルを標準のMoviePlayerで再生してみる。感想としては思っていたよりも良いですね、QVGAなんで画像が小さいと思いましたが全画面表示で見れば問題ないし、12fpsなんでもっとカクカクするかと思ったら意外と見れます(もっとも動きの激しい場面はちと辛いかも)、おまけにリモコン(CE-RH2)もちゃんと使えますね。

問題点としては、毎回ではないのですがスライドバー?や左右カーソルキーで早送りをすると再生を中止してしまう点、これは映画など長時間の動画を途中から見たい場合は致命的、なんとかならんのか〜。まぁザウルスで長時間動画をみることはあまりないと思うのでいいか。


メモ

  • 全画面再生中にスペースキーを押すと通常画面再生に戻る
  • 再生中の早送/巻戻は15秒単位で行われるが、/home/zaurus/Settings/MoviePlayer.confのSettingsセクションのStepの値を変更すれば変えられる。ただし再生中止の確率が高くなるような気がする。(早送ボタンを押す間隔を大きく(5秒以上?)すれば良さそう)

2005-03-11(Fri)

ザウルス新機種

ザウルスの新機種SL-C1000が発表になりました、2005年3月18日発売とのこと。

http://www.sharp.co.jp/corporate/news/050311-a.html


SL-C3000から内蔵HDDを削除してFlashを128MBに増量

どこかで読んだけれどSL-C3000を分解したら基板にFlashを乗せられるように設計されていたということなので、ハード的にはそのまま流用のようです。

ソフト的にはビジネス文書テンプレートデータベース、乗り換え案内などが標準でインストールされているらしい。


うーん、SL-C860に比べてあまり魅力を感じないなぁ、これが発売ということはSL-C860は生産終了なのだろうか?

2005-03-10(Thu)

指定時間にコマンドを実行させる

automailやQTアラムーチョのように指定時刻にコマンドを実行させる手段を調べてみた。

指定時刻に実行する機能はatdが行っているらしい、/var/spool/at/以下にファイル名「指定時刻(1970年からの秒数)」.「任意の拡張子?」のスクリプトファイルを登録するとatdがこれを監視していて実行させているらしい。

実際にどの様に登録を行うかというと以下の2通りの方法がある。


atコマンドによる登録

SL-C3000には登録用にatというコマンドが用意されている。使用方法は

$ su
# echo command | at 2005.03.10-21:34:00

のように実行させたいコマンドを時刻指定したatコマンドへパイプで接続させる。



シェルスクリプトによる登録

atコマンドによる登録では指定時間に1回の実行しかできない。一定間隔で実行させるためにはatコマンドと同等の役割を行うスクリプトを作成する必要がある。一例として/home/QtPalmtop/bin/at_regi.shを作成してみた。

#!/bin/sh

ATD=/home/QtPalmtop/bin/atd
ATSPOOL=/var/spool/at

case "$1" in
     -d)
	EXETIME=`date -d "$2" +%s`
	;;
     -s)
	EXETIME="$2"
	;;
      *)
	;;
esac

ATFILE=/var/spool/at/${EXETIME}.444
NEXTTIME=`expr $EXETIME + $3`

echo \#!/bin/sh > $ATFILE
echo rm \$0 >> $ATFILE
echo su zaurus -c \""$4"\" >> $ATFILE
echo export TZ=Asia/Tokyo >> $ATFILE
echo /home/QtPalmtop/bin/at_regi.sh -s "$NEXTTIME" "$3" \""$4"\" >> $ATFILE

chown root:qpe $ATFILE
chmod a+x $ATFILE
$ATD $ATSPOOL

使用方法は以下

$ su
# at_regi.sh -d yyyy.mm.dd-HH:MM:SS interval command
  • 引数で与えられた実行時間yyyy.mm.dd-HH:MM:SSは、dateコマンド1970年からの秒数に変更させて登録ファイル名$EXETIMEとする
  • 登録ファイル名は、${EXETIME}.444
  • 次回実行時間$NEXTTIMEを$EXETIME+intervel($3)で計算
  • /var/spool/at/${EXETIME}.444のファイルを作成する
  • パーミッションとオーナーの変更
  • /home/QtPalmtop/bin/atd /var/spool/atでファイルの登録を行う、これを実施しないと指定時刻になっても登録ファイルが実行されない

登録内容は以下のとおり(automailが作成する内容に準じた)

#!/bin/sh
rm $0
su zaurus -c "command"
export TZ=Asia/Tokyo
/home/QtPalmtop/bin/at_regi.sh -s $NEXTTIME interval "command"
  • 登録ファイルの削除
  • commandの実行
  • at_regi.shを呼び出して次回実行の登録を行う。


このようにするとautomailとほぼ同じ機能を持たせることができる。また、3月7日の日記で紹介したautomailでは登録ファイル拡張子が.333固定のため複数のコマンド登録させる場合、実行時間が重ならないように注意をする必要があったが、このスクリプトでは拡張子引数に追加すれば登録するコマンド各々で別の拡張子を持たせることも可能である為、そのような注意をしなくても良くなる。

あるいは実行回数を引数にして

$NEXTCNT=`expr $COUNT - 1`
if [ $NEXTCNT -eq 0]; then 〜

のようにすれば指定回数の実行も可能だと思う。

2005-03-09(Wed)

タイトルバーを細く

tqdの超ズボラ日記 3月3日タイトルバーを細くさせるTIPSが載っていたので、試してみる。

[Launch]
B = @qcop[TAB]QPE/InputHelper mouse(QString) "click 320 4 right"

面白い、他にも何かありそうですね。InputHelperって右クリックもできたんだ。

シェルスクリプトでのQTアプリの操作

automailでのメールの自動送受信のようにQCOPメッセージが判明している場合をその記述をすれば良いけれども、QCOPメッセージが判っていない操作や細かい操作が必要な場合はどうすればよいかというと、InputHelperの機能を利用してキー操作(あるいはペン操作)をそのまま順番に記載すればOK。


例えばMusicPlayerのリストの2曲目を演奏させるキー操作は、「↓」「Enter」だから

#!/bin/sh
export LD_LIBRARY_PATH=/home/QtPalmtop/lib
export QPEDIR=/home/QtPalmtop
export QPEGROUP=qpe
export QPEUSER=zaurus
export QTDIR=/home/QtPalmtop

QCOP=/home/QtPalmtop/bin/qcop


${QCOP} QPE/System 'execute(QString,QString)' musicplayer
# echo QPE/System 'execute(QString,QString)' musicplayer > /var/spool/inputhelper/qcop
sleep 20

$QCOP QPE/InputHelper 'key(QString)' "click Down"
$QCOP QPE/InputHelper 'key(QString)' "click Return"

と記述できる、この例ではMusicPlayerが高速起動に設定されていない場合を考慮して起動後20秒待ってからキー操作をするようにしている。またコメントアウトしているecho文でもMusicPlayerの起動が可能(こちらの方が動作が速いみたい)


ペン操作を使用する場合は下記のような記述となる。(X,Y)はクリックする座標

$QCOP QPE/InputHelper 'mouse(QString)' "click X Y"


別の例としてNetFrontオートクルーズをさせる場合、キー操作は「Menu」「→」×3「↓」×5「Enter」なので

#!/bin/sh
export LD_LIBRARY_PATH=/home/QtPalmtop/lib
export QPEDIR=/home/QtPalmtop
export QPEGROUP=qpe
export QPEUSER=zaurus
export QTDIR=/home/QtPalmtop

QCOP=/home/QtPalmtop/bin/qcop


${QPEDIR}/bin/qcop QPE/Network 'connectRequest()'
#echo QPE/Network 'connectRequest()' > /var/spool/inputhelper/qcop

sleep 1
${QPEDIR}/bin/qcop QPE/InputHelper 'key(QString)' "click Escape"

$QCOP QPE/InputHelper 'key(QString)' "click F11"
$QCOP QPE/InputHelper 'key(QString)' "click Right"
$QCOP QPE/InputHelper 'key(QString)' "click Right"
$QCOP QPE/InputHelper 'key(QString)' "click Right"
$QCOP QPE/InputHelper 'key(QString)' "click Down"
$QCOP QPE/InputHelper 'key(QString)' "click Down"
$QCOP QPE/InputHelper 'key(QString)' "click Down"
$QCOP QPE/InputHelper 'key(QString)' "click Down"
$QCOP QPE/InputHelper 'key(QString)' "click Down"
$QCOP QPE/InputHelper 'key(QString)' "click Return"

sleep 60

${QPEDIR}/bin/qcop QPE/Network 'stop()'
#echo QPE/Network 'stop()' > /var/spool/inputhelper/qcop

となる。

予め使用するネット接続手段の自動接続にチェックをいれておく必要がある。接続操作後のCancel(Escape)は「接続中」表示のダイアログを消すための操作。sleep 60はオートクルーズに必要な時間で登録してあるURLの数で調整する必要あり。



このようにキー(ペン)操作をそのまま記述することでいろいろと細かい操作が可能で、automailに登録することで指定時刻に実行させることも出来る。

なお、スクリプト最初の方のexport文はautomailに登録するのでなければ必要ないと思う。

2005-03-07(Mon)

automailによる定期バックアップ

シェルスクリプトQTアラムーチョのように自動で実行できるアプリケーションを探していたところ、automailを発見。本来はメールの自動送受信を定期的に実行させるアプリだが、メールの送受信部分をシェルスクリプトで行っている為、他のスクリプトの実行も可能。


メールを送受信させるスクリプトの実体は/home/QtPalmtop/bin/automailである、このスクリプト

QTアラムーチョのメール自動受信をほぼ同じことを行っている。-sオプションによりネット切断後の自動電源断(サスペンド)機能もあるが、試したところSL-C3000の蓋を閉じていると上手く機能しないようだ。ザウルス本体にオートパワーオフ機能を使用してほうが安全のようだ。


メールの自動受信を設定すると、/var/spool/at/1110222000.333といったスクリプトファイルが登録される。「1110222000」の部分は次回実行時刻を1970年からの秒数で表した数字であり、拡張子の「.333」は固定だ。登録されたファイルザウルスのat(atd?)という機能で指定時間になると自動実行される。

#!/bin/sh
#qat 2005/03/08-04:00 1440 "/home/QtPalmtop/bin/automail"
rm $0
su zaurus -c "/home/QtPalmtop/bin/automail"
export TZ=Asia/Tokyo
/home/QtPalmtop/bin/qat 2005/03/09-04:00 1440 "/home/QtPalmtop/bin/automail"

実行される内容は以下

  • 登録されている自分自身の削除
  • スクリプトautomailの実行(メールを起動し送受信)
  • 次回実行の登録

注意

登録されるファイル拡張子が「.333」と固定であるため、複数のスクリプトを登録する場合は注意が必要となる。例えば毎時0分に実行するスクリプトと毎時0分および30分に実行するスクリプトを登録した場合、次回の0分の登録ファイル名が同一になり片方がもう一方を上書きしてしまう。これを避けるため、一方を毎時0分に実行としたら他方を毎時10分および40分に実行といったように実行時間が重ならないようにする必要がある。



PIMデータの自動バックアップ

SL-C3000にも標準でバックアップ機能がついているが、FlashやHDD2エリア全てのバックアップを行うためサイズが数十MBの大きさになってしまう。このようなバックアップは設定を変更した場合や週一回程度行えば良く、日々のバックアップはPIMデータのみ行えば良いという考えで、PIMデータバックアップスクリプトを作成し、/home/zaurus/bin/backup.shとする。chmod a+xを忘れずに。

#!/bin/sh
export LD_LIBRARY_PATH=/home/QtPalmtop/lib
export QPEDIR=/home/QtPalmtop
export QPEGROUP=qpe
export QPEUSER=zaurus
export QTDIR=/home/QtPalmtop

export TZ=Asia/Tokyo
BACKFILE=/home/zaurus/Documents/backup/`date +%y%m%d`
DTMFILES=/home/zaurus/Applications/dtm/*
CFDIR=/mnt/cf/backup/
SDDIR=/mnt/card/backup/

tar cvf ${BACKFILE}.tar $DTMFILES
gzip ${BACKFILE}.tar

if [ -e $CFDIR ]; then
   cp -p ${BACKFILE}.tar.gz $CFDIR
fi
if [ -e $SDDIR ]; then
   cp -p ${BACKFILE}.tar.gz $SDDIR
fi

このスクリプトをautomailで登録、実行時間を深夜、実行間隔を1440分(24時間)と設定すれば、毎日のPIMデータを寝ている時間に自動でバックアップさせることができる。

2005-03-06(Sun)

QTアラムーチョによるアプリの自動実行

マルチアラーム時計QTアラムーチョ」を試してみる。http://www.hadeco.co.jp/r&d/sl/alamucho/alamucho.htmからVGA版をダウンロード。指定時刻や一定間隔でアラームを鳴らしたりアプリケーションを起動したりできるとのこと。デフォルトで選択できる起動アプリはqtmailとmpegplayerがある。


メールの自動送受信

詳細設定でアプリをqtmail(Qcopに自動的にsendrecv()が入力)を指定して設定すると指定時刻あるいは一定間隔でメールが起動して自動で送受信を行ってくれる。PHSカードを挿しっぱなしにしていて、頻繁にメールチェックをする必要のある人には便利かもしれない。

注意として、ホーム画面設定タブのネットワーク設定で使用するネットワークの自動接続にチェックをすることと、メールオプション設定で「終了時に自動切断する」にチェックが必要である。また、回線断後電源が自動でOFFにならないのでホーム画面設定タブの省電力設定でオートパワーオフを1分にしておかないとバッテリが持たない。


音楽の自動演奏

デフォルトで選択できるmpegplayerがC3000には無いので、この部分をmusicplayerに書き換え、QCopをsetDocument(QString)、10秒後に送る、パラメータ適当mp3ファイルと設定すると、指定時刻に音楽を演奏させることができる。毎日実行の設定もあるので目覚まし時計代わりに使用可能である。

説明によると下記のコマンド実行と等価らしい。

qcop QPE/System 'execute(QString,QString)' musicplayer
sleep(10)
qcop QPE/Application/musicplayer 'setDocument(QString)' music.mp3

試しにアプリにzeditor、パラメータテキストファイルを設定したところ、ちゃんと起動した。QCopに設定するqcopメッセージさえ分かればいろいろなことアプリで動作させることが可能のようだ。

これでシェルスクリプトを起動させることができれば、もっと良いのだけれども。

2005-03-04(Fri)

MusicPlayerのプレイリストを複数に

今日は新幹線に乗っての移動があったので、その間ザウルスで音楽を聴きながら読書。これからの移動時はこのパターンになりそうだ。

購入以来、内蔵のHDDmp3ファイルを放り込んでいたらいつのまにか100曲以上にもなってしまった、プレイリストも見づらくなったので何とかならんかと思っていたらプレイリストを複数にする方法を発見。

プレイリストの実体は/home/zaurus/Documents/.playlist/プレイリスト.m3uというファイル、このファイルをTree!Explorer QTコピー、同じ場所に別名保存。そうするとMusicPlayerのプレイリスト表示時に▼のプルダウンメニューで別名のプレイリストも選択可能になる。とりあえず全曲、アルバム毎、お気に入りのプレイリストを作成。

ついでにmp3ファイルの保存場所も、本体ディスク/Dociments/mp3から、その下にアルバム単位のフォルダを作成してそちらに移動、プレイリストファイルのパス情報はZEditorで一括置換する。これで見た目すっきり?

2005-03-03(Thu)

dateコマンド

下記の書式で日時データを取得できる

$date
Thu Mar  3 20:52:20 JST 2007

$date +%Y%m%d%H%M%S
20050303205238

$date +%y%m%d%H%M%S
050303205258(年が下2ケタ表示)

$date +%s
1109851104(1970年からの秒数)

$date -d 2005.03.03-00:00:00 +%s
1104505200(年月日→1970年からの秒数)

2005-03-02(Wed)

IMkit-Anthyの辞書登録 その3

KeyHelperからスクリプトを実行させてIMkit-Anthyの辞書登録をさせてみる。「よみ」と「単語」はクリップボードを使って受け渡しをさせる。

クリップボードと標準入力/標準出力と連携させるqcfをhttp://tbox.jpn.org/linuzau/misc/から入手、インストールhttp://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2f%a5%c0%a5%a6%a5%f3%a5%ed%a1%bc%a5%c9からperlとsudoを入手、インストール

シェルスクリプト/home/zaurus/bin/anthy_rec.shを作成、chmod a+xを忘れずに、内容は以下

#!/bin/sh

OUTFILE=/home/zaurus/.anthy/private-dic.src
MEISI=/home/zaurus/.anthy/meisi_rec.src
NAMAE=/home/zaurus/.anthy/namae_rec.src
TIMEI=/home/zaurus/.anthy/timei_rec.src

qcf -w | perl -e '$_ = <>;s/(.+?) (.+)/\1 1 \2/;print $_."\n"' > $OUTFILE

case "$1" in
    meisi)
	cat $MEISI >> $OUTFILE
	;;
    namae)
	cat $NAMAE >> $OUTFILE
	;;
    timei)
	cat $TIMEI >> $OUTFILE
	;;
    *)
	;;
    esac

cat $OUTFILE | /home/QtPalmtop/bin/anthy-dic-tool --load

/home/zaurus/.anthy/以下にmeisi_rec.src,namae_rec.src,timei_rec.srcを作成、内容は名詞人名、地名の登録フォーマットの2行目以下、副詞形容詞は使用頻度が小さいと思うので今回はパス。下記は名詞の場合、文字はEUCで書くこと。

品詞 = 名詞
な接続 = y
さ接続 = y
する接続 = y
語幹のみで文節 = y
格助詞接続 = y
(空行)

qcfの行で登録フォーマットの1行目を作成している、具体的にはクリップボード上の「よみ(半角スペース)単語」を「よみ(半角スペース)1(半角スペース)単語」に変更して改行コードを付加している。sedあたりを使用してもっとシンプルにできそうな気がするけど使い方を知らないのでperlを使用、perlの文法もイマイチ怪しいけれで動いているから、まあいいか。

このスクリプトをkeyhelper.confのShift+全/半キーの入力モード選択のメニューに追加する。ただ追加するだけでは上手くいかないので、sudoを使用してユーザーzaurusで動作させる必要があるようだ。

[Menu01]
07_名詞登録= @exec(TAB)/usr/bin/sudo -u zaurus -s /home/zaurus/bin/anthy_rec.sh meisi
08_人名登録= @exec(TAB)/usr/bin/sudo -u zaurus -s /home/zaurus/bin/anthy_rec.sh namae
09_地名登録= @exec(TAB)/usr/bin/sudo -u zaurus -s /home/zaurus/bin/anthy_rec.sh timei

Menu01の日本語コードはUTF8で書くこと。

Zeditor上で「よみ 単語」をコピーして、KeyHelperのメニューから3つの辞書登録を実行させてみる、なんとか上手くいっているようだ。

sudoの設定

http://digit.que.ne.jp/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2f%a5%c0%a5%a6%a5%f3%a5%ed%a1%bc%a5%c9のsudoをインストールして使用してみたがzaurusrootコマンドを実行させようとすると初回だけメッセージがでてくる(よくわからない)、これを回避するために設定をちょっと変更、suしてvisudoを実行sudoersのzaurusの行を

zaurus	ALL=ALL

から

zaurus ALL=(ALL) NOPASSWD: ALL

に変更、visudoの使い方はviと同様。

2005-03-01(Tue)

IMkit-Anthyの辞書登録 その2

試しに登録してみる、http://anthy.dyndns.info/index.php?%5B%5BDictionary%5D%5Dの解説どおりにprivate-dic.srcを作成、よくわからないので頻度は1、y/nは全てyとしてみる。下の例は名詞の場合(文字コードはEUC)

よみ 1 単語
品詞 = 名詞
な接続 = y
さ接続 = y
する接続 = y
語幹のみで文節 = y
格助詞接続 = y
(空行)

登録してみる

$ cat /home/zaurus/.anthy/private-dic.src | anthy-dic-tool --load

うん、ちゃんと候補に登場している、private-dic.srcを削除してダンプしてみる

$ anthy-dic-tool --dump > /home/zaurus/.anthy/private-dic.src

登録した候補は出力されている。これでマシン間の移植も問題なさそう。


でも登録の度にコマンドをたたくのも面倒なので、読みと漢字を自動で登録するスクリプトを作ってKeyHelperから呼び出すようにしてみたい。