| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/events/event.h" |
| |
| namespace arc { |
| |
| bool IsControlChar(const ui::KeyEvent* event) { |
| // 0x00-0x1f (C0 controls), 0x7f (DEL), and 0x80-0x9f (C1 controls) are |
| // considered as a control character. See: |
| // https://en.wikipedia.org/wiki/Unicode_control_characters They are control |
| // characters and not treated as a text insertion. |
| const char16_t ch = event->GetCharacter(); |
| const bool is_control_char = |
| (0x00 <= ch && ch <= 0x1f) || (0x7f <= ch && ch <= 0x9f); |
| return is_control_char; |
| } |
| |
| bool HasModifier(const ui::KeyEvent* event) { |
| constexpr int kModifierMask = ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | |
| ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN | |
| ui::EF_ALTGR_DOWN | ui::EF_MOD3_DOWN; |
| return (event->flags() & kModifierMask) != 0; |
| } |
| |
| } // namespace arc |