質問は逆の順序で行います。
- なぜそんなにたくさんあるのですか?
これらは、マシンに存在するほとんどの入力を表すデバイスです(他にもあります/dev/input
。たとえば、マイクはでは管理されません)。1つのキーボードと1つのマウスで2つのデバイスが提供されるという想定に反して、最も単純なキーボードとマウスでも6つのデバイスが提供されます。
なぜ6?Xorgは起動時にテスト入力キーボードとテスト入力マウス(両方とも仮想)を作成するためです。また、テストキーボードと実際のキーボードをメインの仮想デバイスに集約します。つまり、入力の多重化を実行します。テストと実際のマウスにも同じことが起こります。
さらに、一般的なコンピューター(デスクトップまたはラップトップ)には、キーボード以外に電源ボタン、スリープボタンなどのボタンがあります。
eventN
そこでのデバイスは、Xorgのが作成するもののためのデバイスとコンピュータが持っているもののためのものです。N
連番IDから来て、内のIDと類似していますxinput
。たとえば、私のマシンでは:
[~]# ls -l /dev/input/
total 0
drwxr-xr-x 2 root root 100 Jan 26 16:01 by-id
drwxr-xr-x 2 root root 140 Jan 26 16:01 by-path
crw-rw---- 1 root input 13, 64 Jan 26 16:01 event0
crw-rw---- 1 root input 13, 65 Jan 26 16:01 event1
crw-rw---- 1 root input 13, 74 Jan 26 16:01 event10
crw-rw---- 1 root input 13, 75 Jan 26 16:01 event11
crw-rw---- 1 root input 13, 76 Jan 26 16:01 event12
crw-rw---- 1 root input 13, 77 Jan 26 16:01 event13
crw-rw---- 1 root input 13, 66 Jan 26 16:01 event2
crw-rw---- 1 root input 13, 67 Jan 26 16:01 event3
crw-rw---- 1 root input 13, 68 Jan 26 16:01 event4
crw-rw---- 1 root input 13, 69 Jan 26 16:01 event5
crw-rw---- 1 root input 13, 70 Jan 26 16:01 event6
crw-rw---- 1 root input 13, 71 Jan 26 16:01 event7
crw-rw---- 1 root input 13, 72 Jan 26 16:01 event8
crw-rw---- 1 root input 13, 73 Jan 26 16:01 event9
crw-rw---- 1 root input 13, 63 Jan 26 16:01 mice
crw-rw---- 1 root input 13, 32 Jan 26 16:01 mouse0
crw-rw---- 1 root input 13, 33 Jan 26 16:01 mouse1
そしてxinput
私に類似のIDを与えます:
[~]$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=10 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ USB 2.0 Camera id=11 [slave keyboard (3)]
↳ Asus Laptop extra buttons id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
(にeventN
対応するルックid=N
)
Xorgなし
1.1このファイルの目的は何ですか?
すべてのランダム入力(USBカメラを含む!)は仮想キーボードの一部としてXorgに表示されることに注意してください。これにより、入力の多重化と逆多重化が可能になります。たとえば、USBマウスまたはトラックパッドを使用してマウスを動かすことができ、アプリケーションは違いを知る必要がありません。
(USBカメラが仮想キーボードの一部であるのは、オンとオフを切り替えるボタンがあるためです。また、aはボタンなので、キーボードサブシステムの一部になります。実際のビデオ入力はで処理され/sys/class/video4linux
ます。 )
つまり、アプリケーションの場合、実際にはキーボードとマウスは1つだけです。しかし、Xorgとカーネルの両方が違いを知る必要があります。そして、これは最後の部分につながります:
1.2カーネルからXサーバーに直接送信しないのはなぜですか?
Xorgは違いを知る必要があるからです。
そして、それが役立つ状況があります。Xorgのキーを各スレーブ入力デバイスに別々に再マッピングできます。例えば、私はそれが出力レースゲームで使用する場合、ペダルとのゲームセットを持っているa、bそしてcそのペダルのそれぞれについて。しかし、私はこれらのキーを再マッピングプログラミングするときEsc、CtrlおよびAltキーボード自体のキーを再マッピングすることなく、。
また、マシンがXorgを実行している必要はありません。たとえば、ヘッドレスサーバーで次の出力を取得できます。
[~]$ ls -l /dev/input/
total 0
drwxr-xr-x 2 root root 80 Nov 8 02:36 by-path
crw-rw---- 1 root input 13, 64 Nov 8 02:36 event0
crw-rw---- 1 root input 13, 65 Nov 8 02:36 event1
crw-rw---- 1 root input 13, 66 Nov 8 02:36 event2
入力デバイスがキーボードやマウスの代わりにシリアルポート(この場合は特にそうです)に対応する場合。