2021/02/20(土) [n年前の日記]
#1 [hsp][raspberrypi] HSP3.6betaをraspberry Pi Zero W上でインストールしてみた
久々に Raspberry Pi Zero W の電源を入れたので、せっかくだから HSP をインストールして動作確認してみようかなと。HSP は Linux や Raspbeery Pi 上でも動くので…。
環境は以下。
環境は以下。
$ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
$ uname -a Linux raspi0w 5.10.11+ #1399 Thu Jan 28 12:02:28 GMT 2021 armv6l GNU/Linuxデスクトップの画面解像度は 1280x720。
◎ HSPをインストール。 :
Linux/Raspberry Pi向けの HSP は、github上でソースが公開されている。
_onitama/OpenHSP: Hot Soup Processor
インストール方法も README.md に書いてある。Raspberry Pi系の場合は以下。
注意点。
ビルドが終わると、Raspberry Pi OS のデスクトップ画面のメインメニュー → プログラミング に、HSP Script Editor という項目が増えるのだけど。この項目は /home/pi/OpenHSP/hsed が存在することを前提にしているので、そういうディレクトリ構成を前提にして作業したほうがいいのだろうなと。
ちなみに、この項目(HSP Script Editor)は、/usr/share/applications/hsed.desktop に従って表示されている。別の場所に OpenHSPフォルダを置いてしまった場合は…。
_onitama/OpenHSP: Hot Soup Processor
インストール方法も README.md に書いてある。Raspberry Pi系の場合は以下。
cd ~/ git clone https://github.com/onitama/OpenHSP cd OpenHSP ./pisetup.sh数十分ほどかかったけれど、すんなりビルドできた。HSP、凄いな…。こんなに簡単にビルドできるとは…。
注意点。
- piユーザでログインしてることが前提。
- ~/ 以下に OpenHSP フォルダを置くことが前提。
ビルドが終わると、Raspberry Pi OS のデスクトップ画面のメインメニュー → プログラミング に、HSP Script Editor という項目が増えるのだけど。この項目は /home/pi/OpenHSP/hsed が存在することを前提にしているので、そういうディレクトリ構成を前提にして作業したほうがいいのだろうなと。
ちなみに、この項目(HSP Script Editor)は、/usr/share/applications/hsed.desktop に従って表示されている。別の場所に OpenHSPフォルダを置いてしまった場合は…。
- /usr/share/applications/hsed.desktop をエディタで開いて hsed の場所を変更すれば対応できる。
- あるいは、メインメニューから辿って、該当項目を右クリックしてプロパティ(Properties)を表示すれば、コマンド(hsed)が置かれた場所を指定し直すことができる。
◎ サンプルファイルを動かす。 :
OpenHSP/sample/ 以下にサンプルファイルが入っているので、hsed で開いてF5キーを押せば動かすことができる。
いくつか動かしてみたのだけど。かなり描画が速い気がする…。 _先日、Pygame の動作確認をしてみた わけだけど、それらと比べると圧倒的に速いのでは…。
おそらくだけど、HSPのソレが全画面表示されるあたり、HSP は Raspberry Pi のGPU(VC4)をちゃんと使ってる作りなのでは。それで描画が速いのかもしれない。
いくつか動かしてみたのだけど。かなり描画が速い気がする…。 _先日、Pygame の動作確認をしてみた わけだけど、それらと比べると圧倒的に速いのでは…。
おそらくだけど、HSPのソレが全画面表示されるあたり、HSP は Raspberry Pi のGPU(VC4)をちゃんと使ってる作りなのでは。それで描画が速いのかもしれない。
◎ キーボードやマウスとの相性がありそう。 :
Raspberry Pi Zero W に普段接続しているワイヤレスキーボード、Logicool K400r では、Ctrl+C や ESCキーの入力が効かず、HSPの表示画面を終了させることができなくて。Windows機からSSHでログインして、killall hsp3dish を打って強制終了させるしかなかったのだけど。
ふと、別のキーボードを使ってみたらどうなるのか気になって試してみたら、なんだか悩ましい結果に…。
ちなみに、Raspberry Pi OS のデスクトップ画面を操作する分には、どの機器も問題無く使えてる。今のところは、HSPを動かした時だけ妙な動作になることを確認。
_スティック型PCと一緒に絶対買っておきたいタッチパッド付きのド定番キーボード『k400r』 - 週刊アスキー
_ASCII.jp:まさにThinkPadな純正USB/Bluetoothキーボードが登場!
_BSKBW03WH - バッファロー
_ロジクール、超小型レシーバの無線レーザーマウス「VX Nano」
_5ボタンワイヤレスBlueLEDマウス - M-BL21DBSV
_EX-G 有線BlueLEDマウス Mサイズ - M-XGM10UBBK
マウスは、どれを使っても軒並み全滅・利用できなかったのが痛い。無線か有線かで結果が違うのかと思ったけど、そういうわけでもないようで。どうして Lenovo のトラックポイントだけ反応するのだろう…。
もしかして、Rspbeery Pi 公式のキーボードやマウスを使えば、こういう問題は起きないのだろうか…?
ふと、別のキーボードを使ってみたらどうなるのか気になって試してみたら、なんだか悩ましい結果に…。
ちなみに、Raspberry Pi OS のデスクトップ画面を操作する分には、どの機器も問題無く使えてる。今のところは、HSPを動かした時だけ妙な動作になることを確認。
キーボード・マウス型番 | キー入力 | マウス操作 |
---|---|---|
ワイヤレス(無線)キーボード Logicool K400r (タッチパッド付) | No good | No good |
USB有線接続キーボード Lenovo KU-1255 (トラックポイント付) | Good | Good |
ワイヤレス(無線)キーボード BUFFALO BSKBW03WH | Good | None |
ワイヤレスマウス Logicool VX Nano | None | No good |
ワイヤレスマウス ELECOM M-BL21DBSV | None | No good |
USB有線接続マウス ELECOM M-XGM10UBBK | None | No good |
- キーボードは、Logicool K400r 以外なら、Ctrl+C や ESCキー入力を受け付けて、HSPの表示画面を終了させることができた。
- マウスは、Lenovo KU-1255 以外は入力を受け付けない。(OpenHSP同梱の block3.hsp を動かせば、パッドがマウスの動きに反応するはずだけど、KU-1255以外は無反応だった。)
_スティック型PCと一緒に絶対買っておきたいタッチパッド付きのド定番キーボード『k400r』 - 週刊アスキー
_ASCII.jp:まさにThinkPadな純正USB/Bluetoothキーボードが登場!
_BSKBW03WH - バッファロー
_ロジクール、超小型レシーバの無線レーザーマウス「VX Nano」
_5ボタンワイヤレスBlueLEDマウス - M-BL21DBSV
_EX-G 有線BlueLEDマウス Mサイズ - M-XGM10UBBK
マウスは、どれを使っても軒並み全滅・利用できなかったのが痛い。無線か有線かで結果が違うのかと思ったけど、そういうわけでもないようで。どうして Lenovo のトラックポイントだけ反応するのだろう…。
もしかして、Rspbeery Pi 公式のキーボードやマウスを使えば、こういう問題は起きないのだろうか…?
◎ 注意点。 :
hsed + サンプルファイルを動かしていて、ちょっと気になるところが。
一つは、キー入力が hsed のソースにも打ち込まれてしまう点。例えばスペースキー入力を要求するサンプルを動かしたりすると、スペースキーを押した時に、hsed上のソースにもスペースが入力されて、ソースがぐちゃぐちゃになってしまう。
たしかこのあたりは、 _pi3d や love2d でも体験した記憶が…。キーボード入力が、端末に対しても行われてしまうので、 _shut-term-keys を利用してどうにか誤魔化そう、みたいな話があったような気がする。HSPでも利用できるかどうかは分からないけど…。
もう一つは、マウスカーソルが表示されない点。HSPでGUI部品を表示しても、マウスカーソルが表示されない=マウスカーソルの位置が分からないから操作できない。
これは、Raspberry Pi の GPU を活用してる場合、仕方ないのだろうなと…。GPU の出力画面は X11 とは別レイヤーで表示されるらしいので、X11 のマウスカーソルが見えなくなってしまうのだろうと…。HSPスクリプト側でも独自のマウスカーソルを表示してやる、みたいな対策をすればどうにかなるのだろうか。
一つは、キー入力が hsed のソースにも打ち込まれてしまう点。例えばスペースキー入力を要求するサンプルを動かしたりすると、スペースキーを押した時に、hsed上のソースにもスペースが入力されて、ソースがぐちゃぐちゃになってしまう。
たしかこのあたりは、 _pi3d や love2d でも体験した記憶が…。キーボード入力が、端末に対しても行われてしまうので、 _shut-term-keys を利用してどうにか誤魔化そう、みたいな話があったような気がする。HSPでも利用できるかどうかは分からないけど…。
もう一つは、マウスカーソルが表示されない点。HSPでGUI部品を表示しても、マウスカーソルが表示されない=マウスカーソルの位置が分からないから操作できない。
これは、Raspberry Pi の GPU を活用してる場合、仕方ないのだろうなと…。GPU の出力画面は X11 とは別レイヤーで表示されるらしいので、X11 のマウスカーソルが見えなくなってしまうのだろうと…。HSPスクリプト側でも独自のマウスカーソルを表示してやる、みたいな対策をすればどうにかなるのだろうか。
◎ 2021/02/21追記。 :
キーボードやマウスの相性問題(?)について、もう少し検証してみた。
_2021/02/21の日記
にメモ。
[ ツッコむ ]
#2 [raspberrypi] Ctrl+Alt+Tで期待している端末が起動してくれない問題
Raspberry Pi Zero W + Raspberry Pi OS buster で、いつの間にか、Ctrl + ALt + T を叩いても lxterminal が起動してくれない状態になった。解決しないと…。
Ctrl + Alt + T に何が割り当てられているのかは、 /etc/X11/openbox/lxde-pi-rc.xml を眺めたら分かりそう。
ググったら、以下の記事が参考になった。ありがたや。
_Debian/Ubuntuでデフォルトのターミナルエミュレータを変更する -- ぺけみさお
以下で、呼び出す端末を変更できるらしい。
3番を選んで、lxterminal が優先されるように設定した。
Ctrl + Alt + T に何が割り当てられているのかは、 /etc/X11/openbox/lxde-pi-rc.xml を眺めたら分かりそう。
<keybind key="C-A-T"> <action name="Execute"> <command>x-terminal-emulator</command> </action> </keybind>x-teminal-emulator が割り当てられているらしい。
ググったら、以下の記事が参考になった。ありがたや。
_Debian/Ubuntuでデフォルトのターミナルエミュレータを変更する -- ぺけみさお
以下で、呼び出す端末を変更できるらしい。
update-alternatives --config x-terminal-emulator
$ sudo update-alternatives --config x-terminal-emulator alternative x-terminal-emulator (/usr/bin/x-terminal-emulator を提供) には 5 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/bin/lxterm 30 自動モード 1 /usr/bin/koi8rxterm 20 手動モード 2 /usr/bin/lxterm 30 手動モード 3 /usr/bin/lxterminal 20 手動モード 4 /usr/bin/uxterm 20 手動モード 5 /usr/bin/xterm 20 手動モード 現在の選択 [*] を保持するには <Enter>、 さもなければ選択肢の番号のキーを押してください: 3 update-alternatives: /usr/bin/x-terminal-emulator (x-terminal-emulator) を 提供するためにマニュアルモードで /usr/bin/lxterminal を使います
3番を選んで、lxterminal が優先されるように設定した。
[ ツッコむ ]
以上、1 日分です。