diff options
author | Gergely Nagy <algernon@madhouse-project.org> | 2016-08-13 11:11:22 +0200 |
---|---|---|
committer | Gergely Nagy <algernon@madhouse-project.org> | 2016-08-15 10:08:53 +0200 |
commit | 0b6861827faea747345ea38202d64c8004ab128c (patch) | |
tree | 8791abe3dec280fbbf6a6be30d461bc1ada25110 /quantum/process_keycode | |
parent | fa06a163607e8c6c4bd0968c2de96a9a298b777c (diff) | |
download | firmware-0b6861827faea747345ea38202d64c8004ab128c.tar.gz firmware-0b6861827faea747345ea38202d64c8004ab128c.tar.bz2 firmware-0b6861827faea747345ea38202d64c8004ab128c.zip |
process_unicode: Handle too long UCIS symbol names
If the symbol name being entered is longer than the max, stop recording
it, and stop processing keycodes apart from the ones that can delete,
finish or cancel the sequence.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r-- | quantum/process_keycode/process_unicode.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index 8a6509300..851a96eaa 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -110,7 +110,15 @@ void qk_ucis_symbol_fallback (void) { bool process_record_ucis (uint16_t keycode, keyrecord_t *record) { uint8_t i; - if (!qk_ucis_state.in_progress || !record->event.pressed) + if (!qk_ucis_state.in_progress) + return true; + + if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && + !(keycode == KC_BSPC || keycode == KC_ESC || keycode == KC_SPC || keycode == KC_ENT)) { + return false; + } + + if (!record->event.pressed) return true; qk_ucis_state.codes[qk_ucis_state.count] = keycode; |