Armadilloフォーラム

ATDE9開発のキーボード検知について

matsui.k

2024年7月22日 10時37分

 お世話になっております。
Windows11 Home 64bitにて、oracle VM VirtualBox7.0でのATDE9の開発についてお伺い致します。

 Armadilloに接続したノートPCのキーボード入力を検知するためにbuttondを使用する事を検討しており、

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
「6.18.2. USB キーボードの対応」

を参考にキーボードのイベントを確認しようとしたのですが、
buttond -vvv /dev/input/* /dev/input/by-*/*
のコマンドを実行して←キー、↑キー、→キー、↓キーと順に押下したところ、

buttond -vvv /dev/input/* /dev/input/bu-*/*
Skipping directory /dev/inout/by-path
^[[D
^[[A
^[[C
^[[B

と出力されました。
マニュアルの「図6.221 buttond で USB キーボードのイベントを確認する」とは
大きく異なりますが、接続したノートPCのキー入力検知の際は上記マニュアルの手順以外の方法で
キー入力を検知しなければいけないのでしょうか。

また、
buttond -vvv /dev/input/* /dev/input/by-*/*
のコマンドを実行したら
ERROR: File /dev/pint/by-*/* does not exist and we are not in inotify mode
のエラーが出る時がありました。
イベント確認のコマンドを実行する前に行わなければいけない処理や設定等があるという事でしょうか。
もし何らかの設定等がございましたらご教授願えませんでしょうか。

コメント

at_ohsawa

2024年7月22日 10時51分

>  お世話になっております。
> Windows11 Home 64bitにて、oracle VM VirtualBox7.0でのATDE9の開発についてお伺い致します。
>
>  Armadilloに接続したノートPCのキーボード入力を検知するためにbuttondを使用する事を検討しており、

その考え方は誤りです。
buttondはArmadilloに”キーボード”を接続した場合に使うことができます。

ノートPCのキーボードを押したときキー入力が伝わるのはノートPCのCPUであって
Armadilloではありません。

今話されている状況は、PCとArmadilloをUSB経由のシリアルポートで接続しており、
PC上でうごいている仮想コンソールアプリケーションによってシリアルポートへの
キャラクタ通信がArmadilloへ伝わっています。Armadilloに伝わっているのは
キー入力ではありません。

もし、つまりただのシリアル通信です。
シリアルポートからの入力を待ち受けて(つまり単なるCUIアプリですね)
プログラムの実行をしたいのであれば

シェルスクリプトで以下のようなスクリプトを書いてarmadilloで実行すると
良いです。(勿論、この場合PC上で仮想コンソールアプリケーションを開いて
入力可能な状態にしておく必要があります。)

#!/bin/sh
 
echo -n INPUT:
read data
echo $data

matsui.k

2024年7月22日 15時50分

ご回答ありがとうございます。

シェルについてはまったくの未経験のため少々難儀致しましたが、
キー入力を検知するスクリプトを作成し、Armadilloで実行させる事でキー入力検知が実現しました。

マニュアルのシェルの記述について1点お伺いしたいのですが、
https://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
図5.8 算術演算の例 にて、
「変数に対して算術演算を行う場合は、$(())構文を使います。」
とありますが、他の方法( 'expr~' や@ ~等)は使用不可、と言う認識でよろしかったでしょうか、

> その考え方は誤りです。
> buttondはArmadilloに”キーボード”を接続した場合に使うことができます。
>
> ノートPCのキーボードを押したときキー入力が伝わるのはノートPCのCPUであって
> Armadilloではありません。
>
> 今話されている状況は、PCとArmadilloをUSB経由のシリアルポートで接続しており、
> PC上でうごいている仮想コンソールアプリケーションによってシリアルポートへの
> キャラクタ通信がArmadilloへ伝わっています。Armadilloに伝わっているのは
> キー入力ではありません。
>
> もし、つまりただのシリアル通信です。
> シリアルポートからの入力を待ち受けて(つまり単なるCUIアプリですね)
> プログラムの実行をしたいのであれば
>
> シェルスクリプトで以下のようなスクリプトを書いてarmadilloで実行すると
> 良いです。(勿論、この場合PC上で仮想コンソールアプリケーションを開いて
> 入力可能な状態にしておく必要があります。)