fix: 长按 3s 立即复位 CapsLock,不等松开
CapsLock 语音输入流程调整为: 按下 CapsLock → 预录音 → 长按 3s → 立即复位 CapsLock → 正式录音 → 松开 → 停止录音 → 识别 → 注入文本 短按(< 3s)保持原有行为:模拟 CapsLock 切换大小写 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
cf44a23c57
commit
072a571a89
@ -45,6 +45,8 @@ VoiceInputService::VoiceInputService(ConfigManager* configManager,
|
||||
// 长按超时仍未松开 → 确认为长按录音
|
||||
if (!longPressDetected_) {
|
||||
longPressDetected_ = true;
|
||||
// 立即复位 CapsLock,不等用户松开
|
||||
simulateCapsLock();
|
||||
emit statusChanged("正在录音...");
|
||||
}
|
||||
});
|
||||
@ -150,9 +152,7 @@ void VoiceInputService::onHotkeyDeactivated() {
|
||||
simulateCapsLock();
|
||||
emit statusChanged("短按:切换 CapsLock");
|
||||
} else {
|
||||
// 长按 → 先恢复 CapsLock 状态,再开始识别
|
||||
// 这样识别结果注入时 CapsLock 已恢复原始状态
|
||||
simulateCapsLock();
|
||||
// 长按 → CapsLock 已在长按阈值时复位,松开后直接开始识别
|
||||
stopRecordingAndTranscribe();
|
||||
}
|
||||
|
||||
|
||||
@ -19,10 +19,10 @@ class ConfigManager;
|
||||
*
|
||||
* 协调全局快捷键、音频采集、STT 推理和文本注入。
|
||||
* 状态机:
|
||||
* 1. 空闲 → 按下快捷键 → 开始录音
|
||||
* 2. 长按超过 1 秒 → 开始正式录音(清除之前的静音段)
|
||||
* 3. 松开快捷键 → 停止录音 → 推理 → 注入文本
|
||||
* 4. 短按(< 1 秒)→ 注入 CapsLock 按键(切换大小写)
|
||||
* 1. 按下 CapsLock → 开始预录音
|
||||
* 2. 长按超过阈值(默认 3s)→ 立即复位 CapsLock,正式录音
|
||||
* 3. 松开 CapsLock → 停止录音 → 推理 → 注入文本
|
||||
* 4. 短按(< 阈值)→ 注入 CapsLock 按键(切换大小写)
|
||||
*/
|
||||
class VoiceInputService : public QObject {
|
||||
Q_OBJECT
|
||||
@ -44,7 +44,7 @@ public:
|
||||
/** @brief 是否正在录音 */
|
||||
bool isRecording() const { return recording_; }
|
||||
|
||||
/** @brief 长按阈值(毫秒),默认 1000ms */
|
||||
/** @brief 长按阈值(毫秒),默认 3000ms */
|
||||
void setLongPressThreshold(int ms) { longPressThreshold_ = ms; }
|
||||
int longPressThreshold() const { return longPressThreshold_; }
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user