2021/03/06(土) [n年前の日記]
#1 [prog] Borland C/C++ Compilerを試用
C/C++における配列の書き方を忘れてしまったので、復習しようとしたのだけど。せっかくだから、この際 Borland C/C++ Compiler (embarcadero C++ Compiler, bcc32c) を試用してみるか、と。
_無料版 - エンバカデロ・テクノロジーズ
_C++Compiler - エンバカデロ・テクノロジーズ
以下のページを参考にして導入。環境は Windows10 x64 20H2。
_C/C++ 開発環境のインストール
昔は、無料版と言えば 5.5 が有名だったけど、今は 7.3 が配布されているらしい。メールアドレスその他を入力して、BCC102.zip を入手。解凍して任意のフォルダに置いて bin/ にPATHを通した。
Helloworld を試してみる。
_testbcc.c
以下を打てばコンパイルできる模様。
_無料版 - エンバカデロ・テクノロジーズ
_C++Compiler - エンバカデロ・テクノロジーズ
以下のページを参考にして導入。環境は Windows10 x64 20H2。
_C/C++ 開発環境のインストール
昔は、無料版と言えば 5.5 が有名だったけど、今は 7.3 が配布されているらしい。メールアドレスその他を入力して、BCC102.zip を入手。解凍して任意のフォルダに置いて bin/ にPATHを通した。
Helloworld を試してみる。
_testbcc.c
以下を打てばコンパイルできる模様。
bcc32c testbcc.ctestbcc.exe が生成された。
◎ ウインドウアプリケーションのビルドでハマった。 :
コンソールアプリケーションなら前述の指定で済むけれど、HDD内に残ってた、ウインドウアプリケーションのサンプルがビルドできなくて…。
以下のページを参考にして、.obj を生成してからリンクする Makefile を書いてみたらビルドができた。
_サンプルプログラム2-1(Windows)
ちなみに、make.exe は Borland C/C++ Compiler の bin/ 以下に同梱されていた。
ビルドした .c は以下。
_testbcc_w.c
_makefile
Makefile内の -L で指定してるパスは、各環境に合わせて修正する必要がある。
以下のページを参考にして、.obj を生成してからリンクする Makefile を書いてみたらビルドができた。
_サンプルプログラム2-1(Windows)
ちなみに、make.exe は Borland C/C++ Compiler の bin/ 以下に同梱されていた。
ビルドした .c は以下。
_testbcc_w.c
_makefile
Makefile内の -L で指定してるパスは、各環境に合わせて修正する必要がある。
◎ MSYS2に戻った。 :
一応、HDD内に残ってた helloworldサンプルを、コンパイル・ビルドできたけど。考えてみたら、今時は Microsoft製のコンパイラも無料で使わせてもらえるし、MSYS2を導入して gcc/g++ を使ってもいいのだよな…。あえて Borland C/C++ を使わねばならない場面って、ほとんど無いよな…。
そんなわけで、C/C++ の復習は、MSYS2 + gcc/g++ を使って行うことにした。MSYS2 は導入済みだったので、MSYS2 MinGW 64bit を起動して作業。
そんなわけで、C/C++ の復習は、MSYS2 + gcc/g++ を使って行うことにした。MSYS2 は導入済みだったので、MSYS2 MinGW 64bit を起動して作業。
[ ツッコむ ]
#2 [hsp][raspberrypi][linux] キーボードとマウスの取得についてまだまだ実験中
Raspberry Pi用HSPで、使っているキーボードやマウスによっては無反応になってしまう件について、hsp3dish.cpp を修正して動作を改善できないか、
_昨日の作業
を踏まえつつ実験中。
環境は、Raspberry Pi Zero W + Raspberry Pi OS buster。
修正対象ファイルは、 _OpenHSP/src/hsp3dish/raspbian/hsp3dish.cpp 。
HSPは、/dev/input/by-id 以下に、event-kbd(キーボード), event-mouse(マウス)が1つずつ出現するはず、という前提で処理が書かれているけれど。利用するキーボードやマウス製品によっては、そういう情報を返してくるとは限らなくて。
例えば以下の3製品は、想定していない情報を返してくる…。
なので、試しに、/dev/input/by-id以下に出現した event-kbd, event-mouse を全て対象にして ―― キーボードが1つ、マウスが1つ接続されてるはずと決めつけないで、相手が event-kbd か event-mouse と言ってきたらとにかくそれら全てを何個でも監視対象にして、かつ、各機器がキー入力とマウス入力を混ぜてきても取得できるように変更して動作確認してみた。
ちなみに、昨日試した、/proc/bus/input/devices の内容を見てキーボードを見つける処理は削除した。その処理では、EV=1200.. を返す機器が複数出てきた際に、どのみち対処できないので…。
修正部分は、initKeyboard(), updateKeyboard(), doneKeyboard() の3つ。かつ、グローバル変数をいくつか追加。
_hsp3dish.cpp
_hsp3dish.cpp.diff
動作確認には、sample/block3.hsp を利用。マウスを移動するとバーが左右に動いて、ESCキーを押すか、マウスの右ボタンクリックでスクリプトが終了する。
環境は、Raspberry Pi Zero W + Raspberry Pi OS buster。
修正対象ファイルは、 _OpenHSP/src/hsp3dish/raspbian/hsp3dish.cpp 。
HSPは、/dev/input/by-id 以下に、event-kbd(キーボード), event-mouse(マウス)が1つずつ出現するはず、という前提で処理が書かれているけれど。利用するキーボードやマウス製品によっては、そういう情報を返してくるとは限らなくて。
例えば以下の3製品は、想定していない情報を返してくる…。
- USB接続ワイヤレスキーボード(タッチパッド付) Logicool K400r : event-mouse は返すが event-kbd は返さない。また、キーボードとマウスの入力値が、同じevent番号に入ってくる。
- USB接続ワイヤレスキーボード BUFFALO BSKBW03WH : event-kbd と event-mouse を返す。
- USB有線接続マウス A4Tech XL-755BK : event-mouse と event-kbd を返す。
なので、試しに、/dev/input/by-id以下に出現した event-kbd, event-mouse を全て対象にして ―― キーボードが1つ、マウスが1つ接続されてるはずと決めつけないで、相手が event-kbd か event-mouse と言ってきたらとにかくそれら全てを何個でも監視対象にして、かつ、各機器がキー入力とマウス入力を混ぜてきても取得できるように変更して動作確認してみた。
ちなみに、昨日試した、/proc/bus/input/devices の内容を見てキーボードを見つける処理は削除した。その処理では、EV=1200.. を返す機器が複数出てきた際に、どのみち対処できないので…。
修正部分は、initKeyboard(), updateKeyboard(), doneKeyboard() の3つ。かつ、グローバル変数をいくつか追加。
_hsp3dish.cpp
_hsp3dish.cpp.diff
動作確認には、sample/block3.hsp を利用。マウスを移動するとバーが左右に動いて、ESCキーを押すか、マウスの右ボタンクリックでスクリプトが終了する。
◎ 動作結果。 :
この修正をしたことで、Logicool K400r も、ESCキーを押すとスクリプトが終了するし、マウス(タッチパッド)を動かすとバーが左右に動くようになった。
また、ワーストケース(?)、BUFFALO BSKBW03WH + A4Tech XL-755BK の組み合わせでも、ESCキーを押すとスクリプトが終了するし、マウスを動かすとバーが左右に動いてくれた。
ということで、もしかすると書き方次第では、変わった識別情報を返してくるキーボードやマウスにも対応できそうだなと…。
ただ、キー入力やマウス入力を解析する部分が、こういう書き方でも問題無いのかどうかは分からず…。一応動いてるように見えるけど…。キー入力で evp->code == 0 or 1 が来た時におかしなことにならないか…。
また、ワーストケース(?)、BUFFALO BSKBW03WH + A4Tech XL-755BK の組み合わせでも、ESCキーを押すとスクリプトが終了するし、マウスを動かすとバーが左右に動いてくれた。
ということで、もしかすると書き方次第では、変わった識別情報を返してくるキーボードやマウスにも対応できそうだなと…。
ただ、キー入力やマウス入力を解析する部分が、こういう書き方でも問題無いのかどうかは分からず…。一応動いてるように見えるけど…。キー入力で evp->code == 0 or 1 が来た時におかしなことにならないか…。
◎ ログ内容。 :
hsp3dish.cpp に printf() を入れてキーボードやマウスの認識状態を確認した結果もメモ。
BUFFALO BSKBW03WH + A4Tech XL-755BK の場合は以下。
実態としては、キーボード1つ、マウス1つを接続している状態だけど、BUFFALO BSKBW03WH は、キーボードなのに event-kbd と event-mouse を返すし、A4Tech XL-755BK は、マウスなのに event-mouse と event-kbd を返すので、計4つの機器が認識されていることになっている。が、4つの event を全部チェックするようにしたので、 ESCキー押しも、マウスの移動も反応するようになった。
Logiccol K400r を接続した場合は以下。
Logicool K400r はタッチパッド付キーボードで、event-mouse しか返さない。また、キーボード入力もマウス入力も1つのeventに割り当てられてしまう。なので、HSPからはマウス1つ分だけが検出される。が、キーボードかマウスかで入力の解析処理を分けずに、キー入力もマウス入力もどちらも1つのeventに入ってくる可能性があることを前提にして入力をチェックするようにしたので、ESCキー押しも、マウス操作(タッチパッド操作)も反応するようになった。
BUFFALO BSKBW03WH + A4Tech XL-755BK の場合は以下。
Runtime[hsp3dish]. hsed: Runtime [hsp3dish]. Init:hgio_setmainarg(/home/mieki256/OpenHSP/.,__hsptmp.ax) Init:HGIOScreen(1280,720) readdir (.) readdir (..) readdir (usb-A4TECH_USB_Device-event-if00) readdir (usb-A4TECH_USB_Device-if01-event-mouse) match mouse : /dev/input/by-id/usb-A4TECH_USB_Device-if01-event-mouse , devFd : 6 Getting exclusive access: SUCCESS readdir (usb-A4TECH_USB_Device-event-kbd) match kbd : /dev/input/by-id/usb-A4TECH_USB_Device-event-kbd , devFd : 7 readdir (usb-A4TECH_USB_Device-if01-mouse) readdir (usb-JME_RF_Receiver-event-if02) readdir (usb-JME_RF_Receiver-event-kbd) match kbd : /dev/input/by-id/usb-JME_RF_Receiver-event-kbd , devFd : 8 readdir (usb-JME_RF_Receiver-if01-event-mouse) match mouse : /dev/input/by-id/usb-JME_RF_Receiver-if01-event-mouse , devFd : 9 Getting exclusive access: SUCCESS readdir (usb-JME_RF_Receiver-if01-mouse) readdir (usb-Logitech_USB_Receiver-event-if01) Execute from __hsptmp.ax runtime[hsp3dish](1). hsed: Process end 0.
実態としては、キーボード1つ、マウス1つを接続している状態だけど、BUFFALO BSKBW03WH は、キーボードなのに event-kbd と event-mouse を返すし、A4Tech XL-755BK は、マウスなのに event-mouse と event-kbd を返すので、計4つの機器が認識されていることになっている。が、4つの event を全部チェックするようにしたので、 ESCキー押しも、マウスの移動も反応するようになった。
Logiccol K400r を接続した場合は以下。
Runtime[hsp3dish]. hsed: Runtime [hsp3dish]. Init:hgio_setmainarg(/home/mieki256/OpenHSP/.,__hsptmp.ax) Init:HGIOScreen(1280,720) readdir (.) readdir (..) readdir (usb-Logitech_USB_Receiver-if02-event-mouse) match mouse : /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse , devFd : 6 Getting exclusive access: SUCCESS readdir (usb-Logitech_USB_Receiver-if02-mouse) readdir (usb-Logitech_USB_Receiver-event-if01) Execute from __hsptmp.ax runtime[hsp3dish](1). hsed: Process end 0.
Logicool K400r はタッチパッド付キーボードで、event-mouse しか返さない。また、キーボード入力もマウス入力も1つのeventに割り当てられてしまう。なので、HSPからはマウス1つ分だけが検出される。が、キーボードかマウスかで入力の解析処理を分けずに、キー入力もマウス入力もどちらも1つのeventに入ってくる可能性があることを前提にして入力をチェックするようにしたので、ESCキー押しも、マウス操作(タッチパッド操作)も反応するようになった。
[ ツッコむ ]
#3 [movie] 「ハン・ソロ/スター・ウォーズ・ストーリー」を視聴
昨日TV放映されてたので視聴。STAR WARSシリーズに登場するハン・ソロの若い頃を映画化、という企画らしい。
フツーに面白かった。相棒との出会いや、愛機を入手した流れ等々、EP4〜6で提示されたアレコレを補完する内容で、なるほどそういう話にしてみたのか、みたいな。VFXもやっぱりゴイスで、空戦シーンはスピード感や迫力に溢れていた印象。
最後のあたりのアレは、 _「ハンが先に撃った」 問題を取り込んだソレなのだろうな…。当時のマニアの人達なら、「この(監督|脚本家)、(分かってる|分かってない)な…」と思えるシーン、だったのではあるまいか。
ググってみたら、評価は高かったけど興行収入は予想を大幅に下回ったらしい。それでも黒字になってるあたりはさすが、なのだろうか。
フツーに面白かった。相棒との出会いや、愛機を入手した流れ等々、EP4〜6で提示されたアレコレを補完する内容で、なるほどそういう話にしてみたのか、みたいな。VFXもやっぱりゴイスで、空戦シーンはスピード感や迫力に溢れていた印象。
最後のあたりのアレは、 _「ハンが先に撃った」 問題を取り込んだソレなのだろうな…。当時のマニアの人達なら、「この(監督|脚本家)、(分かってる|分かってない)な…」と思えるシーン、だったのではあるまいか。
ググってみたら、評価は高かったけど興行収入は予想を大幅に下回ったらしい。それでも黒字になってるあたりはさすが、なのだろうか。
[ ツッコむ ]
以上、1 日分です。