SSブログ

そうだ,ラズパイでポータブルしよう!(仮 SW編) [Raspberry Pi]

HWの方は,一段落 ついたので,今度はSWの方…
目標は,『タッチ操作のみで使えるようにする!』 …でしたが,難題だらけ orz

ちなみに,主要なアプリは…

  • kodi
  • MComix
  • RetroPie

の,まずは3種類。

色々やった結果,この3種に関しては,タッチ操作のみで ”なんとかなるかな?”ってレベルで使える様になりました。
ただし,RetroPieは,タッチで起動,そこからRetroPie終了まではゲームパッドのみでの操作になります。


ザックリ,SWの気になる点:

  • 動作がもっさり(爆,PRi4ですら重いの? それともSDカードがマズイ?
  • タッチ操作に ”超絶” 癖がある。 →慣れる事は困難(?)なレベル(笑
    • "長タップで右クリック"と"タップ&ドラッグ"で操作ミスを連発。
    • ファイル選択など,行の高さ,狭すぎ… 指太すぎ で,狙いが難しい。
      • Fontサイズを大きめにして,高さを出す事で 多少ごまかしてます。
    • 画面の端っこがタップしづらい。(Displayの "額" が邪魔)
  • 操作が一貫しない。 ソフト毎にも,それぞれ『癖』が有り,それぞれ慣れが必要。

『そうだ,ラズパイでポータブルしよう!』は…

な,感じでやってます。(ました。)


以下,今回のドロドロ…(笑


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風に修正しました。

スクショ

Desktop
pixel_1.jpg

画面回転は,ここから行います
pixel_2_rotate.jpg

RetroPieの起動は,ゲームから
pixel_3_retropie.jpg


ハマりポイント: 正直,多すぎて多すぎて… まぁザックリと。

  • タッチスクリーンでドハマりする。
    • 純正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って指定できるんだなぁ〜。



kodi

apt installで入る物(この時点ではv18.7)を使用。

Add-onは,いつもの通り

  • skin.OSMC(改)
  • IPTV Simple
  • AMAZON VOD

の3種類。

スクショ

メインメニュー (いつも通りskin.OSMCを適用してます)
kodi_1_top.jpg

ラズパイレコーダーと連携してIPTVも出来ます。
kodi_2_iptv.jpg

AMAZON VODもこの通り
kodi_3_amazon.jpg


ハマりポイント:

  • 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。



MComix

apt installで入る物(この時点では1.2.1-1.1)を使用。

タッチ操作のみだと,キーボードショートカット使用が困難なので,フルスクリーンでもメニューとサムネを表示した状態で使用しています。

スクショ (今回は2巻(笑)

mcomix_1.jpg

ハマりポイント:

  • 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を継続。
  • ”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つを使わせて頂きました。

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) 
共通テーマ:趣味・カルチャー

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。