1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ui/events/event.h"
6 
7 namespace arc {
8 
IsControlChar(const ui::KeyEvent * event)9 bool IsControlChar(const ui::KeyEvent* event) {
10   // 0x00-0x1f (C0 controls), 0x7f (DEL), and 0x80-0x9f (C1 controls) are
11   // considered as a control character. See:
12   // https://en.wikipedia.org/wiki/Unicode_control_characters They are control
13   // characters and not treated as a text insertion.
14   const base::char16 ch = event->GetCharacter();
15   const bool is_control_char =
16       (0x00 <= ch && ch <= 0x1f) || (0x7f <= ch && ch <= 0x9f);
17   return is_control_char;
18 }
19 
HasModifier(const ui::KeyEvent * event)20 bool HasModifier(const ui::KeyEvent* event) {
21   constexpr int kModifierMask = ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
22                                 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN |
23                                 ui::EF_ALTGR_DOWN | ui::EF_MOD3_DOWN;
24   return (event->flags() & kModifierMask) != 0;
25 }
26 
27 }  // namespace arc
28