Armadilloフォーラム

QtアプリケーションでのUSB抜き差し後の再認識について

kubo2276

2020年10月15日 21時24分

いつもお世話になっております。久保と申します。

USBポートにマウスとキーボードを接続して操作するQt Widgetアプリケーションを開発しているのですが
一度マウス or キーボードを抜き、再接続するとアプリケーションでは認識されず
アプリケーションを再起動すると認識されるような挙動となっています。

暫定的な回避策として/ etc/ udev/ rules.d にルールを追加し
ACTION=="add", SUBSYSTEMS=="input" でinputデバイスが接続されたら
アプリケーションを再起動するようにしていますが
出来ることならアプリケーションの再起動を行わずともデバイスの再認識を行えればと思い
方法を模索しております、ArmadilloというよりはQtの仕組みを探すべきなのかも知れませんが
お知恵を拝借できればと思います。

【atmark-dist】3.4-at27
【Qtバージョン】5.6.2

コメント

入江です。

回答が遅くなってしまい申し訳ございません。

USBマウスやキーボードを再接続した際にQtアプリケーションで認識できない
のは、atmark-distのudevのバージョンが古い(v105)ためです。
Armadillo-840向けに配布しておりますdebianユーザーランドは、udevのバー
ジョンが新しい(v175)ため、Qtアプリケーション起動後にUSBマウスを抜き差
ししても認識することが確認できます。

そこで、Armadillo-840のatmark-distのudevのバージョンを175にするpatchを
作成してみました。
atmark-dist-20191226に添付のpatchを適用し、default configを適用の上ビ
ルドしてお使いください。

本手順で作成したatmark-distにおいて、当方では最低限USBマウス再接続時の
再認識を確認したのみで、他の動作に関しましてはテストを行っておりません
ので、ご使用の際はお客様による十分なテストを行ってからご使用ください。

ファイル ファイルの説明
udev-175.patch

入江様
具体的な解決法までご提示ありがとうございます。

早速試してみたいと考えているのですが
1点初歩的なことかもしれませんがご教示頂けますと幸いです。

>default configを適用の上ビルドしてお使いください。
default configの適用というのはどういった操作の事を指しておられるのでしょうか?
(makeコマンドのオプションやMakefileの中身の記述等でしょうか?)

入江です。

> >default configを適用の上ビルドしてお使いください。
> default configの適用というのはどういった操作の事を指しておられるのでしょうか?
> (makeコマンドのオプションやMakefileの中身の記述等でしょうか?)

以下のようにmenuconfigにてDefault all settingsを有効にすることを
default configと呼称してしまいました。わかりにくい表現をしてしまい申し
訳ございません。

Kernel/Library/Defaults Selection --->
    --- Kernel is linux-3.x
    (default) Cross-dev
    (None) Libc Version
    [*] Default all settings (lose changes)
    [ ] Customize Kernel Settings
    [ ] Customize Vendor/User Settings
    [ ] Customize Kernel Settings

patch適用後のatmark-distでは Default all settings を適用することでudev
のバージョンが175になるようになっております。
別途Makefileなどのファイルを編集する必要はございません。