Является ли Bluetooth-клавиатура связанной с `stdin`?

Я знаю, что клавиатура является стандартным вводом и передается файлом stdin .

Иногда я использую клавиатуру Bluetooth (BT) при работе на своем ноутбуке. Обе клавиатуры, клавиатура для ноутбука, а также клавиатура BT работают одновременно.

Итак, обе клавиатуры связаны с stdin ? Если да, то как они синхронизируются?

Клавиатура – это только устройство ввода, оно не имеет прямого отношения к стандартному входу как таковому. Стандартный ввод программы – это просто абстрактный поток данных, который передается как файловый дескриптор 0.

Многие программы, использующие стандартный ввод, вводят ввод с клавиатуры, но они не делают этого напрямую. Вместо этого, в отсутствие инструкций, чтобы сделать иначе, ваша оболочка соединяет стандартный ввод новой программы с вашим терминалом, который подключен к вашей клавиатуре. То, что входные данные поступают с клавиатуры, не является проблемой программы, которая просто видит поток данных, поступающих с вашего терминала.

Что касается того, как обе клавиатуры работают одновременно, эта работа обычно выполняется на уровне ядра, а не на уровне терминала или приложения. Приложения могут либо запрашивать вход с одной из клавиатур, либо мультиплексировать все из них. Это представление обычно применяется к большинству пользовательских устройств ввода, а не только к клавиатурам.

Если вы используете X или аналогичный промежуточный уровень (уровни) между ядром и вашей программой, может присутствовать больше абстракций, но основная идея – это приложения с одинаковой утилитой, обычно не имеющие доступа к клавиатуре.