問題タブ [evdev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Linuxモジュールのコンパイル:structevdevメンバーが見つかりません
そこで、Linux上のマウスなどの入力デバイス用のイベントハンドラードライバーであるevdev.cを変更しようとしています。
私が抱えている問題は、モジュールをコンパイルしようとすると、evdevのメンバーが見つからないというエラーが大量に発生することです。
これはエラーのほんの一部です。
evdevの構造体は、私がコンパイルしているmousedev_dbl.cファイルに明確に存在します。
例として、215行目での使用方法を次に示します。
これらのエラーの原因は何ですか?ファイル全体はここにあります:http: //lxr.free-electrons.com/source/drivers/input/evdev.c
python - Python evdev は、デバイスが接続されていないことを検出します
USBバーコードリーダーの入力をリッスンするために優れた「evdev」ライブラリを使用しています。デバイスが突然取り外されたり応答しなくなったりするかどうかを検出する必要があります。そうしないと、ループを読み取るpythonスクリプトが単一のスレッドで100%のCPU使用率になり、利用可能なすべてのメモリをゆっくりと消費し始め、しばらくするとシステム全体がクラッシュします。
アイデアは、デバイスのプラグが抜かれたことを検出し、現在のスクリプトを強制終了して、デバイスが再び差し込まれるか応答するまでスーパーバイザがスクリプトを再起動しようとすることです。
入力を読み取るために使用しているコードは次のとおりです。
では、これを適切な方法で行うにはどうすればよいでしょうか。
私がそれがうまくいくかもしれないと思った方法は、1〜5分ごとにcronから実行され、デバイスがまだ利用可能かどうかを確認する2番目のスクリプトです。現在であれば、ファイルからプロセスIDを取得してプロセスを強制終了しますが、この方法では、デバイスがプラグを抜いてからチェックの間に再び差し込むと、メイン スクリプトがゆっくりとクラッシュしている間、「チェッカー」スクリプトはすべて問題ないと判断します。
python - マスクキーのキーバインディングの問題でpython-evdevを使用してイベントをuinputに送信する
要するに、クリップボードを編集し、アクティブなウィンドウに変更を貼り付けるキーバインドをプログラムに追加しようとしているということです。Windowsではおそらくメッセージパッシングでできると思いますが、Xはそのようなメッセージパッシングを使用しないため、これを行うために、python-evdevを使用してctrl + vイベントをuinputに送信しています。これは、実行するだけではかなりうまく機能しますが、キーバインドで実行する必要があります。この場合は super+v. 問題は、ctrl および v イベントを uinput に送信すると、スーパー マスクがまだアクティブであるため、ウィンドウに ctrl+v を送信する代わりに、実際には何もしない ctrl+super+v を送信することです。私が話していることを正確に説明するための最小限のコードを次に示します。
非常に迅速にリリースすれば、実際に動作させることができますが、非常に高速であり、実際のアプリケーションには明らかに受け入れられません。super をリリースしようとしましたが、いくつかの問題が発生します。それは非常に一般的ではなく、後で何をすべきかという問題を引き起こします (リリースしたままにしますか? もう一度押しますか? リリースしてからもう一度押すまでの時間内にリリースされたらどうしますか?)、そして最も重要なことに、そうではありません本当にうまくいくようです。
とにかく、私は質問だと思います、これを回避する方法はありますか?おそらく、物理キーボードと結合しないキープレスイベントを送信する方法 (ありそうもない)? そうでない場合、Linuxに一般的に貼り付けるためのより良い方法はありますか?
python - Mac OS に python-evdev をインストールするには?
python-evdev
ライブラリを Mac OSにインストールする方法はありますか? インストールしようとすると、MacはThe linux/input.h header file is missing.
(もちろん)そう言います。Macにインストールできますか?または、他の代替手段を知っていますか?
でワコムの入力を読み取るアプリケーションがあり、/dev/input/wacom
Linux でうまく動作しますが、Mac でも実行しようとしています。
python - Python evdev とバーコード スキャナー
バーコードスキャナーからの入力をキャッチするために使用する次のコードがあります。問題は、スキャンしたコード全体をデータベースに保存したいのですが、コードのすべての文字が新しい行に出力されることです:
私はPythonの初心者なので、どんな助けでも大歓迎です。
c++ - Qt5: evdev-support を使用した静的プログラムのクロスコンパイル
簡単なプログラムをクロスコンパイルしようとしています。私のコンピューターでネイティブにコンパイルできます (プログラムは機能します)。私の開発ボード用にクロスコンパイルすると、linuxfb はすぐに使用できます。しかし、入力は生成されません。
それがqtの設定方法です:
それは私の.proです:
開発ボードで次の出力が得られます。
-plugin EvdevXXX を使用してプログラムを起動するか、パラメータを使用せずにプログラムを起動することに違いはないようです。何が問題で、どうすれば修正できますか?
linux - /usr/share/X11/xkb/rules のファイル evdev が evdev.lst と一致しないのはなぜですか?
evdev.lst にリストされている setxkbmap のいくつかのオプションは、付随する evdev ファイルでは実際にはサポートされていないようです。たとえば、ctrl:nocaps はサポートされていますが、ctrl:swap_lalt_lctl はサポートされていません。
これにより、欠落しているオプションを使用できなくなります。以前の質問で説明したように、一部の setxkbmap オプションが無視されるのはなぜですか? おまけの質問として、これらの不足しているオプションをサポートできるようにする方法はありますか?
linux - Linux 入力デバイス イベント、初期状態の取得方法
Linux を実行している組み込みデバイスのいくつかのボタンを処理するために、gpio-keysデバイス ドライバーを使用しています。ユーザー空間のアプリケーションは/dev/input/eventX
、ループ内で入力イベントを開いて読み取ることができます。
私の質問は、ボタンの初期状態を取得する方法です。EVIOCGKEY
これに使用できるioctl 呼び出し ( ) がありますが、最初にこれを確認してから から読み取りを開始する/dev/input/eventX
と、その間に状態が変化しなかったことを保証する方法はありません。
助言がありますか?
python - OpenWrt 用の Python Evdev バインディング
良い一日、
私は学生です。少しお時間をいただきたいと思います。USBポートを介してボード名Arduino Yunに接続されたバーコードリーダーに取り組んでいます。このボードは、Atheros AR9331 という名前のマイクロプロセッサを使用して、OpenWrt から派生した組み込み Linux のバージョンを実行します。
Python Evdev バインディング (python-evdev.readthedocs.org/en/latest/) をこのタイプの MIPS マイクロアーキテクチャで実行できるようにするには、何が必要ですか? 現時点では、Ubuntu と ArchLinux のみに対応しています。クロスコンパイルが必要になるか、このLinux内で特定のCコンパイラが使用されていることを示していると推測しています。
OpenWrt でサポートされている現在の python バージョンは 2.7.3 です。PC で C コードをコンパイルすると、結果の実行可能ファイルはこのタイプのアーキテクチャでのみ実行されます。そのコンパイルされたプログラムをマイクロプロセッサ内で使用すると、機能しません。PCのubuntu内でこのバインディングを問題なく使用しました。setuptools の以前のインストールで、python setup.py install の指示に従いましたが、問題なく動作しました。
しかし、OpenWrt に関しては、そうではありませんでした。
私が使用している Python スクリプトでは、デバイスからデータにアクセスするために、コードの最初の行にこのライブラリが必要です (キーボードの /dev/input/event0 のように機能します)。
#!/usr/bin/env python
from evdev import InputDevice, ecodes, list_devices
from select import select
ライブラリ全体をarduino内にコピーし、同じフォルダー内でスクリプトを実行するという提案を見てきました。しかし、evdev モジュールには MIPS ではなく PC のアーキテクチャで作成されたファイルがあるため、これは機能しません。
では、エラーに対して表示されるメッセージは何ですか? Openwrt で実行python setup.py install
して evdev バインディングをインストールしようとすると、画面に次のように表示されます。
File "setup.py", line 10, in <module>
from setuptools.command.develop import develop
ImportError: No module named setuptools.command.develop
ここから、前述のモジュールが必要であることは明らかです。そこで、このスクリプト (pypi.python.org/pypi/setuptools) でインストールしようとしました:
python ez_setup.py
そして出力はこれを示します:
Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip
Traceback (most recent call last):
File "ez_setup.py", line 332, in <module>
sys.exit(main())
File "ez_setup.py", line 327, in main
downloader_factory=options.downloader_factory,
File "ez_setup.py", line 287, in download_setuptools
downloader(url, saveto)
File "ez_setup.py", line 209, in download_file_curl
_clean_check(cmd, target)
File "ez_setup.py", line 169, in _clean_check
subprocess.check_call(cmd)
File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
raise CalledProcessError(retcode 、cmd)
subprocess.CalledProcessError: Command '['curl',
' https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip '、'--silent'、'--output'、'/mnt/sda1/evdev -0.4.6/setuptools-11.3.1.zip']' がゼロ以外の終了ステータス 60 を返しました
この出力は、 pypi が OpenWrt の python 2.7.3 には存在せず、新しいバージョンと他のアーキテクチャにのみ存在するという事実によるものだと思います。Evedv バインディングは、物事をより簡単かつ標準にするために setuptools モジュールを必要としていますが、バインディングがターゲット アーキテクチャでサポートされていない場合、とにかくそれを使用できるようにするために何が必要ですか?
御時間ありがとうございます、
python - カスタムデーモンを使用してLinuxでキーボード入力を傍受する方法は?
Linuxマシンに接続された特別なキーボードにバインドできるデーモンを、できればPythonを使用して構築しようとしています。特別なキーボードはバーコード スキャナーですが、HID インターフェイスを備えています。
マシン上で X を実行することは避けたいのでevdev
、python バインディングのような低レベルのものが適切と思われます。
私の提案は次のとおりです。
- カスタム udev ルールを使用してキャラクター デバイスを生成し
/dev/input/barcode0
、権限を修正してデーモンがデバイスにアクセスできるようにします。 - 入力を取得するために使用
evdev
します。
このアプローチは実現可能ですか?キーボード イベントはどうなりますか? マシン上の実行中のコンソールに渡されないようにそれらを消費することは可能ですか?
SO で同様の問題に関する質問を見つけましたが、私が使用していない X サーバーを使用しています。