問題タブ [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.

0 投票する
3 に答える
438 参照

c - Linuxモジュールのコンパイル:structevdevメンバーが見つかりません

そこで、Linux上のマウスなどの入力デバイス用のイベントハンドラードライバーであるevdev.cを変更しようとしています。

私が抱えている問題は、モジュールをコンパイルしようとすると、evdevのメンバーが見つからないというエラーが大量に発生することです。

これはエラーのほんの一部です。

evdevの構造体は、私がコンパイルしているmousedev_dbl.cファイルに明確に存在します。

例として、215行目での使用方法を次に示します。

これらのエラーの原因は何ですか?ファイル全体はここにあります:http: //lxr.free-electrons.com/source/drivers/input/evdev.c

0 投票する
1 に答える
3628 参照

python - Python evdev は、デバイスが接続されていないことを検出します

USBバーコードリーダーの入力をリッスンするために優れた「evdev」ライブラリを使用しています。デバイスが突然取り外されたり応答しなくなったりするかどうかを検出する必要があります。そうしないと、ループを読み取るpythonスクリプトが単一のスレッドで100%のCPU使用率になり、利用可能なすべてのメモリをゆっくりと消費し始め、しばらくするとシステム全体がクラッシュします。

アイデアは、デバイスのプラグが抜かれたことを検出し、現在のスクリプトを強制終了して、デバイスが再び差し込まれるか応答するまでスーパーバイザがスクリプトを再起動しようとすることです。

入力を読み取るために使用しているコードは次のとおりです。

では、これを適切な方法で行うにはどうすればよいでしょうか。
私がそれがうまくいくかもしれないと思った方法は、1〜5分ごとにcronから実行され、デバイスがまだ利用可能かどうかを確認する2番目のスクリプトです。現在であれば、ファイルからプロセスIDを取得してプロセスを強制終了しますが、この方法では、デバイスがプラグを抜いてからチェックの間に再び差し込むと、メイン スクリプトがゆっくりとクラッシュしている間、「チェッカー」スクリプトはすべて問題ないと判断します。

0 投票する
2 に答える
2296 参照

python - マスクキーのキーバインディングの問題でpython-evdevを使用してイベントをuinputに送信する

要するに、クリップボードを編集し、アクティブなウィンドウに変更を貼り付けるキーバインドをプログラムに追加しようとしているということです。Windowsではおそらくメッセージパッシングでできると思いますが、Xはそのようなメッセージパッシングを使用しないため、これを行うために、python-evdevを使用してctrl + vイベントをuinputに送信しています。これは、実行するだけではかなりうまく機能しますが、キーバインドで実行する必要があります。この場合は super+v. 問題は、ctrl および v イベントを uinput に送信すると、スーパー マスクがまだアクティブであるため、ウィンドウに ctrl+v を送信する代わりに、実際には何もしない ctrl+super+v を送信することです。私が話していることを正確に説明するための最小限のコードを次に示します。

非常に迅速にリリースすれば、実際に動作させることができますが、非常に高速であり、実際のアプリケーションには明らかに受け入れられません。super をリリースしようとしましたが、いくつかの問題が発生します。それは非常に一般的ではなく、後で何をすべきかという問題を引き起こします (リリースしたままにしますか? もう一度押しますか? リリースしてからもう一度押すまでの時間内にリリースされたらどうしますか?)、そして最も重要なことに、そうではありません本当にうまくいくようです。

とにかく、私は質問だと思います、これを回避する方法はありますか?おそらく、物理キーボードと結合しないキープレスイベントを送信する方法 (ありそうもない)? そうでない場合、Linuxに一般的に貼り付けるためのより良い方法はありますか?

0 投票する
1 に答える
3262 参照

python - Mac OS に python-evdev をインストールするには?

python-evdevライブラリを Mac OSにインストールする方法はありますか? インストールしようとすると、MacはThe linux/input.h header file is missing.(もちろん)そう言います。Macにインストールできますか?または、他の代替手段を知っていますか?

でワコムの入力を読み取るアプリケーションがあり、/dev/input/wacomLinux でうまく動作しますが、Mac でも実行しようとしています。

0 投票する
2 に答える
6282 参照

python - Python evdev とバーコード スキャナー

バーコードスキャナーからの入力をキャッチするために使用する次のコードがあります。問題は、スキャンしたコード全体をデータベースに保存したいのですが、コードのすべての文字が新しい行に出力されることです:

私はPythonの初心者なので、どんな助けでも大歓迎です。

0 投票する
0 に答える
575 参照

c++ - Qt5: evdev-support を使用した静的プログラムのクロスコンパイル

簡単なプログラムをクロスコンパイルしようとしています。私のコンピューターでネイティブにコンパイルできます (プログラムは機能します)。私の開発ボード用にクロスコンパイルすると、linuxfb はすぐに使用できます。しかし、入力は生成されません。

それがqtの設定方法です:

それは私の.proです:

開発ボードで次の出力が得られます。

-plugin EvdevXXX を使用してプログラムを起動するか、パラメータを使用せずにプログラムを起動することに違いはないようです。何が問題で、どうすれば修正できますか?

0 投票する
1 に答える
1520 参照

linux - /usr/share/X11/xkb/rules のファイル evdev が evdev.lst と一致しないのはなぜですか?

evdev.lst にリストされている setxkbmap のいくつかのオプションは、付随する evdev ファイルでは実際にはサポートされていないようです。たとえば、ctrl:nocaps はサポートされていますが、ctrl:swap_lalt_lctl はサポートされていません。

これにより、欠落しているオプションを使用できなくなります。以前の質問で説明したように、一部の setxkbmap オプションが無視されるのはなぜですか? おまけの質問として、これらの不足しているオプションをサポートできるようにする方法はありますか?

0 投票する
1 に答える
3638 参照

linux - Linux 入力デバイス イベント、初期状態の取得方法

Linux を実行している組み込みデバイスのいくつかのボタンを処理するために、gpio-keysデバイス ドライバーを使用しています。ユーザー空間のアプリケーションは/dev/input/eventX、ループ内で入力イベントを開いて読み取ることができます。

私の質問は、ボタンの初期状態を取得する方法です。EVIOCGKEYこれに使用できるioctl 呼び出し ( ) がありますが、最初にこれを確認してから から読み取りを開始する/dev/input/eventXと、その間に状態が変化しなかったことを保証する方法はありません。

助言がありますか?

0 投票する
2 に答える
1905 参照

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 モジュールを必要としていますが、バインディングがターゲット アーキテクチャでサポートされていない場合、とにかくそれを使用できるようにするために何が必要ですか?

御時間ありがとうございます、

0 投票する
0 に答える
1027 参照

python - カスタムデーモンを使用してLinuxでキーボード入力を傍受する方法は?

Linuxマシンに接続された特別なキーボードにバインドできるデーモンを、できればPythonを使用して構築しようとしています。特別なキーボードはバーコード スキャナーですが、HID インターフェイスを備えています。

マシン上で X を実行することは避けたいのでevdev、python バインディングのような低レベルのものが適切と思われます。

私の提案は次のとおりです。

  1. カスタム udev ルールを使用してキャラクター デバイスを生成し/dev/input/barcode0、権限を修正してデーモンがデバイスにアクセスできるようにします。
  2. 入力を取得するために使用evdevします。

このアプローチは実現可能ですか?キーボード イベントはどうなりますか? マシン上の実行中のコンソールに渡されないようにそれらを消費することは可能ですか?

SO で同様の問題に関する質問を見つけましたが、私が使用していない X サーバーを使用しています。