問題タブ [input-devices]
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 - /dev/input/eventx 以外の Linux キーボードにアクセスするための高レベル (文字?) ベースの方法はありますか?
キーボードのような (HID) デバイスから入力を受け取る必要がある Linux デーモンを作成しようとしています。これはコンソール キーボードではなく、2 番目のデバイスです (違いがあれば、実際には 1D バーコード スキャナーです)。デーモンは、受信したデータ (英数字バーコードからの「キーストローク」) を処理します。
デーモンが ioctl(EVIOCGRAB) を使用して /dev/input/eventx からそのデバイスを取得し、次に read() イベント (<linux/input.h> からの struct input_event) を使用できることはわかっていますが、それは私のレベルでは低すぎます。ニーズ。すべての上下キーイベントについて知る必要はなく、同時キーをデコード/処理する必要もありません。つまり、KEY_DOWN+KEY_RTSHIFT、KEY_DOWN+KEY_A、KEY_UP+KEY_RTSHIFT、KEY_UP+KEY_A を知りたくありません、「A」を受け取りたいだけです。
入力イベントを使用するには、"A" を取得するためだけに大量の余分なコードを記述する必要があります。これは、ほぼ確実に既存のキーボード ハンドラー (またはそのようなもの) が存在する場合、時間と労力の無駄に思えます。コードを一緒にハッキングするよりもはるかに優れた仕事をします-私はそれらを見つけることができません!
(キーボード?) ソフトウェアの既存のレイヤーを /dev/input/eventx に配置して、デーモンが単純な ascii のストリームを排他的に読み取る方法はありますか?
このデバイスの場合、/proc/bus/input/devices は ... を報告します。
...何かがすでに「kbd」レイヤーを配置していることを示唆している可能性がありますが、それにアクセスするにはどうすればよいですか?
EVIOCGRAB を使用しない場合、バーコードをスキャンすると、「/dev/tty1 でのログインに失敗しました」という syslog が表示されるため、キーボード入力が明らかにターミナル/シェルのどこかにログインしようとしています :-/ (X はありません。このマシンのデスクトップなど。)