2015年1月27日火曜日

LOOX-U/C40 への Voyage MPD 0.9.5 の導入(3) 本体キーボードで play/pause トグルなど


(2)で終わりのはずが,もうちょっと追加で.ただし,まだ実験中なので随時改訂.

LOOX-U はキーボードが付いているので,別マシン (スマホ等を含めて) のクライアントソフトを使わなくても,本体だけでもいろいろコントロールはできる.とはいえ,あのキーボードと画面であらゆる操作をしたいとも思わないが (老眼の身には厳しすぎる).

にしても,再生の一時停止/再開くらいができるだけで,使い勝手は全然違ってくるはず.シャットダウンは電源スイッチを acpid が監視して,shutdown コマンドで落ちるようになっているのだから,適当なイベントで mpc toggle を発行してくれるだけで十分である.

最初は,acpid を使おうと思ったが,電源ボタン以外に拾えるイベントは LOOX-U ではハードウェアボリュームスイッチだけであった.これは操作しにくすぎるので却下.

次は,マウス (LOOX-U には妙なポインタが付いている) のボタンを考えたが,これもどうやってイベントを拾うのか,よくわからない.あれこれ考えながらネット上を彷徨っていると,参考になるページが目に入った.

http://mimizukobo.sakura.ne.jp/articles/articles005.html#006

このアイディアを流用させてもらおう.
この例では Bluetooth で接続されたテンキーボードをリモコンに使っているが,LOOX-U の使えないキーボードの,そのまたさらに使わないキーを,play/pause トグルに使えばいいわけだ.
ということで,キーコードを調べるのに一はまりしたりもしたが,とりあえず望む動作に辿り着いたのでそのメモ.

当たり障りのない名前のログインユーザを作る:

# adduser voyagempd

パスワードは適当,それ以外は無設定でOK.そして,そのパスワードをなしにする.

# nano /etc/shadow

voyagempd のシャドウパスワードを消してしまう.
起動時にこのユーザで自動ログインし,コマンド待ち状態までもっていく.
/etc/inittab を編集.

#1:2345:respawn:/sbin/getty 38400 tty2 
1:2345:respawn:/bin/login voyagempd /dev/tty1 2>/dev/tty1 
1:2345:respawn:/sbin/getty --autologin voyagempd 38400 tty1

これで仮想コンソールの1番は起動後直ちにユーザ voyagempd でログインした状態になる.なお,このユーザでは ssh ログインはできないので,直接マシンをいじられない限りはパスワードがなくても問題はないだろう.
(追記: 最初,上記サイトの方法をそのまま使ってみたが,これだと kon が起動できない.getty 自体のオプションで対応できるので修正)

続いて,キーボードマッピングの変更.
今回は [変換]キー を play/pause のトグルにした.ついでに [Windows]キー には mpc コマンドを割り当てて,今の状態を表示できるようにした.
まず,キーマップを作る.

# nano /root/mpdkeymap

中身は

string F92 = "mpc toggle\n"
keycode 92 = F92
string F125 = "mpc\n"
keycode 125 = F125


ちなみに,以下が使えそうなキーと keycode のリスト (Vine が動いている別のマシンで確認).

key keycode
[変換] 92
[無変換] 94
[ひらがな] 93
[Windows] 125
[ins] 110
[del] 111
[F5] 63
[F6] 64

調べるには showkey コマンドを使うが,Voyage ではデフォルトでは入っていない.
作成したキーマップを読み込む loadkeys コマンドも入っていないので,パッケージを導入する.

# apt-get install console-common console-data

console-data はなくてもいいのかもしれない (未確認).
また,loadkeys は root でないと使えないことに注意.
(追記: console-common をインストールすると showkey コマンドも使えるようになるので,LOOX-U でも同じであることを確認できた.なお,showkey も root でないと使えない)

テストとして,読み込んでみる.

# /bin/loadkeys /root/mpdkeymap

エラーなく読み込めたら,[変換]キー を押してみる.コマンドラインに mpc toggle が打ち込まれ,mpd が動いているなら再生状態が切り替わればOK.同様に [Windows]キー で,mpc が打ち込まれ,mpd の状態が表示されればOK.

あとは起動時にこれが自動実行されるように,/etc/rc.local に上の1行をそのまま追記.
exit 0 の行より前に書くことに注意.

他の動作,たとえば音量の上げ下げ等も組み込めるが,そういうのは何もキーに割り付けなくてもアンプのボリュームや,外部クライアントから操作する方がいい気がする.prev と next くらいはあってもいいかもしれない気もするが.この辺は使いながら必要性を考えていこう.

また,Voyage mpd のコンソールは漢字が表示できないので,この方法で表示される日本語メタデータは化ける.この辺りは Volumio に i2c でキャラクタディスプレイをつないで表示させる例と同様の問題ではある.kon のようなものが使えるのかどうか.この辺はまた後日.

0 件のコメント:

コメントを投稿