そうだ,ラズパイでポータブルしよう!(仮 SW編) [Raspberry Pi]
HWの方は,一段落 ついたので,今度はSWの方…
目標は,『タッチ操作のみで使えるようにする!』 …でしたが,難題だらけ orz
ちなみに,主要なアプリは…
- kodi
- MComix
- RetroPie
の,まずは3種類。
色々やった結果,この3種に関しては,タッチ操作のみで ”なんとかなるかな?”ってレベルで使える様になりました。
ただし,RetroPieは,タッチで起動,そこからRetroPie終了まではゲームパッドのみでの操作になります。
ザックリ,SWの気になる点:
- 動作がもっさり(爆,PRi4ですら重いの? それともSDカードがマズイ?
- タッチ操作に ”超絶” 癖がある。 →慣れる事は困難(?)なレベル(笑
- "長タップで右クリック"と"タップ&ドラッグ"で操作ミスを連発。
- ファイル選択など,行の高さ,狭すぎ… 指太すぎ で,狙いが難しい。
- Fontサイズを大きめにして,高さを出す事で 多少ごまかしてます。
- 画面の端っこがタップしづらい。(Displayの "額" が邪魔)
- 操作が一貫しない。 ソフト毎にも,それぞれ『癖』が有り,それぞれ慣れが必要。
『そうだ,ラズパイでポータブルしよう!』は…
- そうだ,ラズパイでポータブルしよう!(タッチスクリーンの動作)
- 番外: リボンHDMIケーブルにやられてみる…
- そうだ,ラズパイでポータブルしよう!(実装編)
- そうだ,ラズパイでポータブルしよう!(ソフトウエア編) ←このページ
- 番外: Pixel desktopからRetroPieを起動する
- そうだ,ラズパイでポータブルしよう!(まとめ?)
な,感じでやってます。(ました。)
以下,今回のドロドロ…(笑
OS(System周り)
OSは,"Raspi OS Desktop 2020-08-20",アプリが入っていない方です。
これを,普通にSDカードに書き込んで使います。
$ Linux rpi4pad 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux
SSDの投入も考えたのですが,まずはSDカードでやってみて,不都合があれば(容量も含め)再検討する… って,事にしました。
容量に関しては,"本やゲームをどれだけ入れるか" に依りますね。。。
システム周りとしては,主に以下を追加。
- 電源スイッチ制御スクリプト(
gpio-poweroff
を使ってます) - FANコン スクリプト
- タッチスクリーン周りの設定
- tslib + xf86-input-tslib
- evdev-right-click-emulation
- 画面回転スクリプト
- USB-C周りの設定
dtoverlay=dwc2,dr_mode=host
- オンスクリーンキーボードを設置(”OnBoard”を使いました)
- などなど…
補足:
- 電源スイッチ,FANコンのスクリプトは,以前作成した物を転用しました。
- タッチスクリーンのキャリブレーションは,
xinput-calibrator
の代わりに,tslib
に添付されている物を使ってます。 - 2本指タップは,色々あって,Towfingerの使用は諦めました。
代わりに長押しで右クリックなevdev-right-click-emulation
を使いました。 - 画面回転は,スクリプトを用意して対応しました。
ただ,"ガッ コン"って感じで切り替わる(iPadの様に"くるくる"しない)ので,センサーを使って切り替えるのは,やめました。 - ラズパイのUSB-Cは,タッチスクリーンを接続する為,Hostモードで使用しています。
- ”OnBoard”のキー配列(Compact)が気に入らず,HHK風に修正しました。
スクショ
ハマりポイント: 正直,多すぎて多すぎて… まぁザックリと。
- タッチスクリーンでドハマりする。
- 純正7インチネタは,当然として,よく見かける ”動かしてみた” ネタは使えない。
- そして,よく見かける "multi-touchネタ"も,タッチパッド関連のネタで,タッチスクリーンは対象外。
- 結局,tslibがタッチスクリーンには最適と判断しました。(ここまでが長かった)
- TwoFingerでハマる。
- kodiを終了してDesktopに戻った際,シングルタップが全てダブルになる。(回避方法不明) 面倒なので,早々に使用をやめました。
- toucheggでハマる。
- そもそも動かせませんでした。
これも"タッチパッド関連"って事で,タッチスクリーンでは,初めからダメっぽい…
- そもそも動かせませんでした。
- 画面Sleepの解除でハマる。→まだ,ちゃんと解決していない。
- どこをみても,”Sleepさせるな!”ばっかりで,画面タッチで起こす方法が分からなかった。
- しようがないので,とりあえず,Sleepしないようにした orz
- Display側の省電力設定(無入力 X分で電源OFFとか)もあるので,その兼ね合いを確認して対策する必要あり。
- FANコンでハマる。
- PWM値を低い状態で開始すると,回転しない。(59%必要でした)
- 回転を開始させ,徐々に下げていく分には20%位まで下げられる。
- ここまではよくある話… でもこのファン,回転を下げた方が五月蝿い!!!(定格運転の方が静か(笑)
- OnBoardでハマる。
- 入力時に自動的に表示が効かない orz(回避方法不明)
- キーボードの配列が気に入らない… Aの左はCtrl!,Zの左に<がある。 →HHK風に改造した。
- USB-Cでハマる?
- これはハマるって言うより,へ〜そうなんだって感じ。 Modeって指定できるんだなぁ〜。
- これはハマるって言うより,へ〜そうなんだって感じ。 Modeって指定できるんだなぁ〜。
kodi
apt install
で入る物(この時点ではv18.7)を使用。
Add-onは,いつもの通り
- skin.OSMC(改)
- IPTV Simple
- AMAZON VOD
の3種類。
スクショ
メインメニュー (いつも通りskin.OSMCを適用してます)
ハマりポイント:
- skin.OSMCでハマる。
- 改造パッチが機能せず orz,手パッチした。
- Fontは,いつものに差し替えたけど,ちょっと合わない感じがする… 要検討?
- IPTVでハマる。
- チャンネルの並び順が変! これは,今まで放置してた,EPGStationの問題。
- EPGStationの設定で "SIDで並び替え" にする事で解消。
- AMAZON VODのセットアップ後にハマる。
- AMAZON VODがエラーで開けない。
PrimeVideoの "視聴者" が日本語名になっていると,Add-on(Python)でUnicode変換に失敗するっぽい。
とりあえずな回避策は,Prime Video: 視聴者で,"プロフィールを編集"を押し,日本語名をASCII文字のみに修正する。 例えば "キッズ"は,"kid's"へ,自分の名前も適当なアルファベットにすると良い。 - WatchListにネタが出てこなくて焦る。
理由は,視聴者が "kid's" になっていた為。 "自分"を選択すればOK。
- AMAZON VODがエラーで開けない。
MComix
apt install
で入る物(この時点では1.2.1-1.1)を使用。
タッチ操作のみだと,キーボードショートカット使用が困難なので,フルスクリーンでもメニューとサムネを表示した状態で使用しています。
スクショ (今回は2巻(笑)
ハマりポイント:
- Zipファイルな本の場合,裏で/tmpに展開しているようで,SDカード運用だと,動作が遅すぎる。(しかも,
たまによくMComixが落ちる)
対策として,/tmpをtmpfs(500MB)にすると非常に快適,しかも落ちなくなった。 - タッチ操作だと,"1ページ戻る" が面倒(笑
# その為,サムネを表示させて,そこをタップしてます。
その後,RetroPieの実験で,ZipなゲームCDファイルを展開する際,/tmp不足に…
今は/tmpに,1GBを割り当ててます(Mem 8GBで良かった 笑
RetroPie
Google先生にお伺いすれば,大量のネタが出てきます(笑
# 雑音が多すぎて,必要な情報にたどり着くのは,かなりシンドイ(泣
しかも,このソフト,やんちゃすぎて,ホント シンドイ(号泣
それでも,簡単な動作確認で,NES, SNES, MEGA Drive, PC Engine, PlayStationは,カクツク事なく動作しました。 試してませんが,PSPとか重いやつは,やはり厳しかも。
ちなみに,RetroPieは,X上で起動するのは ”良し” としていません。
ですが,Pixel Desktopを生かしたまま,RetroPieを起動できるようにしました。
そうでないと,色々不便ですしね。
スクショ… 撮り方 わからない…orz
ハマりポイント:
- スタートアップ スプラッシュでハマる。
- Pixel Desktopに入れた為か,ラズパイ起動時のスプラッシュがRetroPieになってしまった。
正直びっくりしたと共に,非常に憤慨! 速攻,systemctlでDisableした。 - その後,RetroPie ConfigでOFFに出来る事を発見。
でも systemctlでDisableを継続。
- Pixel Desktopに入れた為か,ラズパイ起動時のスプラッシュがRetroPieになってしまった。
- ”hostnameがDefault!!"でハマる。
- なぜかRetroPieを入れたら,hostnameが"raspberrypi"に戻った!?
raspi-config
でhostnameを再設定。
- ゲームパッド周りでハマる。
- まぁ,いつもの事で,一番ウンザリな点。 SIXAIXSをBT接続しようとして難儀した。
- ROMの配置でハマる。 →単に,やり方を忘れてた orz
- BIOSでハマる。→単に,やり方を忘れてた orz
- ZipなゲームCDファイルでハマる。
- MComix項でも書きましたが,/tmpが小さすぎた。
…その他,色々
久々のゲームエミュだったので,色々忘れている orz
やっぱり,RetroPie,Lakka,RecalBoxなど,OS Image突っ込んでポンと動かせる方が楽チンです。
雑感:
いや〜ここまで長かった orz
もっと簡単に事は進むと思ってましたが,なんだかんだで一ヶ月ほど掛かってしまいました。
まさか,タッチスクリーン周りで,こんなにハマるとは…
各ソフトも,もうしばらく,使い込みと調整が必要な感じですね。
それと,使い込む事で,ポータブルならではのソフトの追加,使い方が見えてくるかも…です。
# VS codeを入れて,いつでもどこでも『Extreme coding』とか(笑
以下は,今回,用意したネタ
スクリプトは”やっつけレベル”なので,ツッコミ無用で…
# スクリプトファイルは,~/scripts
に格納しているって事にします。
*『Pixel desktopからRetroPieを起動する』ネタは,まとまりを考えて,別エントリーにしました。
画面回転スクリプト
縦持ち/横持ち(?)を一発で切り替えるスクリプト。
画面回転に合わせてタッチスクリーンの向きも対応させると共に,壁紙も切り替えます。
# 壁紙は各自で用意願います。
ご参考:
今回,壁紙は,以下の2つを使わせて頂きました。
- 1920x1080 Raspberry Pi Logo Laptop Full HD 1080P HD 4k Wallpapers, Images, Backgrounds, Photos and Pictures
- 1080x1920 Raspberry Pi Logo Iphone 7,6s,6 Plus, Pixel xl ,One Plus 3,3t,5 HD 4k Wallpapers, Images, Backgrounds, Photos and Pictures
cat ~/scripts/scr_rotate.sh
#!/bin/bash
if [ $# -ne 1 ]; then
ARG=0
else
ARG=$1
fi
## 壁紙の格納パスとファイル名
WP="/home/pi/Pictures/wallpapers/"
WAL="raspberry-pi-logo-h0-1920x1080.jpg"
WAP="raspberry-pi-logo-h0-1080x1920.jpg"
case "${ARG}" in
"0")
XRR="normal"
MAT="1 0 0 0 1 0 0 0 1"
W=${WAL}
;;
"90"|[Rr])
XRR="right"
MAT="0 1 0 -1 0 1 0 0 1"
W=${WAP}
;;
"180"|[Ii])
XRR="inverted"
MAT=" -1 0 1 0 -1 1 0 0 1"
W=${WAL}
;;
"270"|[Ll])
XRR="left"
MAT="0 -1 1 1 0 0 0 0 1"
W=${WAP}
;;
esac
# "G2Touch Multi-Touch by G2TSP"は,xinputで得られるDeviceName
xrandr --output HDMI-1 --rotate ${XRR}
xinput set-prop $(xinput list --id-only 'G2Touch Multi-Touch by G2TSP') 'Coordinate Transformation Matrix' ${MAT}
pcmanfm --set-wallpaper ${WP}${W}
左回転
cat ~/.local/share/applications/rotate_L.desktop
[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=/usr/share/icons/Adwaita/32x32/actions/go-first.png
Name=Turn Left
Exec=/home/pi/scripts/scr_rotate.sh 270
Comment=Rotate Diplay with TouchScreen(270)
GenericName=Rotate Display with TouchScreen 270dig
Terminal=false
Categories=Utility;Accessibility;
元に戻す
cat ~/.local/share/applications/rotate_N.desktop
[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=/usr/share/icons/Adwaita/32x32/actions/go-bottom.png
Name=Turn Normal
Exec=/home/pi/scripts/scr_rotate.sh
Comment=Rotate Diplay with TouchScreen(0)
GenericName=Rotate Display with TouchScreen 0dig
Terminal=false
Categories=Utility;Accessibility;
右回転/天地逆転は… 以下同文です。
* メニューでの表示(出現)位置を変更したい場合は,Categories
を調整する。
ご参考:
画面スリープ抑止スクリプト
タッチスクリーンで画面スリープを解除させる事が出来なかったので,暫定的に抑止とします。 スクリプトは起動時に自動で実行させます。
cat ~/scripts/scr_sleep.sh
#!/bin/bash
if [ $# -ne 1 ]; then
ARG="on"
else
ARG=$1
fi
if [[ $ARG =~ off|false ]]; then
xset s off # Screen Saver timeout:0
xset -dpms # Control Energe Star
else
## Screen Sleep set defualt
xset s default # Screen Saver timeout:600
xset dpms 600 600 600 # Energe Star
fi
自動起動させる為,sleep_off.desktop
は~/.config/autostart/
へ
cat ~/.config/autostart/sleep_off.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Sleep off
GenericName=Disable Sleep & Screen Saver
Exec=/home/pi/scripts/scr_sleep.sh off
Terminal=true
StartupNotify=false
スクショを撮る
スクショって,どうやって撮るの… と思い調べてみると,LXDEの設定に行き当たった。
スクショを撮るソフト(scrot)は,初めからOSイメージに含まれていて,PrintScreen
にショートカットとして設定されています。
せっかくショートカットとして登録されていても,"当方的には" ちょっと使いづらい…
そこで,キーコンビネーションがMac風の物を追加してみました。
先に保管先を用意。(scrotは指定しないと~/
以下に書き出します)
$ mkdir ~/Pictures/screenshots
定義ファイルは以下。
$ sudo nano /etc/xdg/openbox/lxde-pi-rc.xml
nanoならCtrl+W
で "scrot" を検索,以下を追加。
# 791行目あたり
とりあえず撮る。(保管先を~/Pictures/screenshots
以下)
元々の定義を修正
<!-- Keybindings for running applications -->
<keybind key="Print">
<action name="Execute">
<command>scrot '/home/pi/Pictures/screenshots/%Y-%m-%d_%H%M%S_$wx$h_scrot.png'</command>
</action>
</keybind>
Mac風を追加
<!-- Screen Shot like macOS Shift+Command+3 -->
<keybind key="S-A-3">
<action name="Execute">
<command>scrot -dc 5 '/home/pi/Pictures/screenshots/%Y-%m-%d_%H%M%S_$wx$h_scrot.png'</command>
</action>
</keybind>
<!-- Screen Shot like macOS Shift+Command+4+Space -->
<keybind key="S-A-4">
<action name="Execute">
<command>scrot -sb '/home/pi/Pictures/screenshots/%Y-%m-%d_%H%M%S_$wx$h_scrot.png'</command>
</action>
</keybind>
シャッター音付き
<!-- Keybindings for running applications -->
<keybind key="Print">
<action name="Execute">
<command>scrot -e 'omxplayer /usr/share/sounds/freedesktop/stereo/camera-shutter.oga' '/home/pi/Pictures/screenshot$
</action>
</keybind>
Mac風
<!-- Screen Shot like macOS Shift+Command+3 -->
<keybind key="S-A-3">
<action name="Execute">
<command>scrot -cd 5 -e 'omxplayer /usr/share/sounds/freedesktop/stereo/camera-shutter.oga' '/home/pi/Pictures/screenshots/%Y-%m-%d_%H%M%S_$wx$h_scrot.png'</command>
</action>
</keybind>
<!-- Screen Shot like macOS Shift+Command+4+Space -->
<keybind key="S-A-4">
<action name="Execute">
<command>scrot -sb -e 'omxplayer /usr/share/sounds/freedesktop/stereo/camera-shutter.oga' '/home/pi/Pictures/screenshots/%Y-%m-%d_%H%M%S_$wx$h_scrot.png'</command>
</action>
</keybind>
rebootする。
問題:
- ウインドを選んで撮影した時,OnBoardが映り込む。(回避不能?)
- シャッター音を鳴らす為,omxplayerを使っているが,音が鳴るまで間がある。
wavファイルをaplayで鳴らした方が,間がなく良い感じ。
コメント 0