Имя вторичного приглашения точно такое же - вторичное приглашение. Как указано на странице руководства bash:
PS2 Значение этого параметра раскрывается , как в случае с PS1, и используется в качестве дополнительной строки приглашения . По умолчанию это ``> ''.
Я отвечу на вопрос в обратном порядке:
- Почему их так много?
Это устройства, которые соответствуют большинству входов, имеющихся на машине (есть и другие, например, микрофон не будет управляется в / dev / input
). Вопреки предположению, что одна клавиатура плюс одна мышь дает 2 устройства, даже самая простая клавиатура и самая простая мышь все равно дают 6 из них.
Почему 6? Поскольку Xorg создаст тестовую клавиатуру ввода и мышь тестового ввода (обе виртуальные) во время своего запуска. Кроме того, он объединит тестовую клавиатуру с реальной клавиатурой в основное виртуальное устройство. т.е. он будет выполнять мультиплексирование ввода. То же самое произойдет с тестовой и реальной мышью.
Кроме того, на обычном компьютере (настольном или портативном) помимо клавиатуры есть и другие кнопки: кнопка питания, кнопка сна.
Устройства eventN
там - это устройства для вещей, которые создает Xorg, и для того, что есть у компьютера. N
поступает из последовательных идентификаторов и аналогичен идентификаторам в 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
дает мне аналогичные идентификаторы:
[~]$ 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-камера является частью виртуальной клавиатуры, потому что у нее есть кнопка для ее включения и выключения. А поскольку это кнопка, она становится частью подсистемы клавиатуры. Фактический видеовход обрабатывается в / sys / class / video4linux
.)
Другими словами, для приложения действительно есть только одна клавиатура и только одна мышь. Но и 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
Где устройства ввода соответствуют последовательным портам (особенно в этом случае они соответствуют) вместо клавиатуры или мыши.
Не существует такой вещи, как «отправить напрямую». У приложений должен быть какой-то метод чтения данных, и в unix это делается так же, как они читают обычные файлы, создавая узел устройства, который работает с обычными системными вызовами файлового ввода-вывода, чтобы позволить приложениям открывать и читать их.
Помимо мыши и клавиатуры, существуют и другие источники ввода. Вы можете узнать, что это за каждый, заглянув в / sys / class / input
. Там вы найдете файлы с теми же именами inputNN, которые являются символическими ссылками на другой узел в sysfs, который описывает устройство, которое они представляют. Другие распространенные источники включают звуковые карты (которые сигнализируют, когда что-то подключено и отключено) и физическая кнопка питания на компьютере.