Provide support of 3.5mm headset controls for PC
Project description
Headset Controls
为 PC 提供 3.5mm 耳机线控支持。
Python >= 3.6
项目目前严重缺乏测试,不同设备、不同耳机很可能有不同表现。
目录
介绍
TRRS 接口的有线耳机的麦克风与按钮并联,按钮按下时麦克风被短接,安卓设备通过检测电压差可以知道按下的按钮。
多数 PC 设备无法获知电压差,但短接对麦克风两个声道产生的影响有些不同。这里使用 Soundcard Oscilloscope 的 x-y graph 功能对比最近 1s 内两个声道的信号幅度进行演示。为了更明显,我们只检视 0.1 范围内的 x 轴和 y 轴:
这是普通声音在极端情况下的声道对比图:
这是 A 按钮(暂停开始键)的声道对比图:
其他情况的声道对比有兴趣的同志可以自己尝试。本项目正是在不同情况的不同声道对比中找不同,来尝试辨别不同按钮的点击、长按事件。
因此,运行时需要使用麦克风。
安装
以下两种方式都需要联网,会自动安装依赖包 keyboard
,numpy
和 sounddevice
。
PyPI
通过 PyPI 安装:
pip install trrsheadset
Clone
或者, 从 这里 下载本仓库的压缩包,解压到一个记得住位置的地方,作为安装文件夹。
在安装文件夹中运行:
pip install .
使用
插入耳机后,在命令行中使用 Python 启动 trrsheadset
即可:
python -m trrsheadset [参数]
- 关闭可以使用两种方式,一种是直接关闭命令行,一种是按下
ctrl+break
快捷键强制退出。- 选用
pythonw
启动可在命令行关闭后保持运行,可在任务管理器种找到Python 3.x (Windowed)
关闭。
重插耳机需要重新启动。
可选参数
-l
or --log
将运行日志保存至文件
--use-hotkey
开启键盘快捷键
-h
or --help
输出此列表后退出
按键
耳机按键映射 & 键盘快捷键响应。基于 Python 库 keyboard 。
耳机
按键 | 短按 | 长按 | 双击 |
---|---|---|---|
A | 继续 / 暂停 | 继续 / 暂停 | 静音 |
B | 音量+ | 下一首 | / |
C | 音量- | 上一首 | / |
D | / | / | / |
双击操作处于开发早期阶段
键盘
需在启动时使用 --use-hotkey
参数。
基础快捷键 ctrl+shift+h
,在基础快捷键触发后 1s 内按下以下按键可以触发相应操作:
p
暂停或继续
e
退出
! 部分设备在开启上述快捷键后,检测不到右 shift、右 ctrl 的释放动作,此时可以按击键盘左边对应按键恢复。
注意哦
- 不要按得太快,招架不住。
- 技术问题欢迎提 issue,其他问题请进入 讨论区(Discussions) 进行交流。
- 如果放久后按钮辨别老错,可能是太久不放音乐了电压不高(?存疑,欢迎讨论)
- 灵感源于:roligheten/AndroidMediaControlsWindows 👍
抓取日志
添加参数 -l
或 --log
启动可将运行时日志保存到运行时文件夹的 debug.log.1
和 debug.log
日志文件中。日志文件对定位 BUG 非常有帮助。
python run.py -l
捐赠
如果你足够开心 🌹
许可
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for trrsheadset-0.0.1a2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20c5a3450137b4b1edbea439c8eff479f097f4e3f5fc254f81895ac65f2e0033 |
|
MD5 | 3a6b811062a6b44aa2236c1a4ce31174 |
|
BLAKE2b-256 | d9817d0dd8d46cf71ccb8b04be57d1048cb9316997aae2efef589facbac738a9 |