blob: f6a7a91b13def08865e97795acf365fa78cf6ce5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "keys.h"
namespace Terminal::Internal {
VTermModifier qtModifierToVTerm(Qt::KeyboardModifiers mod)
{
int ret = VTERM_MOD_NONE;
if (mod & Qt::ShiftModifier)
ret |= VTERM_MOD_SHIFT;
if (mod & Qt::AltModifier)
ret |= VTERM_MOD_ALT;
#ifdef Q_OS_DARWIN
if (mod & Qt::MetaModifier)
ret |= VTERM_MOD_CTRL;
#else
if (mod & Qt::ControlModifier)
ret |= VTERM_MOD_CTRL;
#endif
return static_cast<VTermModifier>(ret);
}
VTermKey qtKeyToVTerm(Qt::Key key, bool keypad)
{
if (key >= Qt::Key_F1 && key <= Qt::Key_F35)
return static_cast<VTermKey>(VTERM_KEY_FUNCTION_0 + key - Qt::Key_F1 + 1);
switch (key) {
case Qt::Key_Return:
return VTERM_KEY_ENTER;
case Qt::Key_Tab:
return VTERM_KEY_TAB;
case Qt::Key_Backspace:
return VTERM_KEY_BACKSPACE;
case Qt::Key_Escape:
return VTERM_KEY_ESCAPE;
case Qt::Key_Up:
return VTERM_KEY_UP;
case Qt::Key_Down:
return VTERM_KEY_DOWN;
case Qt::Key_Left:
return VTERM_KEY_LEFT;
case Qt::Key_Right:
return VTERM_KEY_RIGHT;
case Qt::Key_Insert:
return VTERM_KEY_INS;
case Qt::Key_Delete:
return VTERM_KEY_DEL;
case Qt::Key_Home:
return VTERM_KEY_HOME;
case Qt::Key_End:
return VTERM_KEY_END;
case Qt::Key_PageUp:
return VTERM_KEY_PAGEUP;
case Qt::Key_PageDown:
return VTERM_KEY_PAGEDOWN;
case Qt::Key_multiply:
return keypad ? VTERM_KEY_KP_MULT : VTERM_KEY_NONE;
case Qt::Key_Plus:
return keypad ? VTERM_KEY_KP_PLUS : VTERM_KEY_NONE;
case Qt::Key_Comma:
return keypad ? VTERM_KEY_KP_COMMA : VTERM_KEY_NONE;
case Qt::Key_Minus:
return keypad ? VTERM_KEY_KP_MINUS : VTERM_KEY_NONE;
case Qt::Key_Period:
return keypad ? VTERM_KEY_KP_PERIOD : VTERM_KEY_NONE;
case Qt::Key_Slash:
return keypad ? VTERM_KEY_KP_DIVIDE : VTERM_KEY_NONE;
case Qt::Key_Enter:
return keypad ? VTERM_KEY_KP_ENTER : VTERM_KEY_NONE;
case Qt::Key_Equal:
return keypad ? VTERM_KEY_KP_EQUAL : VTERM_KEY_NONE;
default:
return VTERM_KEY_NONE;
}
}
} // namespace Terminal::Internal
|