RetroPie(2)

X-Window から起動した RetroPie の np2kai

 X-Window から RetroPie(実際は emulationstation)を起動することができます。しかし、この状態だと、np2kai でマウスが使えませえん。PC98 のゲームでマウスが使えないのは不便なので、使う方法を探しました。

 まず、np2kai のソースを修正できないかを試しました。github からソースを clone してコンパイルしてみました。

$ git clone https://github.com/AZO234/NP2kai.git
$ cd np2kai/sdl
$ make j4

 コンパイルはできました。しかし、ソースを見てもどこを修正すればよいのかわかりません。まあ、それはそうです。なぜ X-Window 下だとマウスが使えないのかの原因がわかっていません。

 別の手を考えます。

$ sudo apt-get install wmctrl

 wmctrl でフォーカスを当てたらできるかと思ったのですが、うまく行きませんでした。

 X-Window の仮想端末から起動していましたが、crtl+alt+F3 で仮想コンソールに切り替えてから emulationstation を起動したら、np2kai でマウスが使えました。

 なるほど、起動する端末の違いかな?

 仮想コンソールに切り替えるコマンド cvt と 自動ログインできるように、agetty を組み合わせて試してみます。

 使う仮想コンソールですが、tty1 は、すでにログインしています。tty7 で X-window が 動いています。普通使われない tty8 を使うことにしました。

 試してみます。

$ (sudo chvt 8&); sudo LANG=C setsid /sbin/agetty –autologin pi -8 tty8 linux

 chvt 8 を実行すると、戻ってくるまでそこで待ってしまうので、& を付けてバックグラウンドで動かし、agetty を実行します。setsid を使うのは、新しいプロセスグループ(正確にはセッション)を作るためです。

 うまく切り替わりました。確認します。

$ tty
/dev/tty8

 tty8 ですね。emulationstation を動かしてみます。

$ emulationstation

 np2kai でマウスが使えました。X-window に戻るには、emurationstation を終了させてログアウトします。

$ exit

 真っ暗な画面になりますが、ここで、alt+F7 を押すと X-window に戻ります。

  1. 仮想コンソールの 8 番に切り替え、tty8 で agetty を動かす。
  2. ログインしたら、emulationstation を動かす。emulationstation を終了したらexit して仮想コンソールの 7 番に切り替える。

 上記の2段階の手順で行えば良いことになります。1 は shell スクリプトで実現し、2 は .bashrc で行えばいいです。

 次の内容の shell スクリプトを ~/bin/emulationstation.sh として作成し、実行権を与えます。

$ vi ~/bin/emulationstation.sh

#!/bin/bash tty=`tty` if [ "${tty}" == "/dev/tty8" ]; then fbterm emulationstation setsid bash -c "(sleep 1; sudo chvt 7)" & else check=`ps ax | grep ty8 | grep getty` if [ "${check}" == "" ]; then sudo chvt 8 & sudo LANG=C setsid /sbin/agetty --autologin pi -8 tty8 linux else sudo chvt 8 fi fi

$ chmod +x ~/bin/emulationstation.sh

 次に ~/.bashrc の最後に次の内容を追加します。

tty=`tty` if [ "${tty}" == "/dev/tty8" ]; then /home/pi/bin/emulationstation.sh exit fi

 これで、emulationstation.sh を実行すると emulationstation が起動し、emulationstation を終了すると、X-window に戻ってくるようになります。fbterm から emulationstation を起動しているのは、デフォルトの言語を ja_JP.UTF-8 にしているので、文字化けしないようにです。

 setsid コマンドは、初めて知りました。UNIX はまだまだ奥が深いです。

RetroPie

Posted by sirius