From aa43e5ecc430391102dde7a1cb3b675775096004 Mon Sep 17 00:00:00 2001 From: Chen Gong Date: Fri, 23 Dec 2016 00:33:06 +0800 Subject: [PATCH] fix(key_event): KeySequence::repr() prefer unescaped punctuation characters --- src/key_event.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/key_event.cc b/src/key_event.cc index 971a5e6717..ce7089a027 100644 --- a/src/key_event.cc +++ b/src/key_event.cc @@ -89,6 +89,13 @@ KeySequence::KeySequence(const string& repr) { clear(); } +static bool is_unescaped_character(const KeyEvent& key_event) { + int ch = key_event.keycode(); + return key_event.modifier() == 0 && + ch >= 0x20 && ch <= 0x7e && + ch != '{' && ch != '}'; +} + string KeySequence::repr() const { std::ostringstream result; string k; @@ -97,6 +104,9 @@ string KeySequence::repr() const { if (k.size() == 1) { result << k; } + else if (is_unescaped_character(*it)) { + result << char(it->keycode()); + } else { result << '{' << k << '}'; }