Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qvxkeyboardhandler_p.h
Go to the documentation of this file.
1
// Copyright (C) 2024 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#
ifndef
QVXKEYBOARDHANDLER_P_H
5
#
define
QVXKEYBOARDHANDLER_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
<
qobject
.
h
>
19
#
include
<
qloggingcategory
.
h
>
20
#
include
<
QtInputSupport
/
private
/
qfdcontainer_p
.
h
>
21
#
include
<
QtInputSupport
/
private
/
qkeyboardmap_p
.
h
>
22
#
include
<
QtInputSupport
/
private
/
qkeycodeaction_p
.
h
>
23
24
#
include
<
QDataStream
>
25
#
include
<
private
/
qglobal_p
.
h
>
26
27
#
include
<
memory
>
28
29
QT_BEGIN_NAMESPACE
30
31
Q_DECLARE_LOGGING_CATEGORY
(qLcVxKey)
32
33
class
QSocketNotifier;
34
35
namespace
QVxKeyboardMap
{
36
const
quint32
FileMagic
= 0x514d4150;
// 'QMAP'
37
38
struct
Mapping
{
39
quint16
keycode
;
40
quint16
unicode
;
41
quint32
qtcode
;
42
quint8
modifiers
;
43
quint8
flags
;
44
quint16
special
;
45
46
};
47
48
enum
Flags
{
49
IsDead
= 0x01,
50
IsLetter
= 0x02,
51
IsModifier
= 0x04,
52
IsSystem
= 0x08
53
};
54
55
enum
System
{
56
SystemConsoleFirst
= 0x0100,
57
SystemConsoleMask
= 0x007f,
58
SystemConsoleLast
= 0x017f,
59
SystemConsolePrevious
= 0x0180,
60
SystemConsoleNext
= 0x0181,
61
SystemReboot
= 0x0200,
62
SystemZap
= 0x0300
63
};
64
65
struct
Composing
{
66
quint16
first
;
67
quint16
second
;
68
quint16
result
;
69
};
70
71
enum
Modifiers
{
72
ModPlain
= 0x00,
73
ModShift
= 0x01,
74
ModAltGr
= 0x02,
75
ModControl
= 0x04,
76
ModAlt
= 0x08,
77
ModShiftL
= 0x10,
78
ModShiftR
= 0x20,
79
ModCtrlL
= 0x40,
80
ModCtrlR
= 0x80
81
// ModCapsShift = 0x100, // not supported!
82
};
83
}
84
85
inline
QDataStream
&
operator
>>(QDataStream &ds,
QVxKeyboardMap
::
Mapping
&m)
86
{
87
return
ds >> m.keycode >> m.unicode >> m.qtcode >> m.modifiers >> m.flags >> m.special;
88
}
89
90
inline
QDataStream
&
operator
<<(QDataStream &ds,
const
QVxKeyboardMap
::
Mapping
&m)
91
{
92
return
ds << m.keycode << m.unicode << m.qtcode << m.modifiers << m.flags << m.special;
93
}
94
95
inline
QDataStream
&
operator
>>(QDataStream &ds,
QVxKeyboardMap
::
Composing
&c)
96
{
97
return
ds >> c.first >> c.second >> c.result;
98
}
99
100
inline
QDataStream
&
operator
<<(QDataStream &ds,
const
QVxKeyboardMap
::
Composing
&c)
101
{
102
return
ds << c.first << c.second << c.result;
103
}
104
105
class
QVxKeyboardHandler
:
public
QObject
106
{
107
public
:
108
QVxKeyboardHandler
(
const
QString &device, QFdContainer &fd,
bool
disableZap,
bool
enableCompose,
const
QString &keymapFile);
109
~
QVxKeyboardHandler
();
110
111
static
std
::
unique_ptr
<
QVxKeyboardHandler
>
create
(
const
QString &device,
112
const
QString &specification,
113
const
QString &defaultKeymapFile = QString());
114
115
static
Qt
::
KeyboardModifiers
toQtModifiers
(quint8 mod)
116
{
117
Qt::KeyboardModifiers qtmod = Qt::NoModifier;
118
119
if
(mod & (
QVxKeyboardMap
::
ModShift
|
QVxKeyboardMap
::
ModShiftL
|
QVxKeyboardMap
::
ModShiftR
))
120
qtmod |= Qt::ShiftModifier;
121
if
(mod & (
QVxKeyboardMap
::
ModControl
|
QVxKeyboardMap
::
ModCtrlL
|
QVxKeyboardMap
::
ModCtrlR
))
122
qtmod |= Qt::ControlModifier;
123
if
(mod &
QVxKeyboardMap
::
ModAlt
)
124
qtmod |= Qt::AltModifier;
125
126
return
qtmod;
127
}
128
129
bool
loadKeymap
(
const
QString &file);
130
void
unloadKeymap
();
131
132
void
readKeycode
();
133
QKeycodeAction
processKeycode
(quint16 keycode,
bool
pressed,
bool
autorepeat);
134
135
void
switchLang
();
136
137
private
:
138
void
processKeyEvent(
int
nativecode,
int
unicode,
int
qtcode,
139
Qt::KeyboardModifiers modifiers,
bool
isPress,
bool
autoRepeat);
140
141
QString m_device;
142
QFdContainer m_fd;
143
QSocketNotifier *m_notify;
144
145
// keymap handling
146
quint8 m_modifiers;
147
quint8 m_locks[3];
148
int
m_composing;
149
quint16 m_dead_unicode;
150
quint8 m_langLock;
151
152
bool
m_no_zap;
153
bool
m_do_compose;
154
155
const
QKeyboardMap::Mapping *m_keymap;
156
int
m_keymap_size;
157
const
QKeyboardMap::Composing *m_keycompose;
158
int
m_keycompose_size;
159
160
static
const
QKeyboardMap::Mapping s_keymap_default[];
161
static
const
QKeyboardMap::Composing s_keycompose_default[];
162
};
163
164
165
QT_END_NAMESPACE
166
167
#
endif
// QVXKEYBOARDHANDLER_P_H
QVxKeyboardHandler
Definition
qvxkeyboardhandler_p.h:106
QVxKeyboardHandler::processKeycode
QKeycodeAction processKeycode(quint16 keycode, bool pressed, bool autorepeat)
Definition
qvxkeyboardhandler.cpp:164
QVxKeyboardHandler::toQtModifiers
static Qt::KeyboardModifiers toQtModifiers(quint8 mod)
Definition
qvxkeyboardhandler_p.h:115
QVxKeyboardHandler::create
static std::unique_ptr< QVxKeyboardHandler > create(const QString &device, const QString &specification, const QString &defaultKeymapFile=QString())
Definition
qvxkeyboardhandler.cpp:65
QVxKeyboardHandler::QVxKeyboardHandler
QVxKeyboardHandler(const QString &device, QFdContainer &fd, bool disableZap, bool enableCompose, const QString &keymapFile)
Definition
qvxkeyboardhandler.cpp:40
QVxKeyboardHandler::readKeycode
void readKeycode()
Definition
qvxkeyboardhandler.cpp:116
QVxKeyboardHandler::loadKeymap
bool loadKeymap(const QString &file)
Definition
qvxkeyboardhandler.cpp:428
QVxKeyboardHandler::switchLang
void switchLang()
Definition
qvxkeyboardhandler.cpp:487
QVxKeyboardHandler::~QVxKeyboardHandler
~QVxKeyboardHandler()
Definition
qvxkeyboardhandler.cpp:60
QVxKeyboardHandler::unloadKeymap
void unloadKeymap()
Definition
qvxkeyboardhandler.cpp:405
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QVxKeyboardMap
Definition
qvxkeyboardhandler_p.h:35
QVxKeyboardMap::Modifiers
Modifiers
Definition
qvxkeyboardhandler_p.h:71
QVxKeyboardMap::ModShift
@ ModShift
Definition
qvxkeyboardhandler_p.h:73
QVxKeyboardMap::ModCtrlL
@ ModCtrlL
Definition
qvxkeyboardhandler_p.h:79
QVxKeyboardMap::ModControl
@ ModControl
Definition
qvxkeyboardhandler_p.h:75
QVxKeyboardMap::ModShiftL
@ ModShiftL
Definition
qvxkeyboardhandler_p.h:77
QVxKeyboardMap::ModCtrlR
@ ModCtrlR
Definition
qvxkeyboardhandler_p.h:80
QVxKeyboardMap::ModAltGr
@ ModAltGr
Definition
qvxkeyboardhandler_p.h:74
QVxKeyboardMap::ModPlain
@ ModPlain
Definition
qvxkeyboardhandler_p.h:72
QVxKeyboardMap::ModAlt
@ ModAlt
Definition
qvxkeyboardhandler_p.h:76
QVxKeyboardMap::ModShiftR
@ ModShiftR
Definition
qvxkeyboardhandler_p.h:78
QVxKeyboardMap::System
System
Definition
qvxkeyboardhandler_p.h:55
QVxKeyboardMap::SystemConsoleNext
@ SystemConsoleNext
Definition
qvxkeyboardhandler_p.h:60
QVxKeyboardMap::SystemConsolePrevious
@ SystemConsolePrevious
Definition
qvxkeyboardhandler_p.h:59
QVxKeyboardMap::SystemConsoleLast
@ SystemConsoleLast
Definition
qvxkeyboardhandler_p.h:58
QVxKeyboardMap::SystemZap
@ SystemZap
Definition
qvxkeyboardhandler_p.h:62
QVxKeyboardMap::SystemConsoleFirst
@ SystemConsoleFirst
Definition
qvxkeyboardhandler_p.h:56
QVxKeyboardMap::SystemConsoleMask
@ SystemConsoleMask
Definition
qvxkeyboardhandler_p.h:57
QVxKeyboardMap::SystemReboot
@ SystemReboot
Definition
qvxkeyboardhandler_p.h:61
QVxKeyboardMap::Flags
Flags
Definition
qvxkeyboardhandler_p.h:48
QVxKeyboardMap::IsSystem
@ IsSystem
Definition
qvxkeyboardhandler_p.h:52
QVxKeyboardMap::IsLetter
@ IsLetter
Definition
qvxkeyboardhandler_p.h:50
QVxKeyboardMap::IsModifier
@ IsModifier
Definition
qvxkeyboardhandler_p.h:51
QVxKeyboardMap::IsDead
@ IsDead
Definition
qvxkeyboardhandler_p.h:49
QVxKeyboardMap::FileMagic
const quint32 FileMagic
Definition
qvxkeyboardhandler_p.h:36
Qt
Definition
qcompare.h:111
Qt::Key_Tab
@ Key_Tab
Definition
qnamespace.h:687
Qt::Key_Right
@ Key_Right
Definition
qnamespace.h:702
Qt::Key_PageUp
@ Key_PageUp
Definition
qnamespace.h:704
Qt::Key_Backtab
@ Key_Backtab
Definition
qnamespace.h:688
Qt::Key_Insert
@ Key_Insert
Definition
qnamespace.h:692
Qt::Key_Left
@ Key_Left
Definition
qnamespace.h:700
Qt::Key_Up
@ Key_Up
Definition
qnamespace.h:701
Qt::Key_Down
@ Key_Down
Definition
qnamespace.h:703
Qt::Key_Delete
@ Key_Delete
Definition
qnamespace.h:693
Qt::Key_NumLock
@ Key_NumLock
Definition
qnamespace.h:711
Qt::Key_Multi_key
@ Key_Multi_key
Definition
qnamespace.h:763
Qt::Key_ScrollLock
@ Key_ScrollLock
Definition
qnamespace.h:712
Qt::Key_PageDown
@ Key_PageDown
Definition
qnamespace.h:705
Qt::Key_Home
@ Key_Home
Definition
qnamespace.h:698
Qt::Key_Clear
@ Key_Clear
Definition
qnamespace.h:697
Qt::Key_CapsLock
@ Key_CapsLock
Definition
qnamespace.h:710
Qt::Key_unknown
@ Key_unknown
Definition
qnamespace.h:1078
Qt::Key_End
@ Key_End
Definition
qnamespace.h:699
Qt::ShiftModifier
@ ShiftModifier
Definition
qnamespace.h:1083
Qt::ControlModifier
@ ControlModifier
Definition
qnamespace.h:1084
Qt::MetaModifier
@ MetaModifier
Definition
qnamespace.h:1086
Qt::KeypadModifier
@ KeypadModifier
Definition
qnamespace.h:1087
Qt::AltModifier
@ AltModifier
Definition
qnamespace.h:1085
Q_LOGGING_CATEGORY
#define Q_LOGGING_CATEGORY(name,...)
Definition
qloggingcategory.h:147
qCDebug
#define qCDebug(category,...)
Definition
qloggingcategory.h:162
Q_STATIC_LOGGING_CATEGORY
#define Q_STATIC_LOGGING_CATEGORY(name,...)
Definition
qloggingcategory.h:154
Q_DECLARE_LOGGING_CATEGORY
#define Q_DECLARE_LOGGING_CATEGORY(name)
Definition
qloggingcategory.h:141
operator<<
QDataStream & operator<<(QDataStream &ds, const QVxKeyboardMap::Composing &c)
Definition
qvxkeyboardhandler_p.h:100
operator>>
QDataStream & operator>>(QDataStream &ds, QVxKeyboardMap::Composing &c)
Definition
qvxkeyboardhandler_p.h:95
operator<<
QDataStream & operator<<(QDataStream &ds, const QVxKeyboardMap::Mapping &m)
Definition
qvxkeyboardhandler_p.h:90
operator>>
QDataStream & operator>>(QDataStream &ds, QVxKeyboardMap::Mapping &m)
Definition
qvxkeyboardhandler_p.h:85
QVxKeyboardMap::Composing
Definition
qvxkeyboardhandler_p.h:65
QVxKeyboardMap::Composing::first
quint16 first
Definition
qvxkeyboardhandler_p.h:66
QVxKeyboardMap::Composing::result
quint16 result
Definition
qvxkeyboardhandler_p.h:68
QVxKeyboardMap::Composing::second
quint16 second
Definition
qvxkeyboardhandler_p.h:67
QVxKeyboardMap::Mapping
Definition
qvxkeyboardhandler_p.h:38
QVxKeyboardMap::Mapping::special
quint16 special
Definition
qvxkeyboardhandler_p.h:44
QVxKeyboardMap::Mapping::unicode
quint16 unicode
Definition
qvxkeyboardhandler_p.h:40
QVxKeyboardMap::Mapping::modifiers
quint8 modifiers
Definition
qvxkeyboardhandler_p.h:42
QVxKeyboardMap::Mapping::keycode
quint16 keycode
Definition
qvxkeyboardhandler_p.h:39
QVxKeyboardMap::Mapping::qtcode
quint32 qtcode
Definition
qvxkeyboardhandler_p.h:41
QVxKeyboardMap::Mapping::flags
quint8 flags
Definition
qvxkeyboardhandler_p.h:43
qtbase
src
platformsupport
input
vxkeyboard
qvxkeyboardhandler_p.h
Generated on
for Qt by
1.18.0