У меня есть новые наушники, AKG K318, если быть точным, и у них есть один из таких пультов. На смартфоне, таком как телефон Android или iPhone, кнопки соответствуют действиям на музыкальном проигрывателе, таким как воспроизведение/пауза, увеличение/уменьшение громкости, пропуск, предыдущий, вы поняли.
Мне было интересно, как я могу воспроизвести ту же функцию на своем компьютере.
Я полагаю, что процесс состоит из того, чтобы заставить X распознать входные данные, а затем каким-то образом сопоставить эти входные данные для использования приложением.
«Устройство» (которое подключается через звуковой разъем) не указано в списке xinput
, а кнопки не запускают обычные события клавиатуры.
Как использовать наушники, подключенные к выходному звуковому разъему, в качестве входов для клавиши X?
решение1
Эти «специальные» наушники или вкладыши, которые можно использовать на специализированных устройствах для управления медиаплеерами, громкостью и отключением звука, обычно имеют ЧЕТЫРЕ соединения на штекере, в отличие от ТРЕХ, которые обычно имеются на обычном выходном разъеме для наушников.
Обычные три — это левый канал, правый канал и земля (общая), в то время как четвертая часто настраивается как многозначное сопротивление, каждая кнопка при нажатии представляет определенное сопротивление на четвертом проводе (+ земля), которое может распознать медиаустройство и на основании этого определить, какая функция нужна. Довольно ловкий метод заставить несколько кнопок работать с одним проводом, не прибегая к дорогим цифровым генераторам сигналов и прочему (все упаковано в эту маленькую каплю на проводах!).
Четыре кнопки могут использовать четыре сопротивления (любой единицы):
volume up: 1 ohm
volume down: 2 ohms
stop: 4 ohms
play: 8 ohms
Если это подозрительно похоже на схему двоичного кодирования... так оно и есть!! (Вы такой умный!!) Используя значения, соотнесенные подобным образом, вы можете воспринимать 16 различных выходов, даже обрабатывая нажатие нескольких клавиш одновременно. Таа-даа!
Старики, возможно, помнят первые iPod, у которых был маленький 4-контактный разъем рядом с аудиовыходом, к которому подключались многие устройства вместе со своим аудиовыходом, что позволяло посылать сигналы управления туда и обратно. Это было постепенно заменено (imho, более крутой!) системой четвертого провода... стандартные наушники будут работать, как и ожидалось, и наушники, настроенные на взаимодействие с методом четвертого провода, тоже принимаются.
Но отвечая на ваш вопрос (наконец-то!!)... нет, не существует «стандартного» способа включить нужную вам функциональность. Лучшим решением будут Bluetooth-гарнитуры. (мои — КРУТЫЕ!)
решение2
Насколько мне известно, в настоящее время нет стандартизированного способа использования проводной гарнитуры в качестве входа с Linux. Это означает, что вы не сможете использовать гарнитуру для управления музыкальным проигрывателем - гарнитуры Bluetooth с другой стороны должны работать из коробки.
решение3
Не для всех, но мои наушники с одной кнопкой. Видимо, некоторые из этих простых кнопок наушников используют своего рода механизм сигнализации микрофона, который проверяет, является ли вход микрофона "высоким" (см. этопочтаи этопочта). Используя audacity, я смог убедиться, что нажатие кнопки генерирует характерный пик, недостижимый речью (хотя я не пробовал кричать!). Поискав в интернете, я придумал следующее решение с использованием sox's rec
:
#!/usr/bin/sh
while true; do
rec -n stat trim 0 .5 2>&1 | awk '/^Maximum amplitude/ && $3 > 0.89' | grep -q 'M' && playerctl play-pause
done
playerctl
это программа, которая управляет воспроизведением медиа. .5
В коде указывает разрешение поляризации микрофона. Вы можете поиграть с этим значением, если хотите реализовать двойное нажатие. 0.89
указывает порог нажатия кнопки. (у меня он в основном равен 1 при нажатии)