BLE CLI 工具,用于控制 VibeKeys MAX 键盘设备。通过蓝牙低功耗 (BLE) 连接设备,发送文字、按键映射配置、ASR 设置和 WiFi 设置。
从 GitHub Releases 下载最新版本。
Linux:
wget https://github.com/second-state/vibekeys_app/releases/latest/download/vibekeys-linux-x64
chmod +x vibekeys-linux-x64
sudo mv vibekeys-linux-x64 /usr/local/bin/vibekeysmacOS (ARM64):
wget https://github.com/second-state/vibekeys_app/releases/latest/download/vibekeys-macos-arm64
chmod +x vibekeys-macos-arm64
sudo mv vibekeys-macos-arm64 /usr/local/bin/vibekeysWindows (PowerShell):
Invoke-WebRequest -Uri "https://github.com/second-state/vibekeys_app/releases/latest/download/vibekeys-windows-x64.exe" -OutFile "vibekeys.exe"
# 添加到 PATH 或移动到 PATH 中的目录# 安装依赖 (Linux)
sudo apt-get install libudev-dev libdbus-1-dev pkg-config
# 构建
cargo build --release
# 编译产物位于 target/release/vibekeys你也可以安装 VibeKeys 插件 让 Claude Code 自动在键盘上显示状态。
在终端运行以下命令:
# 添加 Second State marketplace
claude plugin marketplace add second-state/marketplace
# 安装 VibeKeys 插件
claude plugin install vibekeys@second-state-toolsVibeKeys 作为后台服务器运行。命令会自动启动服务器(如果未运行)或与现有服务器通信。
# 显式启动服务器
vibekeys start
# 停止服务器
vibekeys stopvibekeys send "Hello World"vibekeys keymap <KEY> <BINDING>每次配置一个键,设备会合并到已有的按键映射中。
| 按键名 | 说明 |
|---|---|
MIC |
麦克风键 |
CUSTOM |
自定义键 |
ESC |
Escape 键 |
NEXT |
Next 键 |
BACKSPACE |
退格键 |
YOLO |
Yolo 键 |
ACCEPT |
确认键 |
ROTATE |
旋转键 |
绑定支持两种类型:组合键 (combo) 和 文本宏 (text)。
将按键映射为一个快捷键组合。
# 单个按键
vibekeys keymap ESC A # 映射为 A 键
vibekeys keymap NEXT 1 # 映射为数字 1
# 带修饰键的组合
vibekeys keymap ESC Ctrl+C # 映射为 Ctrl+C
vibekeys keymap CUSTOM Alt+Tab # 映射为 Alt+Tab
vibekeys keymap NEXT Shift+A # 映射为 Shift+A
# 支持的修饰键
# Ctrl, Alt, Shift, Meta, Win, Cmd
# Win 和 Cmd 会自动转换为 Meta生成的 JSON 格式:
{
"ESC": {
"type": "combo",
"modifiers": ["ctrl"],
"key": "C",
"raw": "Ctrl+C"
}
}将按键映射为一段文字,按下时自动输入。
# 用引号包裹来明确指定文本宏
vibekeys keymap CUSTOM '"hello world"'
# 不识别为组合键的输入也会被当作文本宏
vibekeys keymap CUSTOM "some text here"生成的 JSON 格式:
{
"CUSTOM": {
"type": "text",
"value": "hello world",
"raw": "\"hello world\""
}
}输入会按以下优先级解析:
- 引号包裹 — 用
"或'包裹的内容解析为 text +分隔的组合键 — 所有修饰键部分合法时解析为 combo(如Ctrl+Alt+Delete)- 单个大写字母或数字 — 解析为 combo(无修饰键)
- 其他 — 默认解析为 text
# MIC 键 → 发送文本
vibekeys keymap MIC '"I am using Claude Code"'
# ESC 键 → Ctrl+C 中断
vibekeys keymap ESC Ctrl+C
# NEXT 键 → 打开命令面板
vibekeys keymap NEXT Ctrl+Shift+P
# CUSTOM 键 → Alt+Tab 切换窗口
vibekeys keymap CUSTOM Alt+Tab
# BACKSPACE 键 → 退格
vibekeys keymap BACKSPACE Backspace从 stdin 读取 Claude Code hook JSON 事件,转发到键盘显示。用于 Claude Code 的 hooks 集成。
# For Claude Code (别名: hook)
vibekeys claude
# For Codex
vibekeys codex| 事件 | 显示内容 |
|---|---|
UserPromptSubmit |
[user] <prompt 前80字符> |
Stop |
[stopped] 或 [done] <最后消息> |
Notification |
[notify] <消息前80字符> |
PreToolUse |
[tool] <工具名> |
PostToolUse |
[done] <工具名> |
SessionStart |
[working] |
StopFailure |
[error] <错误类型> |
在 .claude/settings.json 中配置:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [{ "type": "command", "command": "vibekeys hook" }]
}
],
"Stop": [
{
"hooks": [{ "type": "command", "command": "vibekeys hook" }]
}
],
"Notification": [
{
"hooks": [{ "type": "command", "command": "vibekeys hook" }]
}
]
}
}配置 ASR(自动语音识别)服务用于语音功能:
# 交互式配置 - 提示选择供应商和输入 API Key
vibekeys asr-config
# 直接配置
vibekeys asr-config --uri <URI> --api-key <密钥> --model <模型>
# 示例:OpenAI
vibekeys asr-config --uri "https://api.openai.com/v1/audio/transcriptions" --api-key sk-xxxx --model whisper-1| 供应商 | 默认 URI | 默认模型 |
|---|---|---|
openai |
https://api.openai.com/v1/audio/transcriptions |
whisper-1 |
bytefuture |
https://models.bytefuture.ai/v1/audio/transcriptions |
groq/whisper-large-v3 |
groq |
https://api.groq.com/openai/v1/audio/transcriptions |
whisper-large-vurbo |
glm |
https://open.bigmodel.cn/api/paas/v4/audio/transcriptions |
glm-asr-2512 |
custom |
(必需) | (必需) |
注意: 发送到设备的 platform 字段始终为 "whisper"。交互式模式中的供应商选择仅影响默认的 URI 和 model 值,方便快速配置。
# 交互式模式(推荐)- 从供应商列表选择,自动填充默认值
vibekeys asr-config
# 配置 Groq(速度快,通常有免费额度)
vibekeys asr-config --uri "https://api.groq.com/openai/v1/audio/transcriptions" --api-key gsk_xxxx --model whisper-large-vurbo
# 配置 OpenAI(显式指定 URI 和 model)
vibekeys asr-config --uri "https://api.openai.com/v1/audio/transcriptions" --api-key sk-xxxx --model whisper-1为设备配置 WiFi 设置:
# 交互式配置 - 提示输入 SSID 和密码
vibekeys wifi-config
# 直接配置
vibekeys wifi-config <SSID> --pass <密码>
# 开放网络(无密码)
vibekeys wifi-config MyNetwork# 交互式模式
vibekeys wifi-config
# 配置带密码的网络
vibekeys wifi-config "MyWiFi-5G" --pass "mypassword"
# 配置开放网络
vibekeys wifi-config "PublicWiFi"服务器运行时,也可以使用 HTTP 端点:
# 发送文字
curl -X POST http://127.0.0.1:42837/send -d "Hello"
# 配置按键映射
curl -X POST http://127.0.0.1:42837/keymap -d '{"KEY":"value"}'
# 配置 ASR
curl -X POST http://127.0.0.1:42837/asr-config -d '{
"platform": "whisper",
"uri": "https://api.openai.com/v1/audio/transcriptions",
"api_key": "sk-xxxx",
"model": "whisper-1"
}'
# 配置 WiFi
curl -X POST http://127.0.0.1:42837/wifi-config -d '{
"ssid": "MyWiFi",
"pass": "password"
}'当设备通过 BLE 通知发送 ASR 转录结果时:
- 文本会自动复制到剪贴板
- 会向设备发送确认信号
VibeKeys 将日志存储在以下位置:
- Linux/macOS:
~/.vibekeys/logs/ - Windows:
%USERPROFILE%\.vibekeys\logs(通常是C:\Users\<用户名>\.vibekeys\logs)
日志会自动轮转:
- 单文件最大 10MB
- 保留最近 5 个日志文件
日志同时输出到 stderr,方便实时查看。可通过 RUST_LOG 环境变量设置日志级别。
# 调试模式运行(查看详细日志)
RUST_LOG=debug vibekeys send "test"
# 构建 release
cargo build --releaseMIT