Считывать ввод с клавиатуры в Linux

Используйте sponge из GNU moreutils :

echo 'a lot of content' | command 1 | sponge file.txt

Или используйте временный файл.

1
21.04.2019, 14:30
1 ответ

Здесь участвуют два уровня :Уровень inputядра, который переводит различные клавиатуры, мыши, джойстики и т. д. в общую структуру и делает их доступными в /dev/input/*файлах устройств (один файл на устройство )и уровень X (или, в зависимости от вашего дистрибутива, уровень Wayland ), который считывает эти файлы и преобразует их в события X, понятные графическим приложениям. Последний объединяет устройства ввода и делает их доступными как «события клавиатуры с любого устройства» и «события мыши с любого устройства» (. Это упрощение, но это первое приближение ).

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

Конечно, если вы настаиваете, вы также можете открыть все файлы в /dev/input/*и интерпретировать исходящие от них события, но это не сработает в тот момент, когда будет подключена новая клавиатура или мышь, и вы захотите отреагировать на эти события тоже.

Абстракция /dev/input/miceсуществует только для мышей и является своего рода устаревшим решением, изобретенным в то время, когда люди использовали одну клавиатуру PS/2, но уже существовало множество различных устройств для мыши. Этот файл может не соответствовать тому, что слой X считает активными устройствами ввода мыши, и нет эквивалентной абстракции для клавиатур.

3
27.01.2020, 23:30

Теги

Похожие вопросы