Input devices что это за программа

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

1. Как открыть evdev, когда он открыт, и какова связь с входным ядром —- В настоящее время я понимаю, что при открытии, после некоторой обработки, он перейдет в часть evdec

2. Как evdev связано с вводом

3. Информация, необходимая, когда драйвер устройства зарегистрирован на входе, и процесс после регистрации устройства приема ввода.

4. Код реализации подсистемы ввода

5. Процесс отчетности по оборудованию

6. Процесс чтения входных данных в пользовательском пространстве.

7. Роль обработчика дескрипторов во входной подсистеме и его связь с входом evdev.

INPUTПодсистема

1. Что такое вводПодсистема ввода?

Система Linux поддерживает широкий спектр устройств ввода, таких как клавиатуры, мыши, сенсорные экраны, ручки или некоторые устройства ввода, такие как соматосенсорный ввод и т. Д. Как система Linux управляет таким количеством устройств ввода разных типов, разных принципов и разных вводная информация? Что? Фактически это делается через программную систему подсистемы ввода. В целом подсистема ввода-ввода разделена на 3 уровня: верхний уровень (уровень, управляемый событиями ввода), средний уровень (уровень ядра ввода) и нижний уровень (уровень драйвера устройства ввода), как показано на следующем рисунке:

Input and output devices

https://images2015.cnblogs.com/blog/944893/201611/944893-20161123160655378-1206222144.png

Сравните со структурой драйвера, которую я изучил ранее, подсистема ввода ввода фактически является структурой драйвера устройства ввода ввода. В отличие от структуры драйвера, изученной ранее, подсистема ввода ввода разделена на 3 уровня: верхний, средний и нижний. Таким образом, его сложность выше, чем у упомянутых ранее драйверов lcd, misc, fb и т. Д.

2. Драйверы на рисунке соответствуют нижнему уровню драйвера устройства, который соответствует множеству различных устройств ввода, ядро ​​ввода соответствует среднему уровню ядра, обработчики соответствуют верхнему уровню, управляемому событиями ввода, а крайний правый представляет пространство пользователя. .

(1) Как видно из рисунка, в системе может быть зарегистрировано несколько устройств ввода, и тип каждого устройства ввода может быть разным, например, компьютер может иметь мышь, клавиатуру .

(2) Каждый обработчик (клавиатура / мышь / джойстик / событие) на верхнем уровне принадлежит параллельным отношениям, и все они принадлежат верхнему уровню. Соответствующие устройства ввода в разных обработчиках имеют разные методы именования интерфейсов на уровне приложения. Например, интерфейс устройства ввода в разделе Mouse на уровне приложения — / dev / input / mousen (n означает 0, 1, 2 .. .), Интерфейс устройства ввода в разделе «Джойстик» на уровне приложения — / dev / input / jsn (n представляет 0, 1, 2 . ), а интерфейс устройства ввода в разделе «Событие» на уровне приложения — / dev / input / eventn (n представляет 0, 1, 2 . ), это реализовано во входной подсистеме, причина будет проанализирована ниже.

Input Devices of Computer | (Examples and purpose)

(3) Входной основной уровень фактически отвечает за координацию верхнего и нижнего уровней, так что передача данных может быть завершена между верхним и нижним уровнями. Когда событие ввода происходит на нижнем уровне, активируется вся система, и событие будет передано через базовый уровень одному или нескольким обработчикам, соответствующим верхнему уровню, и, наконец, передано в пространство приложения.

3. Какую проблему решает подсистема ввода?

(1) В интерфейсе GUI у пользователя слишком много свободы, и есть слишком много вещей, которые можно сделать. Он может реагировать на разные устройства ввода, а также может выполнять разные действия на вводе с разных устройств ввода. Например, программное обеспечение в окне может реагировать на события ввода мыши и события ввода с клавиатуры, и эти события заранее не известны.

(2) Подсистема ввода решает проблему передачи данных между событиями ввода различных устройств ввода и прикладным уровнем, так что прикладной уровень может получать события ввода от различных устройств ввода. Подсистема ввода ввода может охватывать все различные Все типы устройства ввода могут воспринимать все события ввода, которые происходят на уровне приложения.

4. Как работает подсистема ввода?

Например, возьмите событие нажатия мыши в качестве примера, чтобы проиллюстрировать рабочий процесс нашей подсистемы ввода-ввода: когда мы нажимаем левую кнопку мыши, запускается прерывание (прерывание регистрируется в течение длительного времени), и прерывание выполняется . Функция обработки привязки, в функции, она будет читать регистр оборудования, чтобы определить, какая кнопка и состояние нажаты -> сообщить информацию о кнопке на входной базовый уровень —> После обработки входного базового уровня будет сообщено на уровень входных событий, где наше входное событие будет инкапсулировано в структуру input_event и помещено в буфер —> При чтении уровня приложения будут считываться данные из буфера.

Читайте также:
Мобикей хендай крета что это за программа и нужна ли она

sprd_keypadАнализ процесса

static int sprd_keypad_probe(struct platform_device *pdev)

// Подать заявку на input_dev

Источник: russianblogs.com

Что это за файлы в / dev / input / и что они делают?

Я довольно новичок в Ubuntu, и я начал искать везде и проверять все! Недавно я видел эти файлы в /dev/input/ eventX, js0, mice, mouseX. Распечатав вывод с помощью «cat», я понял, что они как-то отвечают за ввод с клавиатуры и мыши, но вывод имел странную кодировку символов (даже для клавиатуры).

  1. Что это за файлы и как я могу интерпретировать данные этих файлов?
  2. Есть ли другие места, где я могу получить доступ к вводу / выводу моего компьютера с Ubuntu?
  3. И есть ли какие-нибудь электронные книги, руководства или что-то подобное, что я могу проверить работоспособность и структуру системных файлов Ubuntu? (т.е. чтобы найти ответ на такой вопрос)

Обновление

Чтобы сделать данные файла более читабельными, я использовал hexdump:

sudo cat /dev/input/by-id/ | hexdump -C
задан Pouya 2 November 2012 в 15:41

3 ответа

/ dev — системный каталог, содержащий все файлы, связанные с аппаратным устройством. Просмотрите это руководство для Обзор дерева файловой системы Ubuntu и , а также

enter image description here

ответ дан Ketan Patel 2 November 2012 в 15:41

Вся информация в /dev/input/eventX хранится в структуре под названием input_event . Более подробная информация о мероприятии доступна здесь: https://www.kernel.org/doc/Documentation/input/input.txt

ответ дан Eliah Kagan 2 November 2012 в 15:41

Это место, где находятся файлы устройств для ваших устройств ввода.

Файлы устройств: (взято из Википедии)

В Unix-подобных операционных системах файл устройства или специальный файл является интерфейсом для драйвер устройства, который появляется в файловой системе, как если бы это был обычный файл . Они позволяют программному обеспечению взаимодействовать с драйвером устройства с помощью стандартных системных вызовов ввода / вывода, что упрощает многие задачи и унифицирует механизмы ввода-вывода в пользовательском пространстве. [ 113]

ответ дан green 2 November 2012 в 15:41

Другие вопросы по тегам:

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

  • Идентификатор устройства в ubuntu — 26 May 2011 22:55
  • GIMP расширил проблему настроек устройств ввода данных — 25 August 2012 19:37
  • Каков рекомендуемый способ настройки устройства с сенсорной панелью Synaptics? — 22 December 2010 21:53
  • Удалить документацию для экономии места на жестком диске — 1 May 2012 23:43
  • Настроить udev для изменения разрешений на USB-HID-устройстве? — 1 December 2010 00:05
  • мышь иногда дважды щелкает, когда я нажимаю один раз — 22 July 2013 13:24
  • Как написать интернационализированное руководство, используя gettext? — 4 January 2015 20:20

Источник: askubuntu.ru

PulseAudio, часть 1: управление из командной строки

Одним из новшеств Ubuntu 10.10 стал переход с «голой» ALSA на PulseAudio. Ранее постилось много советов прибить и удалить его для решения проблем, однако теперь PulseAudio стабилен, с ним не шипят колонки ;), и он способен на такое, что не снилось Alsa 🙂

  • Как переключить весь звук на USB-колонку на закрывая приложений (usb hotplug);
  • Как выбрать порт звуковой карты для вывода звука (колонки ноутбука/наушника, LineOut/Наушники);
  • Как выбрать профайл звуковой карты (маппинг физических портов: 5.1 или стерео+lineIn?);
  • Как управлять громкостью и усиливать тихий сигнал (!);
  • Как сделать Skype громче музыки?

Кратко о PulseAudio

  • PulseAudio — «слой звуковой абстракции», принимающий звуковой поток от приложений и передающий его Alsa;
  • PulseAudio оперирует объектами и позволяет перенаправлять звуковой поток между ними (роутинг);
  • PulseAudio — демон, обычно запускаемый от имени пользователя;
  • Позволяет передавать звук по сети и «расшаривать» микрофоны, установленные на других компьютерах.
  • Теперь при отключении USB-колонки ни одна прога не подвиснет, а будет переброшена на другую доступную карту 🙂

GUI инструменты

Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — могу порекомендовать попробовать GUI-tools, описанные на странице PulseAudio. С помощью pavucontrol можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать 🙂 Также pavucontrol позволяет управлять громкостью общей и отдельных приложений.

Основные понятия PulseAudio

Card, Sink
  • Sink (англ. низина) — «сток», принимающий звуковой поток. Представляет выход звуковой карты: линейный выход, наушники, колонки ноутбука;
  • Source (англ. источник) — источник звука, создающий звуковой поток. Представляет вход звуковой карты: линейный вход, микрофон.
  • Итак, звук проигрывается через «Sink», а записывается через «Source».

    Sink-Input
  • Client. Приложение, подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.
  • Sample. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например, x11 bell. Могут проигрываться по команде от модуля, клиента или из консоли.
  • ALSA → PulseAudio

    Конечно же, сперва нужно убедиться что PulseAudio установлен и запущен:
    sudo apt-get install pulseaudio
    pulseaudio —start -D

    Далеко не каждое приложение умеет работать с PulseAudio напрямую: обычно они умеют использовать Alsa. Для таких приложений нужно сообщить, чтобы Alsa перенаправляла их звуковые потоки к PulseAudio.
    Для этого в файл ~/.asoundrc вставляем следующие строки (Которые, кстати, вылечат микрофон Skype’а! если ещё отключить «Позволить скайп автоматически подстраивать громкость» — подсказывает aim):
    pcm.pulse < type pulse >
    ctl.pulse < type pulse >
    pcm.!default < type pulse >
    ctl.!default < type pulse >

    Первые две строки создадут виртуальные устройства ALSA с именем ‘pulse’ для ввода и вывода, а также устройство контроля (громкости). Следующие две — определяют их как «по умолчанию»: теперь все приложения вместо Alsa будут использовать PulseAudio через специальный плагин (и ничего не подозревать).
    Для применения измений нужно перезапустить звуковые приложения. Свежезапущенные приложения подхватят изменения сами.
    UPD: yuretsz подсказывает, что приложения, использующие OSS ( /dev/dsp ), нужно запускать через враппер padsp [options] PROGRAM [ARGUMENTS . ] .

    Управление PulseAudio: pactl

    Управление PulseAudio осуществляется с помощью команды pactl, про которую нельзя сказать что она удобная и продвинутая 🙂 однако тренироваться будем с ней.

    Осмотр владений

    Для начала давайте посмотрим что у нас есть: какие объекты определены в PulseAudio. Рекомендую запустить фоновую музыку чтобы было на что смотреть 🙂
    Команда pactl list покажет длинный список существующих объектов.
    У каждого объекта есть набор описывающих его полей, а также специальное поле «Properties»: список key-value свойств (обычно строковых).
    У всех объектов есть index (Sink #0) — уникальный номер объекта определённого типа. Также многие объекты имеют имена (Name: ): index и Name можно использовать для обращения к конкретному объекту.

    Рекомендую присмотреться к полям объектов Sink и Source: по умолчанию они описывают Ваше железо.
    Покажу свой пример:

    Sink #1 — Sink: вопроизводит звук State: RUNNING — Sink работает: через него проигрывается музыка Name: alsa_output.pci-0000_00_1b.0.analog-stereo — Уникальное имя Sink’а Description: Internal Audio Analog Stereo — Текстовое описание Sink’а Driver: module-alsa-card.c — Используемый «драйвер»: модуль PulseAudio, создавший этот Sink Sample Specification: s16le 2ch 44100Hz — Параметры дискретизации, количество каналов, кодирование. Channel Map: front-left,front-right — Звуковые каналы Owner Module: 5 — index модуля, создавшего этот Sink Mute: no Volume: 0: 26% 1: 26% — Громкость обоих каналов 0: -35.42 dB 1: -35.42 dB balance 0.00 Base Volume: 100% — «Базовая громкость»: указывает на некоторую «неусиленную» громкость устройства вывода 0.00 dB Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor — Имя «монитора», связанного с этим Sink (виртуальный Source: позволяет писать «звук с колонок») Latency: 161458 usec, configured 210000 usec — Параметры звукового лага Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY Properties: . — Всякие свойства.

    Там можно увидеть имя устройства Alsa, куда этот Sink отдаёт звук Ports: — Порты Sink’а: соответствуют физическим портам звуковой карты analog-output: Analog Output (priority. 9900) — Выход наушников analog-output-speaker: Analog Speakers (priority. 10000) — Колонки ноутбука Active Port: analog-output-speaker — Текущий выбранный порт: музыка у меня играет из колонок ноута.

    Card #1 — Физическая звуковая карта Name: alsa_card.pci-0000_00_1b.0 Driver: module-alsa-card.c Owner Module: 5 Properties: . Profiles: — Профили звуковой карты: выбранный пресет маппинга физических портов. output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority. 6000) output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority. 6060) output:iec958-stereo: Digital Stereo Duplex (IEC958) (sinks: 1, sources: 0, priority. 5500) output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority.

    5560) input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority. 60) off: Off (sinks: 0, sources: 0, priority. 0) Active Profile: output:analog-stereo+input:analog-stereo Source #1 — Source: позволяет записывать звук State: IDLE — Source бездействует: я ничего не записываю 🙂 Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor Description: Monitor of Internal Audio Analog Stereo Driver: module-alsa-card.c Sample Specification: s16le 2ch 44100Hz Channel Map: front-left,front-right Owner Module: 5 Mute: no Volume: 0: 100% 1: 100% 0: 0.00 dB 1: 0.00 dB balance 0.00 Base Volume: 100% 0.00 dB Monitor of Sink: alsa_output.pci-0000_00_1b.0.analog-stereo — Этот Source создан как монитор 1го Sink’а: из него можно записывать то что слышно из колонок Latency: 0 usec, configured 1999818 usec Flags: DECIBEL_VOLUME LATENCY Properties: .

    pactl или же оставить один джек под стерео-выход, зато получить входы для микрофона и линейный; или…
    Увы, магия здесь не прокатит: наборы предустановлены производителем. Их список можно посмотреть в поле «Profiles» объекта «Card».
    Для каждого профиля задаётся приоритет (priority): число, определяющее «степень привлекательности» именно этого профайла. По умолчанию PulseAudio выбирает профайл с наибольшим приоритетом.
    Для каждого профайла указывается сколько Sink’ов и Source’ов он породит если его выбрать: sinks: 1, sources: 0 .

    На данный момент нельзя изменить приоритеты, однако можно выбрать тот или иной профиль.
    Подсматриваем в выводе pactl list имя карты и профиля, и выбираем:
    pactl set-card-profile ‘alsa_card.pci-0000_00_1b.0’ ‘output:analog-stereo+input:analog-stereo’
    Всё, порты карты переназначены.
    Можно вообще выключить все разъёмы, выбрав профайл «off»:
    pactl set-card-profile ‘alsa_card.pci-0000_00_1b.0’ ‘off’

    Sink Port: переключение звука на наушники

    У одного Sink’а может быть несколько звуковых портов. Например, Sink созданный на основе звуковой карты ноутбука, может иметь два порта: встроенные колонки и выход на наушники.
    Текущий порт Sink’а можно посмотреть в его поле Active Port: analog-output-speaker .
    Глядя на список Ports нужного объекта Sink, назначаем порт:
    pactl set-sink-port ‘alsa_output.pci-0000_00_1b.0.analog-stereo’ ‘analog-output’
    и звук моментально перебрасывается на наушники, отключая колонки.
    Аналогично для Source. Возможно, Ваш микрофон не работает в Skype именно из-за того что выбран не тот порт записи 🙂

    Default Sink: звуковой выход по умолчанию

    PulseAudio метит один из Sink’ов как «по умолчанию»: новые запущенные приложения по умолчанию будут проигрываться через него. Другими словами, если приложение при создании Sink-Input’а не выбирает Sink самостоятельно (например, из пользовательских настроек) — выбирается default-sink.
    Sink по умолчанию можно посмотреть выполнив команду pactl stat :
    $ pactl stat
    .
    Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
    Default Source: alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono
    Изменим его: смотрим имя нужного Sink’а и пишем:
    pacmd set-default-sink ‘1’
    Обратите внимание что pacmd в некоторых случаях позволяет использовать номера вместо длинных имён.
    Аналогично для Source. Кстати, неверно выбранный default-Source тоже может не давать общаться в Skype 🙂

    Move Sink-Input: перемещение звукового потока

    Этим действием можно перекинуть Sink-Input с одного Sink’а на другой. Таким образом можно перебросить музыку на только что подключенную USB-колонку.
    Смотрим имена двух Sink’ов, находим нужный Sink-Input и пишем:
    pactl move-sink-input 16 ‘1’
    и звук Sink-Input#16 моментально переключается на Sink #1. Это может быть USB-колонка.
    Увы, перебросить сразу все Sink-Input’ы с помощью pactl или pacmd нельзя. В конце статьи будет решение.
    Source-Output также можно переключать между Source’ами.

    Управление громкостью

    Громкость в PulseAudio задаётся численно: 0..65535 (соответствует 0% и 100%), а также — сюрприз! — значения большие чем 100% вызывают усиление сигнала что незаменимо при просмотре фильмов с ненормализованной громкостью.
    Здесь можно использовать index Sink’а:
    pactl set-sink-volume ‘1’ 100 # очень тихо! 100/65535 = 0,15%
    pactl set-sink-volume ‘1’ 65535 # 100%
    pactl set-sink-volume ‘1’ 78642 # 120% — усиление
    pactl set-sink-mute ‘1’ true # соседи могут засыпать
    Усиление может вызывать clipping: всем известный «дребезг».
    Аналогично можно управлять громкостью Source’ов.
    UPD: с версии 0.9.15 появилась фича «FLAT_VOLUME» (её можно увидеть в Sink ‘Flags’). При наличии этого флага громкость Sink’а автоматически устанавливается как максимальная громкость всех Sink-Input’ов. Отключить её можно так:
    echo «flat-volumes = no» >> /etc/pulse/daemon.conf

    Громкость приложений

    С появлением Windows7 линуксоиды, не знакомые с PulseAudio, обзавидовались возможности регулировать громкость отдельных приложений 🙂
    Теперь это возможно: смотрим index нужного Sink-Input’а и усиливаем отдельное приложение:
    pactl set-sink-input-volume ’16’ 80000

    Приостановка

    Sink и Source можно «приостановить»:
    pactl suspend-sink ‘1’

    Конфиг

    • pacmd — Запускает интерактивную консоль PulseAudio
    • pacmd help — список команд, на оффсайте
    • Модули PulseAudio

    patricks

    Замучавшись неудобством официальных утилит, ваш верный слуга написал свою утилиту для управления демоном PulseAudio 🙂

    • Короткие, интуитивные команды
    • Дозированная подача информации командой ls : теперь в терминал не будет вываливаться тонна информации (особенно properties)
    • Все объекты — в том числе порты и профайлы — можно задавать как по имени, так и по индексу
    • Команда set sink 0 port next — можно не гадать номер порта и просто переключиться на следующий. Удобно для хоткея.
    • Наличие команды mv sink 0 all для перемещения всех звуковых потоков в нужный Sink (USB-Колонка)

    Пример работы:
    Посмотреть список Sink’ов. Текущий Sink выделен символом >:

    Внимательнее присмотретсья к Sink #0:

    Внимательнее посмотреть на список портов Sink #0:

    Переключить Sink #0 на следующий порт

    Перекинуть все Sink-Input’ы на следующий Sink (например, свежеподключенную USB-колонку)

    Ссылки

    В следующей серии

    • Конфиги PulseAudio
    • Работа с модулями
    • Работа с сэмплами
    • Звук по сети, revisited

    Источник: habr.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru