From 0cf0e63b3a5460541bdd5110ec8f4bd31d647885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=85=E6=88=8E=E6=B0=8F?= Date: Wed, 6 Nov 2024 01:37:21 +0800 Subject: [PATCH] fix(chord_composer): commit raw w/ Control+Return the Control key combo cleared raw_sequence_ before it could commit raw input --- src/rime/gear/chord_composer.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rime/gear/chord_composer.cc b/src/rime/gear/chord_composer.cc index e45c9bfdc2..89fff746f0 100644 --- a/src/rime/gear/chord_composer.cc +++ b/src/rime/gear/chord_composer.cc @@ -113,10 +113,6 @@ bool ChordComposer::FinishChordConditionIsMet() const { } ProcessResult ChordComposer::ProcessChordingKey(const KeyEvent& key_event) { - if (key_event.ctrl() || key_event.alt() || key_event.super() || - key_event.caps()) { - raw_sequence_.clear(); - } if ((key_event.ctrl() && !use_control_) || (key_event.alt() && !use_alt_) || (key_event.shift() && !use_shift_) || (key_event.super() && !use_super_) || (key_event.caps() && !use_caps_)) { @@ -160,8 +156,12 @@ ProcessResult ChordComposer::ProcessKeyEvent(const KeyEvent& key_event) { bool is_key_up = key_event.release(); int ch = key_event.keycode(); if (!is_key_up && ch >= 0x20 && ch <= 0x7e) { - // save raw input - if (!engine_->context()->IsComposing() || !raw_sequence_.empty()) { + // a key combo potentially breaks the char sequence + if ((key_event.ctrl() || key_event.alt() || key_event.super() || + key_event.caps())) { + raw_sequence_.clear(); + } else if (!engine_->context()->IsComposing() || !raw_sequence_.empty()) { + // buffer raw input raw_sequence_.push_back(ch); DLOG(INFO) << "update raw sequence: " << raw_sequence_; }