KeyHelper設定ファイルをsedで書換え

先週、zvol使ってキーで音量調整できるようにした時は、KeyHelperの設定ファイルを置き換える形で行ったので、元々KeyHelperを何らかの設定で使っていた場合は使えなくなっていた。てな訳で、KeyHelperの設定ファイルを書き換える形を考えてみる。
まずはkeyhelper.xmlの</extensions>の手前に<define key="all" kind="launch9">と</define>を追加する手順をsedで書いてみる。launch9が既に使われていたら問題になる場合もあるが面倒なのでそれは考えないことにする。

cp keyhelper.xml /tmp/keyhelper.xml
sed -e '/<\/extensions>/a\
<define key="all" kind="launch9">\
</define>' /tmp/keyhelper.xml > keyhelper.xml

keyhelper.confへの追加は簡単。

echo '[Launch9]' >> keyhelper.conf
echo '0x2014 = @exec /opt/QtPalmtop/bin/zvol m' >> keyhelper.conf
echo '0x2017 = @exec /opt/QtPalmtop/bin/zvol -10' >> keyhelper.conf
echo '0x2018 = @exec /opt/QtPalmtop/bin/zvol +10' >> keyhelper.conf

ここまでをインストール後に実行するpostinstスクリプトとしてまとめておいて、今度はアンインストール前に実行するprermスクリプトを作る。
まずはkeyhelper.xmlから<define key="all" kind="launch9">と続く</define>を削除する手順をsedで書いてみる。本当は<extensions>〜</extensions>の間にあるのを削除しなきゃなんないだけど、sedでどう書けばいいか判んないのと、そこまで問題にならなさそうだったので(汗)

cp keyhelper.xml /tmp/keyhelper.xml
sed -e '/<define key="all" kind="launch9">/,/<\/define>/d' /tmp/keyhelper.xml > keyhelper.xml

同じようにkeyhelper.confの[Launch9]から0x2018 = @exec /opt/QtPalmtop/bin/zvol +10までを削除する手順をsedで書いてみる。

cp keyhelper.xml /tmp/keyhelper.xml
sed -e '/\[Launch9\]/,/0x2018 = @exec \/opt\/QtPalmtop\/bin\/zvol +10/d' /tmp/keyhelper.xml > keyhelper.xml

こんな具合で新しい zvolkey のパッケージを作ってみた。
http://www.areanine.gr.jp/~nyano/download.html#zvolkey
KeyHelper の設定ファイルを作ることで、設定ファイルが無い時に使えるタスク切り替え機能が使えなくなるので、これを意図的に設定ファイルに追加するパッケージ taskkey も作ってみた。
http://www.areanine.gr.jp/~nyano/download.html#taskkey
ついでに IMKit-Anthy 等で日本語入力モードにする際、ペン操作が必要なのが面倒だったので、Shift+全/半で日本語入力モードのON/OFFが出来るパッケージ imekey も作ってみた。よくある InputHelper でペン操作の代わりをさせるのではなく、そのキーを押すと日本語入力モードを ON、もう一度押すと日本語入力モードを OFF にするための QCop コマンドを交互に発行する形でやってみた。
http://www.areanine.gr.jp/~nyano/download.html#imekey