Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
OpenBoard
Commits
e0ee3669
Commit
e0ee3669
authored
Jun 08, 2012
by
Anatoly Mihalchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Virtual keyboard improvement
parent
ca020305
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
918 additions
and
609 deletions
+918
-609
capslock.png
resources/images/virtual.keyboard/29/capslock.png
+0
-0
shift.png
resources/images/virtual.keyboard/29/shift.png
+0
-0
capslock.png
resources/images/virtual.keyboard/41/capslock.png
+0
-0
shift.png
resources/images/virtual.keyboard/41/shift.png
+0
-0
sankore.qrc
resources/sankore.qrc
+2
-0
UBPlatformUtils.cpp
src/frameworks/UBPlatformUtils.cpp
+2
-1
UBPlatformUtils.h
src/frameworks/UBPlatformUtils.h
+77
-25
UBPlatformUtils_linux.cpp
src/frameworks/UBPlatformUtils_linux.cpp
+277
-211
UBPlatformUtils_mac.mm
src/frameworks/UBPlatformUtils_mac.mm
+12
-6
UBPlatformUtils_win.cpp
src/frameworks/UBPlatformUtils_win.cpp
+263
-262
UBKeyboardPalette.cpp
src/gui/UBKeyboardPalette.cpp
+112
-9
UBKeyboardPalette.h
src/gui/UBKeyboardPalette.h
+30
-3
UBKeyboardPalette_linux.cpp
src/gui/UBKeyboardPalette_linux.cpp
+121
-59
UBKeyboardPalette_mac.cpp
src/gui/UBKeyboardPalette_mac.cpp
+16
-20
UBKeyboardPalette_win.cpp
src/gui/UBKeyboardPalette_win.cpp
+6
-13
No files found.
resources/images/virtual.keyboard/29/capslock.png
View replaced file @
ca020305
View file @
e0ee3669
245 Bytes
|
W:
|
H:
227 Bytes
|
W:
|
H:
2-up
Swipe
Onion skin
resources/images/virtual.keyboard/29/shift.png
0 → 100644
View file @
e0ee3669
245 Bytes
resources/images/virtual.keyboard/41/capslock.png
View replaced file @
ca020305
View file @
e0ee3669
261 Bytes
|
W:
|
H:
233 Bytes
|
W:
|
H:
2-up
Swipe
Onion skin
resources/images/virtual.keyboard/41/shift.png
0 → 100644
View file @
e0ee3669
261 Bytes
resources/sankore.qrc
View file @
e0ee3669
...
@@ -299,6 +299,7 @@
...
@@ -299,6 +299,7 @@
<file>images/virtual.keyboard/41/right-active.png</file>
<file>images/virtual.keyboard/41/right-active.png</file>
<file>images/virtual.keyboard/41/backspace.png</file>
<file>images/virtual.keyboard/41/backspace.png</file>
<file>images/virtual.keyboard/41/capslock.png</file>
<file>images/virtual.keyboard/41/capslock.png</file>
<file>images/virtual.keyboard/41/shift.png</file>
<file>images/virtual.keyboard/41/tab.png</file>
<file>images/virtual.keyboard/41/tab.png</file>
<file>images/virtual.keyboard/29/centre-passive.png</file>
<file>images/virtual.keyboard/29/centre-passive.png</file>
<file>images/virtual.keyboard/29/left-passive.png</file>
<file>images/virtual.keyboard/29/left-passive.png</file>
...
@@ -308,6 +309,7 @@
...
@@ -308,6 +309,7 @@
<file>images/virtual.keyboard/29/right-active.png</file>
<file>images/virtual.keyboard/29/right-active.png</file>
<file>images/virtual.keyboard/29/backspace.png</file>
<file>images/virtual.keyboard/29/backspace.png</file>
<file>images/virtual.keyboard/29/capslock.png</file>
<file>images/virtual.keyboard/29/capslock.png</file>
<file>images/virtual.keyboard/29/shift.png</file>
<file>images/virtual.keyboard/29/tab.png</file>
<file>images/virtual.keyboard/29/tab.png</file>
<file>images/toolPalette/cacheTool.png</file>
<file>images/toolPalette/cacheTool.png</file>
<file>images/libpalette/FlashCategory.svg</file>
<file>images/libpalette/FlashCategory.svg</file>
...
...
src/frameworks/UBPlatformUtils.cpp
View file @
e0ee3669
...
@@ -58,3 +58,4 @@ UBKeyboardLocale** UBPlatformUtils::getKeyboardLayouts(int& nCount)
...
@@ -58,3 +58,4 @@ UBKeyboardLocale** UBPlatformUtils::getKeyboardLayouts(int& nCount)
nCount
=
nKeyboardLayouts
;
nCount
=
nKeyboardLayouts
;
return
keyboardLayouts
;
return
keyboardLayouts
;
}
}
src/frameworks/UBPlatformUtils.h
View file @
e0ee3669
...
@@ -23,30 +23,82 @@ class QMainWindow;
...
@@ -23,30 +23,82 @@ class QMainWindow;
#define SYMBOL_KEYS_COUNT 47
#define SYMBOL_KEYS_COUNT 47
struct
KEYCODE
{
KEYCODE
()
:
symbol
(
0
)
,
code
(
0
)
,
modifier
(
0
)
{}
KEYCODE
(
int
_symbol
)
:
symbol
(
_symbol
)
,
code
(
0
)
,
modifier
(
0
)
{}
KEYCODE
(
int
_symbol
,
unsigned
char
_code
,
int
_modifier
)
:
symbol
(
_symbol
)
,
code
(
_code
)
,
modifier
(
_modifier
)
{}
bool
empty
()
const
{
return
symbol
==
0
;
}
int
symbol
;
unsigned
char
code
;
int
modifier
;
};
struct
KEYBT
struct
KEYBT
{
{
const
QChar
symbol1
;
QChar
symbol1
;
const
int
code1
;
QChar
symbol2
;
const
QChar
symbol2
;
bool
capsLockSwitch
;
const
int
code2
;
int
modifier1
;
int
modifier2
;
KEYCODE
codes
[
8
];
KEYBT
(
QChar
_symbol1
,
QChar
_symbol2
,
bool
_capsLockSwitch
,
int
_modifier1
,
int
_modifier2
,
KEYCODE
c1
=
0
,
KEYCODE
c2
=
0
,
KEYCODE
c3
=
0
,
KEYCODE
c4
=
0
,
KEYCODE
c5
=
0
,
KEYCODE
c6
=
0
,
KEYCODE
c7
=
0
,
KEYCODE
c8
=
0
)
:
symbol1
(
_symbol1
)
,
symbol2
(
_symbol2
)
,
capsLockSwitch
(
_capsLockSwitch
)
,
modifier1
(
_modifier1
)
,
modifier2
(
_modifier2
)
{
codes
[
0
]
=
c1
;
codes
[
1
]
=
c2
;
codes
[
2
]
=
c3
;
codes
[
3
]
=
c4
;
codes
[
4
]
=
c5
;
codes
[
5
]
=
c6
;
codes
[
6
]
=
c7
;
codes
[
7
]
=
c8
;
}
KEYBT
(
unsigned
int
_symbol1
,
~
KEYBT
()
unsigned
int
_symbol2
)
:
{}
symbol1
(
_symbol1
),
};
code1
(
_symbol1
),
symbol2
(
_symbol2
),
code2
(
_symbol2
){}
KEYBT
(
QChar
_symbol1
,
int
_code1
,
QChar
_symbol2
,
int
_code2
)
:
symbol1
(
_symbol1
),
code1
(
_code1
),
symbol2
(
_symbol2
),
code2
(
_code2
){}
};
class
UBKeyboardLocale
class
UBKeyboardLocale
{
{
...
@@ -63,7 +115,7 @@ struct KEYBT
...
@@ -63,7 +115,7 @@ struct KEYBT
const
QString
&
_name
,
const
QString
&
_name
,
const
QString
&
_id
,
const
QString
&
_id
,
QIcon
*
_icon
,
QIcon
*
_icon
,
const
KEYBT
_symbols
[])
KEYBT
_symbols
[])
:
fullName
(
_fullName
),
name
(
_name
),
id
(
_id
),
icon
(
_icon
),
:
fullName
(
_fullName
),
name
(
_name
),
id
(
_id
),
icon
(
_icon
),
constSymbols
(
_symbols
),
varSymbols
(
NULL
)
constSymbols
(
_symbols
),
varSymbols
(
NULL
)
{}
{}
...
@@ -74,12 +126,12 @@ struct KEYBT
...
@@ -74,12 +126,12 @@ struct KEYBT
const
QString
name
;
const
QString
name
;
const
QString
id
;
const
QString
id
;
QIcon
*
icon
;
QIcon
*
icon
;
const
KEYBT
*
operator
[]
(
int
index
)
const
KEYBT
*
operator
[]
(
int
index
)
const
{
{
return
(
varSymbols
==
NULL
)
?
constSymbols
+
index
:
varSymbols
[
index
];
return
(
varSymbols
==
NULL
)
?
constSymbols
+
index
:
varSymbols
[
index
];
}
}
private
:
private
:
const
KEYBT
*
constSymbols
;
KEYBT
*
constSymbols
;
KEYBT
**
varSymbols
;
KEYBT
**
varSymbols
;
};
};
...
...
src/frameworks/UBPlatformUtils_linux.cpp
View file @
e0ee3669
...
@@ -104,229 +104,295 @@ void UBPlatformUtils::setDesktopMode(bool desktop)
...
@@ -104,229 +104,295 @@ void UBPlatformUtils::setDesktopMode(bool desktop)
Q_UNUSED
(
desktop
);
Q_UNUSED
(
desktop
);
}
}
const
KEYBT
ENGLISH_LOCALE
[]
=
{
#define KEYBTDECL(s1, s2, clSwitch, code) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(s1, code, 0), KEYCODE(s2, code, 1))
/* ` ~ */
KEYBT
(
0x60
,
0x7e
),
/* 1 ! */
KEYBT
(
0x31
,
0x21
),
#define KEYBTDECLEX1(s1, s2, clSwitch, code, cs1, cs2) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 0), KEYCODE(cs2, code, 1))
/* 2 @ */
KEYBT
(
0x32
,
0x40
),
#define KEYBTDECLEX2(s1, s2, clSwitch, code, cs1, cs2) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 2), KEYCODE(cs2, code, 3))
/* 3 # */
KEYBT
(
0x33
,
0x23
),
/* 4 $ */
KEYBT
(
0x34
,
0x24
),
#define KEYBTDECLEX6(s1, s2, clSwitch, code, cs1, cs2, cs3, cs4, cs5, cs6) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 0), KEYCODE(cs2, code, 1), KEYCODE(cs3, code, 2), KEYCODE(cs4, code, 3), KEYCODE(cs5, code, 4), KEYCODE(cs6, code, 5))
/* 5 % */
KEYBT
(
0x35
,
0x25
),
/* 6 ^ */
KEYBT
(
0x36
,
0x88
),
#define KEYBTDECLEX8(s1, s2, clSwitch, code, cs1, cs2, cs3, cs4, cs5, cs6, cs7, cs8) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 0), KEYCODE(cs2, code, 1), KEYCODE(cs3, code, 2), KEYCODE(cs4, code, 3), KEYCODE(cs5, code, 4), KEYCODE(cs6, code, 5), KEYCODE(cs7, code, 6), KEYCODE(cs8, code, 7))
/* 7 & */
KEYBT
(
0x37
,
0x26
),
/* 8 * */
KEYBT
(
0x38
,
0x2a
),
/* 9 ( */
KEYBT
(
0x39
,
0x28
),
KEYBT
ENGLISH_LOCALE
[]
=
{
/* 0 ) */
KEYBT
(
0x30
,
0x29
),
/* ` ~ */
KEYBTDECL
(
0x60
,
0x7e
,
false
,
41
),
/* - _ */
KEYBT
(
0x2d
,
0x5f
),
/* 1 ! */
KEYBTDECL
(
0x31
,
0x21
,
false
,
2
),
/* = + */
KEYBT
(
0x3d
,
0x2b
),
/* 2 @ */
KEYBTDECL
(
0x32
,
0x40
,
false
,
3
),
/* 3 # */
KEYBTDECL
(
0x33
,
0x23
,
false
,
4
),
/* q Q */
KEYBT
(
0x71
,
0x51
),
/* 4 $ */
KEYBTDECL
(
0x34
,
0x24
,
false
,
5
),
/* w W */
KEYBT
(
0x77
,
0x57
),
/* 5 % */
KEYBTDECL
(
0x35
,
0x25
,
false
,
6
),
/* e E */
KEYBT
(
0x65
,
0x45
),
/* 6 ^ */
KEYBTDECL
(
0x36
,
0x88
,
false
,
7
),
/* r R */
KEYBT
(
0x72
,
0x52
),
/* 7 & */
KEYBTDECL
(
0x37
,
0x26
,
false
,
8
),
/* t T */
KEYBT
(
0x74
,
0x54
),
/* 8 * */
KEYBTDECL
(
0x38
,
0x2a
,
false
,
9
),
/* y Y */
KEYBT
(
0x79
,
0x59
),
/* 9 ( */
KEYBTDECL
(
0x39
,
0x28
,
false
,
10
),
/* u U */
KEYBT
(
0x75
,
0x55
),
/* 0 ) */
KEYBTDECL
(
0x30
,
0x29
,
false
,
11
),
/* i I */
KEYBT
(
0x69
,
0x49
),
/* - _ */
KEYBTDECL
(
0x2d
,
0x5f
,
false
,
12
),
/* o O */
KEYBT
(
0x6f
,
0x4f
),
/* = + */
KEYBTDECL
(
0x3d
,
0x2b
,
false
,
13
),
/* p P */
KEYBT
(
0x70
,
0x50
),
/* [ { */
KEYBT
(
0x5b
,
0x7b
),
/* q Q */
KEYBTDECL
(
0x71
,
0x51
,
true
,
16
),
/* ] } */
KEYBT
(
0x5d
,
0x7d
),
/* w W */
KEYBTDECL
(
0x77
,
0x57
,
true
,
17
),
/* e E */
KEYBTDECL
(
0x65
,
0x45
,
true
,
18
),
/* a A */
KEYBT
(
0x61
,
0x41
),
/* r R */
KEYBTDECL
(
0x72
,
0x52
,
true
,
19
),
/* s S */
KEYBT
(
0x73
,
0x53
),
/* t T */
KEYBTDECL
(
0x74
,
0x54
,
true
,
20
),
/* d D */
KEYBT
(
0x64
,
0x44
),
/* y Y */
KEYBTDECL
(
0x79
,
0x59
,
true
,
21
),
/* f F */
KEYBT
(
0x66
,
0x46
),
/* u U */
KEYBTDECL
(
0x75
,
0x55
,
true
,
22
),
/* g G */
KEYBT
(
0x67
,
0x47
),
/* i I */
KEYBTDECL
(
0x69
,
0x49
,
true
,
23
),
/* h H */
KEYBT
(
0x68
,
0x48
),
/* o O */
KEYBTDECL
(
0x6f
,
0x4f
,
true
,
24
),
/* j J */
KEYBT
(
0x6a
,
0x4a
),
/* p P */
KEYBTDECL
(
0x70
,
0x50
,
true
,
25
),
/* k K */
KEYBT
(
0x6b
,
0x4b
),
/* [ { */
KEYBTDECL
(
0x5b
,
0x7b
,
false
,
26
),
/* l L */
KEYBT
(
0x6c
,
0x4c
),
/* ] } */
KEYBTDECL
(
0x5d
,
0x7d
,
false
,
27
),
/* ; : */
KEYBT
(
0x3b
,
0x3a
),
/* ' " */
KEYBT
(
0x27
,
0x22
),
/* a A */
KEYBTDECL
(
0x61
,
0x41
,
true
,
30
),
/* \ | */
KEYBT
(
0x5c
,
0x7c
),
/* s S */
KEYBTDECL
(
0x73
,
0x53
,
true
,
31
),
/* d D */
KEYBTDECL
(
0x64
,
0x44
,
true
,
32
),
/* z Z */
KEYBT
(
0x7a
,
0x5a
),
/* f F */
KEYBTDECL
(
0x66
,
0x46
,
true
,
33
),
/* x X */
KEYBT
(
0x78
,
0x58
),
/* g G */
KEYBTDECL
(
0x67
,
0x47
,
true
,
34
),
/* c C */
KEYBT
(
0x63
,
0x43
),
/* h H */
KEYBTDECL
(
0x68
,
0x48
,
true
,
35
),
/* v V */
KEYBT
(
0x76
,
0x56
),
/* j J */
KEYBTDECL
(
0x6a
,
0x4a
,
true
,
36
),
/* b B */
KEYBT
(
0x62
,
0x42
),
/* k K */
KEYBTDECL
(
0x6b
,
0x4b
,
true
,
37
),
/* n N */
KEYBT
(
0x6e
,
0x4e
),
/* l L */
KEYBTDECL
(
0x6c
,
0x4c
,
true
,
38
),
/* m M */
KEYBT
(
0x6d
,
0x4d
),
/* ; : */
KEYBTDECL
(
0x3b
,
0x3a
,
false
,
39
),
/* , < */
KEYBT
(
0x2c
,
0x3c
),
/* ' " */
KEYBTDECL
(
0x27
,
0x22
,
false
,
40
),
/* . > */
KEYBT
(
0x2e
,
0x3e
),
/* \ | */
KEYBTDECL
(
0x5c
,
0x7c
,
false
,
43
),
/* / ? */
KEYBT
(
0x2f
,
0x5f
)};
/* z Z */
KEYBTDECL
(
0x7a
,
0x5a
,
true
,
44
),
const
KEYBT
RUSSIAN_LOCALE
[]
=
/* x X */
KEYBTDECL
(
0x78
,
0x58
,
true
,
45
),
/* c C */
KEYBTDECL
(
0x63
,
0x43
,
true
,
46
),
/* v V */
KEYBTDECL
(
0x76
,
0x56
,
true
,
47
),
/* b B */
KEYBTDECL
(
0x62
,
0x42
,
true
,
48
),
/* n N */
KEYBTDECL
(
0x6e
,
0x4e
,
true
,
49
),
/* m M */
KEYBTDECL
(
0x6d
,
0x4d
,
true
,
50
),
/* , < */
KEYBTDECL
(
0x2c
,
0x3c
,
false
,
51
),
/* . > */
KEYBTDECL
(
0x2e
,
0x3e
,
false
,
52
),
/* / ? */
KEYBTDECL
(
0x2f
,
0x5f
,
false
,
53
)};
KEYBT
RUSSIAN_LOCALE
[]
=
{
{
/* ё Ё */
KEYBT
(
0x451
,
XK_Cyrillic_io
,
0x401
,
XK_Cyrillic_IO
),
/* ё Ё */
KEYBTDECLEX2
(
0x451
,
0x401
,
true
,
41
,
XK_Cyrillic_io
,
XK_Cyrillic_IO
),
/* 1 ! */
KEYBT
(
0x31
,
0x21
),
/* 1 ! */
KEYBTDECL
(
0x31
,
0x21
,
false
,
2
),
/* 2 " */
KEYBT
(
0x32
,
0x5c
),
/* 2 " */
KEYBTDECL
(
0x32
,
0x5c
,
false
,
3
),
/* 3 № */
KEYBT
(
0x33
,
0x33
,
0x2116
,
XK_numerosign
),
/* 3 № */
KEYBTDECLEX1
(
0x33
,
0x2116
,
false
,
4
,
0x33
,
XK_numerosign
),
/* 4 ; */
KEYBT
(
0x34
,
0x3b
),
/* 4 ; */
KEYBTDECL
(
0x34
,
0x3b
,
false
,
5
),
/* 5 % */
KEYBT
(
0x35
,
0x25
),
/* 5 % */
KEYBTDECL
(
0x35
,
0x25
,
false
,
6
),
/* 6 : */
KEYBT
(
0x36
,
0x3a
),
/* 6 : */
KEYBTDECL
(
0x36
,
0x3a
,
false
,
7
),
/* 7 ? */
KEYBT
(
0x37
,
0x3f
),
/* 7 ? */
KEYBTDECL
(
0x37
,
0x3f
,
false
,
8
),
/* 8 * */
KEYBT
(
0x38
,
0x2a
),
/* 8 * */
KEYBTDECL
(
0x38
,
0x2a
,
false
,
9
),
/* 9 ( */
KEYBT
(
0x39
,
0x28
),
/* 9 ( */
KEYBTDECL
(
0x39
,
0x28
,
false
,
10
),
/* 0 ) */
KEYBT
(
0x30
,
0x29
),
/* 0 ) */
KEYBTDECL
(
0x30
,
0x29
,
false
,
11
),
/* - _ */
KEYBT
(
0x2d
,
0x4f
),
/* - _ */
KEYBTDECL
(
0x2d
,
0x4f
,
false
,
12
),
/* = + */
KEYBT
(
0x3d
,
0x2b
),
/* = + */
KEYBTDECL
(
0x3d
,
0x2b
,
false
,
13
),
/* й Й */
KEYBT
(
0x439
,
XK_Cyrillic_shorti
,
0x419
,
XK_Cyrillic_SHORTI
),
/* й Й */
KEYBTDECLEX2
(
0x439
,
0x419
,
true
,
16
,
XK_Cyrillic_shorti
,
XK_Cyrillic_SHORTI
),
/* ц Ц */
KEYBT
(
0x446
,
XK_Cyrillic_tse
,
0x426
,
XK_Cyrillic_TSE
),
/* ц Ц */
KEYBTDECLEX2
(
0x446
,
0x426
,
true
,
17
,
XK_Cyrillic_tse
,
XK_Cyrillic_TSE
),
/* у У */
KEYBT
(
0x443
,
XK_Cyrillic_u
,
0x423
,
XK_Cyrillic_U
),
/* у У */
KEYBTDECLEX2
(
0x443
,
0x423
,
true
,
18
,
XK_Cyrillic_u
,
XK_Cyrillic_U
),
/* к К */
KEYBT
(
0x43a
,
XK_Cyrillic_ka
,
0x41a
,
XK_Cyrillic_KA
),
/* к К */
KEYBTDECLEX2
(
0x43a
,
0x41a
,
true
,
19
,
XK_Cyrillic_ka
,
XK_Cyrillic_KA
),
/* е Е */
KEYBT
(
0x435
,
XK_Cyrillic_ie
,
0x415
,
XK_Cyrillic_IE
),
/* е Е */
KEYBTDECLEX2
(
0x435
,
0x415
,
true
,
20
,
XK_Cyrillic_ie
,
XK_Cyrillic_IE
),
/* н Н */
KEYBT
(
0x43d
,
XK_Cyrillic_en
,
0x41d
,
XK_Cyrillic_EN
),
/* н Н */
KEYBTDECLEX2
(
0x43d
,
0x41d
,
true
,
21
,
XK_Cyrillic_en
,
XK_Cyrillic_EN
),
/* г Г */
KEYBT
(
0x433
,
XK_Cyrillic_ghe
,
0x413
,
XK_Cyrillic_GHE
),
/* г Г */
KEYBTDECLEX2
(
0x433
,
0x413
,
true
,
22
,
XK_Cyrillic_ghe
,
XK_Cyrillic_GHE
),
/* ш Ш */
KEYBT
(
0x448
,
XK_Cyrillic_sha
,
0x428
,
XK_Cyrillic_SHA
),
/* ш Ш */
KEYBTDECLEX2
(
0x448
,
0x428
,
true
,
23
,
XK_Cyrillic_sha
,
XK_Cyrillic_SHA
),
/* щ Щ */
KEYBT
(
0x449
,
XK_Cyrillic_shcha
,
0x429
,
XK_Cyrillic_SHCHA
),
/* щ Щ */
KEYBTDECLEX2
(
0x449
,
0x429
,
true
,
24
,
XK_Cyrillic_shcha
,
XK_Cyrillic_SHCHA
),
/* з З */
KEYBT
(
0x437
,
XK_Cyrillic_ze
,
0x417
,
XK_Cyrillic_ZE
),
/* з З */
KEYBTDECLEX2
(
0x437
,
0x417
,
true
,
25
,
XK_Cyrillic_ze
,
XK_Cyrillic_ZE
),
/* х Х */
KEYBT
(
0x445
,
XK_Cyrillic_ha
,
0x425
,
XK_Cyrillic_HA
),
/* х Х */
KEYBTDECLEX2
(
0x445
,
0x425
,
true
,
26
,
XK_Cyrillic_ha
,
XK_Cyrillic_HA
),
/* ъ Ъ */
KEYBT
(
0x44a
,
XK_Cyrillic_hardsign
,
0x42a
,
XK_Cyrillic_HARDSIGN
),
/* ъ Ъ */
KEYBTDECLEX2
(
0x44a
,
0x42a
,
true
,
27
,
XK_Cyrillic_hardsign
,
XK_Cyrillic_HARDSIGN
),
/* ф Ф */
KEYBT
(
0x444
,
XK_Cyrillic_ef
,
0x424
,
XK_Cyrillic_EF
),
/* ф Ф */
KEYBTDECLEX2
(
0x444
,
0x424
,
true
,
30
,
XK_Cyrillic_ef
,
XK_Cyrillic_EF
),
/* ы Ы */
KEYBT
(
0x44b
,
XK_Cyrillic_yeru
,
0x42b
,
XK_Cyrillic_YERU
),
/* ы Ы */
KEYBTDECLEX2
(
0x44b
,
0x42b
,
true
,
31
,
XK_Cyrillic_yeru
,
XK_Cyrillic_YERU
),
/* в В */
KEYBT
(
0x432
,
XK_Cyrillic_ve
,
0x412
,
XK_Cyrillic_VE
),
/* в В */
KEYBTDECLEX2
(
0x432
,
0x412
,
true
,
32
,
XK_Cyrillic_ve
,
XK_Cyrillic_VE
),
/* а А */
KEYBT
(
0x430
,
XK_Cyrillic_a
,
0x410
,
XK_Cyrillic_A
),
/* а А */
KEYBTDECLEX2
(
0x430
,
0x410
,
true
,
33
,
XK_Cyrillic_a
,
XK_Cyrillic_A
),
/* п П */
KEYBT
(
0x43f
,
XK_Cyrillic_pe
,
0x41f
,
XK_Cyrillic_PE
),
/* п П */
KEYBTDECLEX2
(
0x43f
,
0x41f
,
true
,
34
,
XK_Cyrillic_pe
,
XK_Cyrillic_PE
),
/* р Р */
KEYBT
(
0x440
,
XK_Cyrillic_er
,
0x420
,
XK_Cyrillic_ER
),
/* р Р */
KEYBTDECLEX2
(
0x440
,
0x420
,
true
,
35
,
XK_Cyrillic_er
,
XK_Cyrillic_ER
),
/* о О */
KEYBT
(
0x43e
,
XK_Cyrillic_o
,
0x41e
,
XK_Cyrillic_O
),
/* о О */
KEYBTDECLEX2
(
0x43e
,
0x41e
,
true
,
36
,
XK_Cyrillic_o
,
XK_Cyrillic_O
),
/* л Л */
KEYBT
(
0x43b
,
XK_Cyrillic_el
,
0x41b
,
XK_Cyrillic_EL
),
/* л Л */
KEYBTDECLEX2
(
0x43b
,
0x41b
,
true
,
37
,
XK_Cyrillic_el
,
XK_Cyrillic_EL
),
/* д Д */
KEYBT
(
0x434
,
XK_Cyrillic_de
,
0x414
,
XK_Cyrillic_DE
),
/* д Д */
KEYBTDECLEX2
(
0x434
,
0x414
,
true
,
38
,
XK_Cyrillic_de
,
XK_Cyrillic_DE
),
/* ж Ж */
KEYBT
(
0x436
,
XK_Cyrillic_zhe
,
0x416
,
XK_Cyrillic_ZHE
),
/* ж Ж */
KEYBTDECLEX2
(
0x436
,
0x416
,
true
,
39
,
XK_Cyrillic_zhe
,
XK_Cyrillic_ZHE
),
/* э Э */
KEYBT
(
0x44d
,
XK_Cyrillic_e
,
0x42d
,
XK_Cyrillic_E
),
/* э Э */
KEYBTDECLEX2
(
0x44d
,
0x42d
,
true
,
40
,
XK_Cyrillic_e
,
XK_Cyrillic_E
),
/* \ / */
KEYBT
(
0x5c
,
0x2f
),
/* \ / */
KEYBTDECL
(
0x5c
,
0x2f
,
false
,
43
),
/* я Я */
KEYBT
(
0x44f
,
XK_Cyrillic_ya
,
0x42f
,
XK_Cyrillic_YA
),
/* я Я */
KEYBTDECLEX2
(
0x44f
,
0x42f
,
true
,
44
,
XK_Cyrillic_ya
,
XK_Cyrillic_YA
),
/* ч Ч */
KEYBT
(
0x447
,
XK_Cyrillic_che
,
0x427
,
XK_Cyrillic_CHE
),
/* ч Ч */
KEYBTDECLEX2
(
0x447
,
0x427
,
true
,
45
,
XK_Cyrillic_che
,
XK_Cyrillic_CHE
),
/* с С */
KEYBT
(
0x441
,
XK_Cyrillic_es
,
0x421
,
XK_Cyrillic_ES
),
/* с С */
KEYBTDECLEX2
(
0x441
,
0x421
,
true
,
46
,
XK_Cyrillic_es
,
XK_Cyrillic_ES
),
/* м М */
KEYBT
(
0x43c
,
XK_Cyrillic_em
,
0x41c
,
XK_Cyrillic_EM
),
/* м М */
KEYBTDECLEX2
(
0x43c
,
0x41c
,
true
,
47
,
XK_Cyrillic_em
,
XK_Cyrillic_EM
),
/* и И */
KEYBT
(
0x438
,
XK_Cyrillic_i
,
0x418
,
XK_Cyrillic_I
),
/* и И */
KEYBTDECLEX2
(
0x438
,
0x418
,
true
,
48
,
XK_Cyrillic_i
,
XK_Cyrillic_I
),
/* т Т */
KEYBT
(
0x442
,
XK_Cyrillic_te
,
0x422
,
XK_Cyrillic_TE
),
/* т Т */
KEYBTDECLEX2
(
0x442
,
0x422
,
true
,
49
,
XK_Cyrillic_te
,
XK_Cyrillic_TE
),
/* ь Ь */
KEYBT
(
0x44c
,
XK_Cyrillic_softsign
,
0x42c
,
XK_Cyrillic_SOFTSIGN
),
/* ь Ь */
KEYBTDECLEX2
(
0x44c
,
0x42c
,
true
,
50
,
XK_Cyrillic_softsign
,
XK_Cyrillic_SOFTSIGN
),
/* б Б */
KEYBT
(
0x431
,
XK_Cyrillic_be
,
0x411
,
XK_Cyrillic_BE
),
/* б Б */
KEYBTDECLEX2
(
0x431
,
0x411
,
true
,
51
,
XK_Cyrillic_be
,
XK_Cyrillic_BE
),
/* ю Ю */
KEYBT
(
0x44e
,
XK_Cyrillic_yu
,
0x42e
,
XK_Cyrillic_YU
),
/* ю Ю */
KEYBTDECLEX2
(
0x44e
,
0x42e
,
true
,
52
,
XK_Cyrillic_yu
,
XK_Cyrillic_YU
),
/* . , */
KEYBT
(
0x2e
,
0x2c
)};
/* . , */
KEYBTDECL
(
0x2e
,
0x2c
,
false
,
53
)};
const
KEYBT
FRENCH_LOCALE
[]
=
{
KEYBT
GERMAN_LOCALE
[]
=
{
/* ? ? */
KEYBT
(
0xb2
,
XK_twosuperior
,
0xb2
,
XK_twosuperior
),
/* ^ ? */
KEYBTDECL
(
0x5f
,
0xb0
,
false
,
41
),
/* & 1 */
KEYBT
(
0x26
,
0x31
),
/* 1 ! */
KEYBTDECL
(
0x31
,
0x21
,
true
,
2
),
/* ? 2 */
KEYBT
(
0xe9
,
0x32
),
/* 2 " */
KEYBTDECL
(
0x32
,
0x22
,
true
,
3
),
/* " 3 */
KEYBT
(
0x22
,
0x33
),
/* 3 */
KEYBTDECL
(
0x33
,
0xa7
,
true
,
4
),
/* ' 4 */
KEYBT
(
0x27
,
0x34
),
/* 4 $ */
KEYBTDECL
(
0x34
,
0x24
,
true
,
5
),
/* ( 5 */
KEYBT
(
0x28
,
0x35
),
/* 5 % */
KEYBTDECL
(
0x35
,
0x25
,
true
,
6
),
/* - 6 */
KEYBT
(
0x2d
,
0x36
),
/* 6 & */
KEYBTDECL
(
0x36
,
0x26
,
true
,
7
),
/* ? 7 */
KEYBT
(
0xe8
,
XK_egrave
,
0x37
,
0x37
),
/* 7 / */
KEYBTDECL
(
0x37
,
0x2f
,
true
,
8
),
/* _ 8 */
KEYBT
(
0x5f
,
0x38
),
/* 8 ( */
KEYBTDECL
(
0x38
,
0x28
,
true
,
9
),
/* ? 9 */
KEYBT
(
0xe7
,
XK_ccedilla
,
0x39
,
0x39
),
/* 9 ) */
KEYBTDECL
(
0x39
,
0x29
,
true
,
10
),
/* ? 0 */
KEYBT
(
0xe0
,
0x29
),
/* 0 = */
KEYBTDECL
(
0x30
,
0x3d
,
true
,
11
),
/* ) ? */
KEYBT
(
0x29
,
0xb0
),
/* ? ? */
KEYBTDECL
(
0xdf
,
0x3f
,
true
,
12
),
/* = + */
KEYBT
(
0x3d
,
0x2b
),
/* ` ? */
KEYBTDECL
(
0x60
,
0xb4
,
true
,
13
),
/* a A */
KEYBT
(
0x61
,
0x41
),
/* q Q */
KEYBTDECL
(
0x71
,
0x51
,
true
,
16
),
/* z Z */
KEYBT
(
0x7a
,
0x5a
),
/* w W */
KEYBTDECL
(
0x77
,
0x57
,
true
,
17
),
/* e E */
KEYBT
(
0x65
,
0x45
),
/* e E */
KEYBTDECL
(
0x65
,
0x45
,
true
,
18
),
/* r R */
KEYBT
(
0x72
,
0x52
),
/* r R */
KEYBTDECL
(
0x72
,
0x52
,
true
,
19
),
/* t T */
KEYBT
(
0x74
,
0x54
),
/* t T */
KEYBTDECL
(
0x74
,
0x54
,
true
,
20
),
/* y Y */
KEYBT
(
0x79
,
0x59
),
/* z Z */
KEYBTDECL
(
0x7a
,
0x5a
,
true
,
21
),
/* u U */
KEYBT
(
0x75
,
0x55
),
/* u U */
KEYBTDECL
(
0x75
,
0x55
,
true
,
22
),
/* i I */
KEYBT
(
0x69
,
0x49
),
/* i I */
KEYBTDECL
(
0x69
,
0x49
,
true
,
23
),
/* o O */
KEYBT
(
0x6f
,
0x4f
),
/* o O */
KEYBTDECL
(
0x6f
,
0x4f
,
true
,
24
),
/* p P */
KEYBT
(
0x70
,
0x50
),
/* p P */
KEYBTDECL
(
0x70
,
0x50
,
true
,
25
),
/* ^ ? */
KEYBT
(
0x5e
,
0xa8
),
/* ? ? */
KEYBTDECL
(
0xfc
,
0xdc
,
true
,
26
),
/* $ ? } */
KEYBT
(
0x24
,
0xa3
),
/* + * */
KEYBTDECL
(
0x2b
,
0x2a
,
true
,
27
),
/* q Q */
KEYBT
(
0x71
,
0x51
),
/* a A */
KEYBTDECL
(
0x61
,
0x41
,
true
,
30
),
/* s S */
KEYBT
(
0x73
,
0x53
),
/* s S */
KEYBTDECL
(
0x73
,
0x53
,
true
,
31
),
/* d D */
KEYBT
(
0x64
,
0x44
),
/* d D */
KEYBTDECL
(
0x64
,
0x44
,
true
,
32
),
/* f F */
KEYBT
(
0x66
,
0x46
),
/* f F */
KEYBTDECL
(
0x66
,
0x46
,
true
,
33
),
/* g G */
KEYBT
(
0x67
,
0x47
),
/* g G */
KEYBTDECL
(
0x67
,
0x47
,
true
,
34
),
/* h H */
KEYBT
(
0x68
,
0x48
),
/* h H */
KEYBTDECL
(
0x68
,
0x48
,
true
,
35
),
/* j J */
KEYBT
(
0x6a
,
0x4a
),
/* j J */
KEYBTDECL
(
0x6a
,
0x4a
,
true
,
36
),
/* k K */
KEYBT
(
0x6b
,
0x4b
),
/* k K */
KEYBTDECL
(
0x6b
,
0x4b
,
true
,
37
),
/* l L */
KEYBT
(
0x6c
,
0x4c
),
/* l L */
KEYBTDECL
(
0x6c
,
0x4c
,
true
,
38
),
/* m M */
KEYBT
(
0x6d
,
0x4d
),
/* ? ? */
KEYBTDECL
(
0xf6
,
0xd6
,
true
,
39
),
/* ? % */
KEYBT
(
0xf9
,
0x25
),
/* ? ? */
KEYBTDECL
(
0xe4
,
0xc4
,
true
,
40
),
/* * ? */
KEYBT
(
0x2a
,
0xb5
),
/* ' # */
KEYBTDECL
(
0x27
,
0x23
,
true
,
43
),
/* w W */
KEYBT
(
0x77
,
0x57
),
/* y Y */
KEYBTDECL
(
0x79
,
0x59
,
true
,
44
),
/* x X */
KEYBT
(
0x78
,
0x58
),
/* x X */
KEYBTDECL
(
0x78
,
0x58
,
true
,
45
),
/* c C */
KEYBT
(
0x63
,
0x43
),
/* c C */
KEYBTDECL
(
0x63
,
0x43
,
true
,
46
),
/* v V */
KEYBT
(
0x76
,
0x56
),
/* v V */
KEYBTDECL
(
0x76
,
0x56
,
true
,
47
),
/* b B */
KEYBT
(
0x62
,
0x42
),
/* b B */
KEYBTDECL
(
0x62
,
0x42
,
true
,
48
),
/* n N */
KEYBT
(
0x6e
,
0x4e
),
/* n N */
KEYBTDECL
(
0x6e
,
0x4e
,
true
,
49
),
/* , ? */
KEYBT
(
0x2c
,
0x3f
),
/* m M */
KEYBTDECL
(
0x6d
,
0x4d
,
true
,
50
),
/* ; . */
KEYBT
(
0x3b
,
0x2e
),
/* , ; */
KEYBTDECL
(
0x2c
,
0x3b
,
true
,
51
),
/* : / */
KEYBT
(
0x3a
,
0x2f
),
/* . : */
KEYBTDECL
(
0x2e
,
0x3a
,
true
,
52
),
/* ! ? */
KEYBT
(
0x21
,
0xa7
)};
/* _ - */
KEYBTDECL
(
0x5f
,
0x2d
,
true
,
53
)};
const
KEYBT
GERMAN_LOCALE
[]
=
{
KEYBT
FRENCH_LOCALE
[]
=
{
/* ^ ? */
KEYBT
(
0x5f
,
0xb0
),
/* ? ? */
KEYBTDECL
(
0xb2
,
0xb2
,
true
,
41
),
/* 1 ! */
KEYBT
(
0x31
,
0x21
),
/* & 1 */
KEYBTDECL
(
0x26
,
0x31
,
true
,
2
),
/* 2 " */
KEYBT
(
0x32
,
0x22
),
/* ? 2 */
KEYBTDECL
(
0xe9
,
0x32
,
true
,
3
),
/* 3 */
KEYBT
(
0x33
,
0xa7
),
/* " 3 */
KEYBTDECL
(
0x22
,
0x33
,
true
,
4
),
/* 4 $ */
KEYBT
(
0x34
,
0x24
),
/* ' 4 */
KEYBTDECL
(
0x27
,
0x34
,
true
,
5
),
/* 5 % */
KEYBT
(
0x35
,
0x25
),
/* ( 5 */
KEYBTDECL
(
0x28
,
0x35
,
true
,
6
),
/* 6 & */
KEYBT
(
0x36
,
0x26
),
/* - 6 */
KEYBTDECL
(
0x2d
,
0x36
,
true
,
7
),
/* 7 / */
KEYBT
(
0x37
,
0x2f
),
/* ? 7 */
KEYBTDECL
(
0xe8
,
0x37
,
true
,
8
),
/* 8 ( */
KEYBT
(
0x38
,
0x28
),
/* _ 8 */
KEYBTDECL
(
0x5f
,
0x38
,
true
,
9
),
/* 9 ) */
KEYBT
(
0x39
,
0x29
),
/* ? 9 */
KEYBTDECL
(
0xe7
,
0x39
,
true
,
10
),
/* 0 = */
KEYBT
(
0x30
,
0x3d
),
/* ? 0 */
KEYBTDECL
(
0xe0
,
0x29
,
true
,
11
),
/* ? ? */
KEYBT
(
0xdf
,
0x3f
),
/* ) ? */
KEYBTDECL
(
0x29
,
0xb0
,
true
,
12
),
/* ` ? */
KEYBT
(
0x60
,
0xb4
),
/* = + */
KEYBTDECL
(
0x3d
,
0x2b
,
true
,
13
),
/* q Q */
KEYBT
(
0x71
,
0x51
),
/* a A */
KEYBTDECLEX6
(
0x61
,
0x41
,
true
,
16
,
0x61
,
0x41
,
0xe0
,
0xc0
,
0xe4
,
0xc4
),
/* w W */
KEYBT
(
0x77
,
0x57
),
/* z Z */
KEYBTDECL
(
0x7a
,
0x5a
,
true
,
17
),
/* e E */
KEYBT
(
0x65
,
0x45
),
/* e E */
KEYBTDECLEX6
(
0x65
,
0x45
,
true
,
18
,
0x65
,
0x45
,
0xe8
,
0xc8
,
0xeb
,
0xcb
),
/* r R */
KEYBT
(
0x72
,
0x52
),
/* r R */
KEYBTDECL
(
0x72
,
0x52
,
true
,
19
),
/* t T */
KEYBT
(
0x74
,
0x54
),
/* t T */
KEYBTDECL
(
0x74
,
0x54
,
true
,
20
),
/* z Z */
KEYBT
(
0x7a
,
0x5a
),
/* y Y */
KEYBTDECLEX6
(
0x79
,
0x59
,
true
,
21
,
0x79
,
0x59
,
0
,
0
,
0xff
,
0
),
/* u U */
KEYBT
(
0x75
,
0x55
),
/* u U */
KEYBTDECLEX6
(
0x75
,
0x55
,
true
,
22
,
0x75
,
0x55
,
0xf9
,
0xd9
,
0xfc
,
0xdc
),
/* i I */
KEYBT
(
0x69
,
0x49
),
/* i I */
KEYBTDECLEX6
(
0x69
,
0x49
,
true
,
23
,
0x69
,
0x49
,
0xec
,
0xcc
,
0xef
,
0xcf
),
/* o O */
KEYBT
(
0x6f
,
0x4f
),
/* o O */
KEYBTDECLEX6
(
0x6f
,
0x4f
,
true
,
24
,
0x6f
,
0x4f
,
0xf2
,
0xd2
,
0xf6
,
0xd6
),
/* p P */
KEYBT
(
0x70
,
0x50
),
/* p P */
KEYBTDECL
(
0x70
,
0x50
,
true
,
25
),
/* ? ? */
KEYBT
(
0xfc
,
0xdc
),
/* ^ ? */
KEYBT
(
0x5e
,
0xa8
,
true
,
1
,
2
,
KEYCODE
(
0x5e
,
26
,
0
),
KEYCODE
(
0xa8
,
26
,
1
)),
/* + * */
KEYBT
(
0x2b
,
0x2a
),
/* $ ? } */
KEYBTDECL
(
0x24
,
0xa3
,
true
,
27
),
/* a A */
KEYBT
(
0x61
,
0x41
),
/* q Q */
KEYBTDECL
(
0x71
,
0x51
,
true
,
30
),
/* s S */
KEYBT
(
0x73
,
0x53
),
/* s S */
KEYBTDECL
(
0x73
,
0x53
,
true
,
31
),
/* d D */
KEYBT
(
0x64
,
0x44
),
/* d D */
KEYBTDECL
(
0x64
,
0x44
,
true
,
32
),
/* f F */
KEYBT
(
0x66
,
0x46
),
/* f F */
KEYBTDECL
(
0x66
,
0x46
,
true
,
33
),
/* g G */
KEYBT
(
0x67
,
0x47
),
/* g G */
KEYBTDECL
(
0x67
,
0x47
,
true
,
34
),
/* h H */
KEYBT
(
0x68
,
0x48
),
/* h H */
KEYBTDECL
(
0x68
,
0x48
,
true
,
35
),
/* j J */
KEYBT
(
0x6a
,
0x4a
),
/* j J */
KEYBTDECL
(
0x6a
,
0x4a
,
true
,
36
),
/* k K */
KEYBT
(
0x6b
,
0x4b
),
/* k K */
KEYBTDECL
(
0x6b
,
0x4b
,
true
,
37
),
/* l L */
KEYBT
(
0x6c
,
0x4c
),
/* l L */
KEYBTDECL
(
0x6c
,
0x4c
,
true
,
38
),
/* ? ? */
KEYBT
(
0xf6
,
0xd6
),
/* m M */
KEYBTDECL
(
0x6d
,
0x4d
,
true
,
39
),
/* ? ? */
KEYBT
(
0xe4
,
0xc4
),
/* ? % */
KEYBTDECL
(
0xf9
,
0x25
,
true
,
40
),
/* ' # */
KEYBT
(
0x27
,
0x23
),
/* * ? */
KEYBTDECL
(
0x2a
,
0xb5
,
true
,
43
),
/* y Y */
KEYBT
(
0x79
,
0x59
),
/* w W */
KEYBTDECL
(
0x77
,
0x57
,
true
,
44
),
/* x X */
KEYBT
(
0x78
,
0x58
),
/* x X */
KEYBTDECL
(
0x78
,
0x58
,
true
,
45
),
/* c C */
KEYBT
(
0x63
,
0x43
),
/* c C */
KEYBTDECL
(
0x63
,
0x43
,
true
,
46
),
/* v V */
KEYBT
(
0x76
,
0x56
),
/* v V */
KEYBTDECL
(
0x76
,
0x56
,
true
,
47
),
/* b B */
KEYBT
(
0x62
,
0x42
),
/* b B */
KEYBTDECL
(
0x62
,
0x42
,
true
,
48
),
/* n N */
KEYBT
(
0x6e
,
0x4e
),
/* n N */
KEYBTDECL
(
0x6e
,
0x4e
,
true
,
49
),
/* m M */
KEYBT
(
0x6d
,
0x4d
),
/* , ? */
KEYBTDECL
(
0x2c
,
0x3f
,
true
,
50
),
/* , ; */
KEYBT
(
0x2c
,
0x3b
),
/* ; . */
KEYBTDECL
(
0x3b
,
0x2e
,
true
,
51
),
/* . : */
KEYBT
(
0x2e
,
0x3a
),
/* : / */
KEYBTDECL
(
0x3a
,
0x2f
,
true
,
52
),
/* _ - */
KEYBT
(
0x5f
,
0x2d
)};
/* ! ? */
KEYBTDECL
(
0x21
,
0xa7
,
true
,
53
)};
KEYBT
SWISS_FRENCH_LOCALE
[]
=
{
/* § °*/
KEYBTDECL
(
0xa7
,
0xb0
,
false
,
41
),
/* 1 +*/
KEYBTDECL
(
0x31
,
0x2b
,
false
,
2
),
/* 2 "*/
KEYBTDECL
(
0x32
,
0x22
,
false
,
3
),
/* 3 **/
KEYBTDECL
(
0x33
,
0x2a
,
false
,
4
),
/* 4 ç*/
KEYBTDECL
(
0x34
,
0xe7
,
false
,
5
),
/* 5 %*/
KEYBTDECL
(
0x35
,
0x25
,
false
,
6
),
/* 6 &*/
KEYBTDECL
(
0x36
,
0x26
,
false
,
7
),
/* 7 /*/
KEYBTDECL
(
0x37
,
0x2f
,
false
,
8
),
/* 8 (*/
KEYBTDECL
(
0x38
,
0x28
,
false
,
9
),
/* 9 )*/
KEYBTDECL
(
0x39
,
0x29
,
false
,
10
),
/* 0 =*/
KEYBTDECL
(
0x30
,
0x3d
,
false
,
11
),
/* ' ?*/
KEYBTDECL
(
0x27
,
0x5f
,
false
,
12
),
/* ^ `*/
KEYBT
(
0x5e
,
0x60
,
false
,
1
,
2
,
KEYCODE
(
0x5e
,
13
,
0
),
KEYCODE
(
0x60
,
13
,
1
)),
/* q Q*/
KEYBTDECL
(
0x71
,
0x51
,
true
,
16
),
/* w W*/
KEYBTDECL
(
0x77
,
0x57
,
true
,
17
),
/* e E*/
KEYBTDECLEX8
(
0x65
,
0x45
,
true
,
18
,
0x65
,
0x45
,
0xea
,
0xca
,
0xe8
,
0xc8
,
0xeb
,
0xcb
),
/* r R*/
KEYBTDECL
(
0x72
,
0x52
,
true
,
19
),
/* t T*/
KEYBTDECL
(
0x74
,
0x54
,
true
,
20
),
/* z Z*/
KEYBTDECL
(
0x7a
,
0x5a
,
true
,
21
),
/* u U*/
KEYBTDECLEX8
(
0x75
,
0x55
,
true
,
22
,
0x75
,
0x55
,
0xfb
,
0xdb
,
0xf9
,
0xd9
,
0xfc
,
0xdc
),
/* i I*/
KEYBTDECLEX8
(
0x69
,
0x49
,
true
,
23
,
0x69
,
0x49
,
0xee
,
0xce
,
0xec
,
0xcc
,
0xef
,
0xcf
),
/* o O*/
KEYBTDECLEX8
(
0x6f
,
0x4f
,
true
,
24
,
0x6f
,
0x4f
,
0xf4
,
0xd4
,
0xf2
,
0xd2
,
0xf6
,
0xd6
),
/* p P*/
KEYBTDECL
(
0x70
,
0x50
,
true
,
25
),
/* è ü*/
KEYBTDECL
(
0xe8
,
0xfa
,
false
,
26
),
/* ¨ !*/
KEYBT
(
0xa8
,
0x21
,
false
,
3
,
0
,
KEYCODE
(
0xa8
,
27
,
0
),
KEYCODE
(
0x21
,
27
,
1
)),
/* a A*/
KEYBTDECLEX8
(
0x61
,
0x41
,
true
,
30
,
0x61
,
0x41
,
0xe2
,
0xc2
,
0xe0
,
0xc0
,
0xe4
,
0xc4
),
/* s S*/
KEYBTDECL
(
0x73
,
0x53
,
true
,
31
),
/* d D*/
KEYBTDECL
(
0x64
,
0x44
,
true
,
32
),
/* f F*/
KEYBTDECL
(
0x66
,
0x46
,
true
,
33
),
/* g G*/
KEYBTDECL
(
0x67
,
0x47
,
true
,
34
),
/* h H*/
KEYBTDECL
(
0x68
,
0x48
,
true
,
35
),
/* j J*/
KEYBTDECL
(
0x6a
,
0x4a
,
true
,
36
),
/* k K*/
KEYBTDECL
(
0x6b
,
0x4b
,
true
,
37
),
/* l L*/
KEYBTDECL
(
0x6c
,
0x4c
,
true
,
38
),
/* é ö*/
KEYBTDECL
(
0xe9
,
0xf6
,
false
,
39
),
/* à ä*/
KEYBTDECL
(
0xe0
,
0xe4
,
false
,
40
),
/* $ £*/
KEYBTDECL
(
0x24
,
0xa3
,
false
,
43
),
/* < >*/
KEYBTDECL
(
0x3c
,
0x3e
,
false
,
44
),
/* y Y*/
KEYBTDECLEX8
(
0x79
,
0x59
,
true
,
45
,
0x79
,
0x59
,
0
,
0
,
0
,
0
,
0xff
,
0
),
/* x X*/
KEYBTDECL
(
0x78
,
0x58
,
true
,
46
),
/* c C*/
KEYBTDECL
(
0x63
,
0x43
,
true
,
47
),
/* v V*/
KEYBTDECL
(
0x76
,
0x56
,
true
,
48
),
/* b B*/
KEYBTDECL
(
0x62
,
0x42
,
true
,
49
),
/* n N*/
KEYBTDECL
(
0x6e
,
0x4e
,
true
,
50
),
/* m M*/
KEYBTDECL
(
0x6d
,
0x4d
,
true
,
51
),
/* , ;*/
KEYBTDECL
(
0x2c
,
0x3b
,
false
,
52
),
/* . :*/
KEYBTDECL
(
0x2e
,
0x3a
,
false
,
53
),
/* - _*/
KEYBTDECL
(
0x2d
,
0x5f
,
false
,
54
)};
void
UBPlatformUtils
::
initializeKeyboardLayouts
()
void
UBPlatformUtils
::
initializeKeyboardLayouts
()
{
{
nKeyboardLayouts
=
4
;
nKeyboardLayouts
=
5
;
keyboardLayouts
=
new
UBKeyboardLocale
*
[
nKeyboardLayouts
];
keyboardLayouts
=
new
UBKeyboardLocale
*
[
nKeyboardLayouts
];
keyboardLayouts
[
0
]
=
new
UBKeyboardLocale
(
"English"
,
"en"
,
""
,
new
QIcon
(
":/images/flags/en.png"
),
ENGLISH_LOCALE
);
keyboardLayouts
[
0
]
=
new
UBKeyboardLocale
(
"English"
,
"en"
,
""
,
new
QIcon
(
":/images/flags/en.png"
),
ENGLISH_LOCALE
);
keyboardLayouts
[
1
]
=
new
UBKeyboardLocale
(
"Russian"
,
"ru"
,
""
,
new
QIcon
(
":/images/flags/ru.png"
),
RUSSIAN_LOCALE
);
keyboardLayouts
[
1
]
=
new
UBKeyboardLocale
(
"Russian"
,
"ru"
,
""
,
new
QIcon
(
":/images/flags/ru.png"
),
RUSSIAN_LOCALE
);
keyboardLayouts
[
2
]
=
new
UBKeyboardLocale
(
"French"
,
"fr"
,
""
,
new
QIcon
(
":/images/flags/fr.png"
),
FRENCH_LOCALE
);
keyboardLayouts
[
2
]
=
new
UBKeyboardLocale
(
"German"
,
"de"
,
""
,
new
QIcon
(
":/images/flags/de.png"
),
GERMAN_LOCALE
);
keyboardLayouts
[
3
]
=
new
UBKeyboardLocale
(
"German"
,
"de"
,
""
,
new
QIcon
(
":/images/flags/de.png"
),
GERMAN_LOCALE
);
keyboardLayouts
[
3
]
=
new
UBKeyboardLocale
(
"French"
,
"fr"
,
""
,
new
QIcon
(
":/images/flags/fr.png"
),
FRENCH_LOCALE
);
keyboardLayouts
[
4
]
=
new
UBKeyboardLocale
(
"Swiss French"
,
"fr"
,
""
,
new
QIcon
(
":/images/flags/fr.png"
),
SWISS_FRENCH_LOCALE
);
}
}
void
UBPlatformUtils
::
destroyKeyboardLayouts
()
void
UBPlatformUtils
::
destroyKeyboardLayouts
()
{
{
for
(
int
i
=
0
;
i
<
4
;
i
++
)
for
(
int
i
=
0
;
i
<
nKeyboardLayouts
;
i
++
)
delete
keyboardLayouts
[
i
];
delete
keyboardLayouts
[
i
];
delete
[]
keyboardLayouts
;
delete
[]
keyboardLayouts
;
keyboardLayouts
=
NULL
;
keyboardLayouts
=
NULL
;
...
...
src/frameworks/UBPlatformUtils_mac.mm
View file @
e0ee3669
...
@@ -10,8 +10,12 @@
...
@@ -10,8 +10,12 @@
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Carbon/Carbon.h>
#import <Carbon/Carbon.h>
#import <APELite.h>
#import <APELite.h>
/*
// commented because Sankore crashes on Java Script. It seems to backends dependencies.
#import <WebKit/WebKit.h>
#import <WebKit/WebKit.h>
#import <AppKit/AppKit.h>
#import <AppKit/AppKit.h>
*/
NSString* bundleShortVersion(NSBundle *bundle)
NSString* bundleShortVersion(NSBundle *bundle)
...
@@ -409,14 +413,15 @@ KEYBT* createKeyBt(const UCKeyboardLayout* keyLayout, int vkk)
...
@@ -409,14 +413,15 @@ KEYBT* createKeyBt(const UCKeyboardLayout* keyLayout, int vkk)
UInt32 deadKeyState = 0L;
UInt32 deadKeyState = 0L;
UInt32 kbdType = kKeyboardISO;
UInt32 kbdType = kKeyboardISO;
UniCharCount cnt1, cnt2
;
UniCharCount cnt1, cnt2, cnt3
;
UniChar unicodeString1[100], unicodeString2
[100];
UniChar unicodeString1[100], unicodeString2[100], unicodeString3
[100];
UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, 0, kbdType, kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt1, unicodeString1);
UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, 0, kbdType, kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt1, unicodeString1);
UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (shiftKey >> 8) & 0xff, kbdType, kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString2);
UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (shiftKey >> 8) & 0xff, kbdType, kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString2);
UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (alphaLock >> 8) & 0xff, kbdType, kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString3);
return new KEYBT(unicodeString1[0], vkk, unicodeString2[0], vkk
);
return new KEYBT(unicodeString1[0], unicodeString2[0], unicodeString1[0] != unicodeString3[0], 0,0, KEYCODE(0, vkk, 0), KEYCODE(0, vkk, 1)
);
}
}
void UBPlatformUtils::initializeKeyboardLayouts()
void UBPlatformUtils::initializeKeyboardLayouts()
...
@@ -543,13 +548,14 @@ void UBPlatformUtils::destroyKeyboardLayouts()
...
@@ -543,13 +548,14 @@ void UBPlatformUtils::destroyKeyboardLayouts()
QString UBPlatformUtils::urlFromClipboard()
QString UBPlatformUtils::urlFromClipboard()
{
{
QString qsRet;
QString qsRet;
/*
// commented because Sankore crashes on Java Script. It seems to backends dependencies.
NSPasteboard* pPasteboard = [NSPasteboard pasteboardWithName:@"Apple CFPasteboard drag"];
NSPasteboard* pPasteboard = [NSPasteboard pasteboardWithName:@"Apple CFPasteboard drag"];
WebArchive* pArchive = [[WebArchive alloc] initWithData:[pPasteboard dataForType:@"com.apple.webarchive"]];
WebArchive* pArchive = [[WebArchive alloc] initWithData:[pPasteboard dataForType:@"com.apple.webarchive"]];
qsRet = [[[[pArchive mainResource] URL] absoluteString] UTF8String];
qsRet = [[[[pArchive mainResource] URL] absoluteString] UTF8String];
[pArchive release];
[pArchive release];
*/
return qsRet;
return qsRet;
}
}
src/frameworks/UBPlatformUtils_win.cpp
View file @
e0ee3669
...
@@ -128,270 +128,271 @@ void UBPlatformUtils::setWindowNonActivableFlag(QWidget* widget, bool nonAcivabl
...
@@ -128,270 +128,271 @@ void UBPlatformUtils::setWindowNonActivableFlag(QWidget* widget, bool nonAcivabl
SetWindowLong
(
widget
->
winId
(),
GWL_EXSTYLE
,
exStyle
);
SetWindowLong
(
widget
->
winId
(),
GWL_EXSTYLE
,
exStyle
);
}
}
#define KEYBTDECL(s1, s2, clSwitch) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(s1), KEYCODE(s2))
KEYBT
RUSSIAN_LOCALE
[]
=
const
KEYBT
RUSSIAN_LOCALE
[]
=
{
{
/* Ј і */
KEYBT
(
0x451
,
0x401
),
/* Ј і */
KEYBTDECL
(
0x451
,
0x401
,
true
),
/* 1 ! */
KEYBT
(
0x31
,
0x21
),
/* 1 ! */
KEYBTDECL
(
0x31
,
0x21
,
false
),
/* 2 " */
KEYBT
(
0x32
,
0x5c
),
/* 2 " */
KEYBTDECL
(
0x32
,
0x5c
,
false
),
/* 3 ? */
KEYBT
(
0x33
,
0x2116
),
/* 3 ? */
KEYBTDECL
(
0x33
,
0x2116
,
false
),
/* 4 ; */
KEYBT
(
0x34
,
0x3b
),
/* 4 ; */
KEYBTDECL
(
0x34
,
0x3b
,
false
),
/* 5 % */
KEYBT
(
0x35
,
0x25
),
/* 5 % */
KEYBTDECL
(
0x35
,
0x25
,
false
),
/* 6 : */
KEYBT
(
0x36
,
0x3a
),
/* 6 : */
KEYBTDECL
(
0x36
,
0x3a
,
false
),
/* 7 ? */
KEYBT
(
0x37
,
0x3f
),
/* 7 ? */
KEYBTDECL
(
0x37
,
0x3f
,
false
),
/* 8 * */
KEYBT
(
0x38
,
0x2a
),
/* 8 * */
KEYBTDECL
(
0x38
,
0x2a
,
false
),
/* 9 ( */
KEYBT
(
0x39
,
0x28
),
/* 9 ( */
KEYBTDECL
(
0x39
,
0x28
,
false
),
/* 0 ) */
KEYBT
(
0x30
,
0x29
),
/* 0 ) */
KEYBTDECL
(
0x30
,
0x29
,
false
),
/* - _ */
KEYBT
(
0x2d
,
0x4f
),
/* - _ */
KEYBTDECL
(
0x2d
,
0x4f
,
false
),
/* = + */
KEYBT
(
0x3d
,
0x2b
),
/* = + */
KEYBTDECL
(
0x3d
,
0x2b
,
false
),
/* К к */
KEYBT
(
0x439
,
0x419
),
/* К к */
KEYBTDECL
(
0x439
,
0x419
,
true
),
/* Г г */
KEYBT
(
0x446
,
0x426
),
/* Г г */
KEYBTDECL
(
0x446
,
0x426
,
true
),
/* Х х */
KEYBT
(
0x443
,
0x423
),
/* Х х */
KEYBTDECL
(
0x443
,
0x423
,
true
),
/* Л л */
KEYBT
(
0x43a
,
0x41a
),
/* Л л */
KEYBTDECL
(
0x43a
,
0x41a
,
true
),
/* Е е */
KEYBT
(
0x435
,
0x415
),
/* Е е */
KEYBTDECL
(
0x435
,
0x415
,
true
),
/* О о */
KEYBT
(
0x43d
,
0x41d
),
/* О о */
KEYBTDECL
(
0x43d
,
0x41d
,
true
),
/* З з */
KEYBT
(
0x433
,
0x413
),
/* З з */
KEYBTDECL
(
0x433
,
0x413
,
true
),
/* Ы ы */
KEYBT
(
0x448
,
0x428
),
/* Ы ы */
KEYBTDECL
(
0x448
,
0x428
,
true
),
/* Э э */
KEYBT
(
0x449
,
0x429
),
/* Э э */
KEYBTDECL
(
0x449
,
0x429
,
true
),
/* Ъ ъ */
KEYBT
(
0x437
,
0x417
),
/* Ъ ъ */
KEYBTDECL
(
0x437
,
0x417
,
true
),
/* И и */
KEYBT
(
0x445
,
0x425
),
/* И и */
KEYBTDECL
(
0x445
,
0x425
,
true
),
/* Я я */
KEYBT
(
0x44a
,
0x42a
),
/* Я я */
KEYBTDECL
(
0x44a
,
0x42a
,
true
),
/* Ж ж */
KEYBT
(
0x444
,
0x424
),
/* Ж ж */
KEYBTDECL
(
0x444
,
0x424
,
true
),
/* Щ щ */
KEYBT
(
0x44b
,
0x42b
),
/* Щ щ */
KEYBTDECL
(
0x44b
,
0x42b
,
true
),
/* Ч ч */
KEYBT
(
0x432
,
0x412
),
/* Ч ч */
KEYBTDECL
(
0x432
,
0x412
,
true
),
/* Б б */
KEYBT
(
0x430
,
0x410
),
/* Б б */
KEYBTDECL
(
0x430
,
0x410
,
true
),
/* Р р */
KEYBT
(
0x43f
,
0x41f
),
/* Р р */
KEYBTDECL
(
0x43f
,
0x41f
,
true
),
/* Т т */
KEYBT
(
0x440
,
0x420
),
/* Т т */
KEYBTDECL
(
0x440
,
0x420
,
true
),
/* П п */
KEYBT
(
0x43e
,
0x41e
),
/* П п */
KEYBTDECL
(
0x43e
,
0x41e
,
true
),
/* М м */
KEYBT
(
0x43b
,
0x41b
),
/* М м */
KEYBTDECL
(
0x43b
,
0x41b
,
true
),
/* Д д */
KEYBT
(
0x434
,
0x414
),
/* Д д */
KEYBTDECL
(
0x434
,
0x414
,
true
),
/* Ц ц */
KEYBT
(
0x436
,
0x416
),
/* Ц ц */
KEYBTDECL
(
0x436
,
0x416
,
true
),
/* Ь ь */
KEYBT
(
0x44d
,
0x42d
),
/* Ь ь */
KEYBTDECL
(
0x44d
,
0x42d
,
true
),
/* \ / */
KEYBT
(
0x5c
,
0x2f
),
/* \ / */
KEYBTDECL
(
0x5c
,
0x2f
,
false
),
/* С с */
KEYBT
(
0x44f
,
0x42f
),
/* С с */
KEYBTDECL
(
0x44f
,
0x42f
,
true
),
/* Ю ю */
KEYBT
(
0x447
,
0x427
),
/* Ю ю */
KEYBTDECL
(
0x447
,
0x427
,
true
),
/* У у */
KEYBT
(
0x441
,
0x421
),
/* У у */
KEYBTDECL
(
0x441
,
0x421
,
true
),
/* Н н */
KEYBT
(
0x43c
,
0x41c
),
/* Н н */
KEYBTDECL
(
0x43c
,
0x41c
,
true
),
/* Й й */
KEYBT
(
0x438
,
0x418
),
/* Й й */
KEYBTDECL
(
0x438
,
0x418
,
true
),
/* Ф ф */
KEYBT
(
0x442
,
0x422
),
/* Ф ф */
KEYBTDECL
(
0x442
,
0x422
,
true
),
/* Ш ш */
KEYBT
(
0x44c
,
0x42c
),
/* Ш ш */
KEYBTDECL
(
0x44c
,
0x42c
,
true
),
/* В в */
KEYBT
(
0x431
,
0x411
),
/* В в */
KEYBTDECL
(
0x431
,
0x411
,
true
),
/* А а */
KEYBT
(
0x44e
,
0x42e
),
/* А а */
KEYBTDECL
(
0x44e
,
0x42e
,
true
),
/* . , */
KEYBT
(
0x2e
,
0x2c
)};
/* . , */
KEYBTDECL
(
0x2e
,
0x2c
,
false
)};
const
KEYBT
ENGLISH_LOCALE
[]
=
{
KEYBT
ENGLISH_LOCALE
[]
=
{
/* ` ~ */
KEYBT
(
0x60
,
0x7e
),
/* ` ~ */
KEYBTDECL
(
0x60
,
0x7e
,
false
),
/* 1 ! */
KEYBT
(
0x31
,
0x21
),
/* 1 ! */
KEYBTDECL
(
0x31
,
0x21
,
false
),
/* 2 @ */
KEYBT
(
0x32
,
0x40
),
/* 2 @ */
KEYBTDECL
(
0x32
,
0x40
,
false
),
/* 3 # */
KEYBT
(
0x33
,
0x23
),
/* 3 # */
KEYBTDECL
(
0x33
,
0x23
,
false
),
/* 4 $ */
KEYBT
(
0x34
,
0x24
),
/* 4 $ */
KEYBTDECL
(
0x34
,
0x24
,
false
),
/* 5 % */
KEYBT
(
0x35
,
0x25
),
/* 5 % */
KEYBTDECL
(
0x35
,
0x25
,
false
),
/* 6 ^ */
KEYBT
(
0x36
,
0x5e
),
/* 6 ^ */
KEYBTDECL
(
0x36
,
0x5e
,
false
),
/* 7 & */
KEYBT
(
0x37
,
0x26
),
/* 7 & */
KEYBTDECL
(
0x37
,
0x26
,
false
),
/* 8 * */
KEYBT
(
0x38
,
0x2a
),
/* 8 * */
KEYBTDECL
(
0x38
,
0x2a
,
false
),
/* 9 ( */
KEYBT
(
0x39
,
0x28
),
/* 9 ( */
KEYBTDECL
(
0x39
,
0x28
,
false
),
/* 0 ) */
KEYBT
(
0x30
,
0x29
),
/* 0 ) */
KEYBTDECL
(
0x30
,
0x29
,
false
),
/* - _ */
KEYBT
(
0x2d
,
0x5f
),
/* - _ */
KEYBTDECL
(
0x2d
,
0x5f
,
false
),
/* = + */
KEYBT
(
0x3d
,
0x2b
),
/* = + */
KEYBTDECL
(
0x3d
,
0x2b
,
false
),
/* q Q */
KEYBT
(
0x71
,
0x51
),
/* q Q */
KEYBTDECL
(
0x71
,
0x51
,
true
),
/* w W */
KEYBT
(
0x77
,
0x57
),
/* w W */
KEYBTDECL
(
0x77
,
0x57
,
true
),
/* e E */
KEYBT
(
0x65
,
0x45
),
/* e E */
KEYBTDECL
(
0x65
,
0x45
,
true
),
/* r R */
KEYBT
(
0x72
,
0x52
),
/* r R */
KEYBTDECL
(
0x72
,
0x52
,
true
),
/* t T */
KEYBT
(
0x74
,
0x54
),
/* t T */
KEYBTDECL
(
0x74
,
0x54
,
true
),
/* y Y */
KEYBT
(
0x79
,
0x59
),
/* y Y */
KEYBTDECL
(
0x79
,
0x59
,
true
),
/* u U */
KEYBT
(
0x75
,
0x55
),
/* u U */
KEYBTDECL
(
0x75
,
0x55
,
true
),
/* i I */
KEYBT
(
0x69
,
0x49
),
/* i I */
KEYBTDECL
(
0x69
,
0x49
,
true
),
/* o O */
KEYBT
(
0x6f
,
0x4f
),
/* o O */
KEYBTDECL
(
0x6f
,
0x4f
,
true
),
/* p P */
KEYBT
(
0x70
,
0x50
),
/* p P */
KEYBTDECL
(
0x70
,
0x50
,
true
),
/* [ { */
KEYBT
(
0x5b
,
0x7b
),
/* [ { */
KEYBTDECL
(
0x5b
,
0x7b
,
false
),
/* ] } */
KEYBT
(
0x5d
,
0x7d
),
/* ] } */
KEYBTDECL
(
0x5d
,
0x7d
,
false
),
/* a A */
KEYBT
(
0x61
,
0x41
),
/* a A */
KEYBTDECL
(
0x61
,
0x41
,
true
),
/* s S */
KEYBT
(
0x73
,
0x53
),
/* s S */
KEYBTDECL
(
0x73
,
0x53
,
true
),
/* d D */
KEYBT
(
0x64
,
0x44
),
/* d D */
KEYBTDECL
(
0x64
,
0x44
,
true
),
/* f F */
KEYBT
(
0x66
,
0x46
),
/* f F */
KEYBTDECL
(
0x66
,
0x46
,
true
),
/* g G */
KEYBT
(
0x67
,
0x47
),
/* g G */
KEYBTDECL
(
0x67
,
0x47
,
true
),
/* h H */
KEYBT
(
0x68
,
0x48
),
/* h H */
KEYBTDECL
(
0x68
,
0x48
,
true
),
/* j J */
KEYBT
(
0x6a
,
0x4a
),
/* j J */
KEYBTDECL
(
0x6a
,
0x4a
,
true
),
/* k K */
KEYBT
(
0x6b
,
0x4b
),
/* k K */
KEYBTDECL
(
0x6b
,
0x4b
,
true
),
/* l L */
KEYBT
(
0x6c
,
0x4c
),
/* l L */
KEYBTDECL
(
0x6c
,
0x4c
,
true
),
/* ; : */
KEYBT
(
0x3b
,
0x3a
),
/* ; : */
KEYBTDECL
(
0x3b
,
0x3a
,
false
),
/* ' " */
KEYBT
(
0x27
,
0x22
),
/* ' " */
KEYBTDECL
(
0x27
,
0x22
,
false
),
/* \ | */
KEYBT
(
0x5c
,
0x7c
),
/* \ | */
KEYBTDECL
(
0x5c
,
0x7c
,
false
),
/* z Z */
KEYBT
(
0x7a
,
0x5a
),
/* z Z */
KEYBTDECL
(
0x7a
,
0x5a
,
true
),
/* x X */
KEYBT
(
0x78
,
0x58
),
/* x X */
KEYBTDECL
(
0x78
,
0x58
,
true
),
/* c C */
KEYBT
(
0x63
,
0x43
),
/* c C */
KEYBTDECL
(
0x63
,
0x43
,
true
),
/* v V */
KEYBT
(
0x76
,
0x56
),
/* v V */
KEYBTDECL
(
0x76
,
0x56
,
true
),
/* b B */
KEYBT
(
0x62
,
0x42
),
/* b B */
KEYBTDECL
(
0x62
,
0x42
,
true
),
/* n N */
KEYBT
(
0x6e
,
0x4e
),
/* n N */
KEYBTDECL
(
0x6e
,
0x4e
,
true
),
/* m M */
KEYBT
(
0x6d
,
0x4d
),
/* m M */
KEYBTDECL
(
0x6d
,
0x4d
,
true
),
/* , < */
KEYBT
(
0x2c
,
0x3c
),
/* , < */
KEYBTDECL
(
0x2c
,
0x3c
,
false
),
/* . > */
KEYBT
(
0x2e
,
0x3e
),
/* . > */
KEYBTDECL
(
0x2e
,
0x3e
,
false
),
/* / ? */
KEYBT
(
0x2f
,
0x5f
)};
/* / ? */
KEYBTDECL
(
0x2f
,
0x5f
,
false
)};
const
KEYBT
FRENCH_LOCALE
[]
=
{
KEYBT
FRENCH_LOCALE
[]
=
{
/* ? ? */
KEYBT
(
0xb2
,
0xb2
),
/* ? ? */
KEYBTDECL
(
0xb2
,
0xb2
,
true
),
/* & 1 */
KEYBT
(
0x26
,
0x31
),
/* & 1 */
KEYBTDECL
(
0x26
,
0x31
,
true
),
/* ? 2 */
KEYBT
(
0xe9
,
0x32
),
/* ? 2 */
KEYBTDECL
(
0xe9
,
0x32
,
true
),
/* " 3 */
KEYBT
(
0x22
,
0x33
),
/* " 3 */
KEYBTDECL
(
0x22
,
0x33
,
true
),
/* ' 4 */
KEYBT
(
0x27
,
0x34
),
/* ' 4 */
KEYBTDECL
(
0x27
,
0x34
,
true
),
/* ( 5 */
KEYBT
(
0x28
,
0x35
),
/* ( 5 */
KEYBTDECL
(
0x28
,
0x35
,
true
),
/* - 6 */
KEYBT
(
0x2d
,
0x36
),
/* - 6 */
KEYBTDECL
(
0x2d
,
0x36
,
true
),
/* ? 7 */
KEYBT
(
0xe8
,
0x37
),
/* ? 7 */
KEYBTDECL
(
0xe8
,
0x37
,
true
),
/* _ 8 */
KEYBT
(
0x5f
,
0x38
),
/* _ 8 */
KEYBTDECL
(
0x5f
,
0x38
,
true
),
/* ? 9 */
KEYBT
(
0xe7
,
0x39
),
/* ? 9 */
KEYBTDECL
(
0xe7
,
0x39
,
true
),
/* ? 0 */
KEYBT
(
0xe0
,
0x29
),
/* ? 0 */
KEYBTDECL
(
0xe0
,
0x29
,
true
),
/* ) ? */
KEYBT
(
0x29
,
0xb0
),
/* ) ? */
KEYBTDECL
(
0x29
,
0xb0
,
true
),
/* = + */
KEYBT
(
0x3d
,
0x2b
),
/* = + */
KEYBTDECL
(
0x3d
,
0x2b
,
true
),
/* a A */
KEYBT
(
0x61
,
0x41
),
/* a A */
KEYBT
(
0x61
,
0x41
,
true
,
0
,
0
,
0x61
,
0x41
,
0xe0
,
0xc0
,
0xe4
,
0xc4
),
/* z Z */
KEYBT
(
0x7a
,
0x5a
),
/* z Z */
KEYBTDECL
(
0x7a
,
0x5a
,
true
),
/* e E */
KEYBT
(
0x65
,
0x45
),
/* e E */
KEYBT
(
0x65
,
0x45
,
true
,
0
,
0
,
0x65
,
0x45
,
0xe8
,
0xc8
,
0xeb
,
0xcb
),
/* r R */
KEYBT
(
0x72
,
0x52
),
/* r R */
KEYBTDECL
(
0x72
,
0x52
,
true
),
/* t T */
KEYBT
(
0x74
,
0x54
),
/* t T */
KEYBTDECL
(
0x74
,
0x54
,
true
),
/* y Y */
KEYBT
(
0x79
,
0x59
),
/* y Y */
KEYBT
(
0x79
,
0x59
,
true
,
0
,
0
,
0x79
,
0x59
,
0
,
0
,
0xff
),
/* u U */
KEYBT
(
0x75
,
0x55
),
/* u U */
KEYBT
(
0x75
,
0x55
,
true
,
0
,
0
,
0x75
,
0x55
,
0xf9
,
0xd9
,
0xfc
,
0xdc
),
/* i I */
KEYBT
(
0x69
,
0x49
),
/* i I */
KEYBT
(
0x69
,
0x49
,
true
,
0
,
0
,
0x69
,
0x49
,
0xec
,
0xcc
,
0xef
,
0xcf
),
/* o O */
KEYBT
(
0x6f
,
0x4f
),
/* o O */
KEYBT
(
0x6f
,
0x4f
,
true
,
0
,
0
,
0x6f
,
0x4f
,
0xf2
,
0xd2
,
0xf6
,
0xd6
),
/* p P */
KEYBT
(
0x70
,
0x50
),
/* p P */
KEYBTDECL
(
0x70
,
0x50
,
true
),
/* ^ ? */
KEYBT
(
0x5e
,
0xa8
),
/* ^ ? */
KEYBT
(
0x5e
,
0xa8
,
true
,
1
,
2
,
0x5e
,
0xa8
),
/* $ ? } */
KEYBT
(
0x24
,
0xa3
),
/* $ ? } */
KEYBTDECL
(
0x24
,
0xa3
,
true
),
/* q Q */
KEYBT
(
0x71
,
0x51
),
/* q Q */
KEYBTDECL
(
0x71
,
0x51
,
true
),
/* s S */
KEYBT
(
0x73
,
0x53
),
/* s S */
KEYBTDECL
(
0x73
,
0x53
,
true
),
/* d D */
KEYBT
(
0x64
,
0x44
),
/* d D */
KEYBTDECL
(
0x64
,
0x44
,
true
),
/* f F */
KEYBT
(
0x66
,
0x46
),
/* f F */
KEYBTDECL
(
0x66
,
0x46
,
true
),
/* g G */
KEYBT
(
0x67
,
0x47
),
/* g G */
KEYBTDECL
(
0x67
,
0x47
,
true
),
/* h H */
KEYBT
(
0x68
,
0x48
),
/* h H */
KEYBTDECL
(
0x68
,
0x48
,
true
),
/* j J */
KEYBT
(
0x6a
,
0x4a
),
/* j J */
KEYBTDECL
(
0x6a
,
0x4a
,
true
),
/* k K */
KEYBT
(
0x6b
,
0x4b
),
/* k K */
KEYBTDECL
(
0x6b
,
0x4b
,
true
),
/* l L */
KEYBT
(
0x6c
,
0x4c
),
/* l L */
KEYBTDECL
(
0x6c
,
0x4c
,
true
),
/* m M */
KEYBT
(
0x6d
,
0x4d
),
/* m M */
KEYBTDECL
(
0x6d
,
0x4d
,
true
),
/* ? % */
KEYBT
(
0xf9
,
0x25
),
/* ? % */
KEYBTDECL
(
0xf9
,
0x25
,
true
),
/* * ? */
KEYBT
(
0x2a
,
0xb5
),
/* * ? */
KEYBTDECL
(
0x2a
,
0xb5
,
true
),
/* w W */
KEYBT
(
0x77
,
0x57
),
/* w W */
KEYBTDECL
(
0x77
,
0x57
,
true
),
/* x X */
KEYBT
(
0x78
,
0x58
),
/* x X */
KEYBTDECL
(
0x78
,
0x58
,
true
),
/* c C */
KEYBT
(
0x63
,
0x43
),
/* c C */
KEYBTDECL
(
0x63
,
0x43
,
true
),
/* v V */
KEYBT
(
0x76
,
0x56
),
/* v V */
KEYBTDECL
(
0x76
,
0x56
,
true
),
/* b B */
KEYBT
(
0x62
,
0x42
),
/* b B */
KEYBTDECL
(
0x62
,
0x42
,
true
),
/* n N */
KEYBT
(
0x6e
,
0x4e
),
/* n N */
KEYBTDECL
(
0x6e
,
0x4e
,
true
),
/* , ? */
KEYBT
(
0x2c
,
0x3f
),
/* , ? */
KEYBTDECL
(
0x2c
,
0x3f
,
true
),
/* ; . */
KEYBT
(
0x3b
,
0x2e
),
/* ; . */
KEYBTDECL
(
0x3b
,
0x2e
,
true
),
/* : / */
KEYBT
(
0x3a
,
0x2f
),
/* : / */
KEYBTDECL
(
0x3a
,
0x2f
,
true
),
/* ! ? */
KEYBT
(
0x21
,
0xa7
)};
/* ! ? */
KEYBTDECL
(
0x21
,
0xa7
,
true
)};
const
KEYBT
SWISS_FRENCH_LOCALE
[]
=
{
KEYBT
SWISS_FRENCH_LOCALE
[]
=
{
/* § °*/
KEYBT
(
0xa7
,
0xb0
),
/* § °*/
KEYBTDECL
(
0xa7
,
0xb0
,
false
),
/* 1 +*/
KEYBT
(
0x31
,
0x2b
),
/* 1 +*/
KEYBTDECL
(
0x31
,
0x2b
,
false
),
/* 2 "*/
KEYBT
(
0x32
,
0x22
),
/* 2 "*/
KEYBTDECL
(
0x32
,
0x22
,
false
),
/* 3 **/
KEYBT
(
0x33
,
0x2a
),
/* 3 **/
KEYBTDECL
(
0x33
,
0x2a
,
false
),
/* 4 ç*/
KEYBT
(
0x34
,
0xe7
),
/* 4 ç*/
KEYBTDECL
(
0x34
,
0xe7
,
false
),
/* 5 %*/
KEYBT
(
0x35
,
0x25
),
/* 5 %*/
KEYBTDECL
(
0x35
,
0x25
,
false
),
/* 6 &*/
KEYBT
(
0x36
,
0x26
),
/* 6 &*/
KEYBTDECL
(
0x36
,
0x26
,
false
),
/* 7 /*/
KEYBT
(
0x37
,
0x2f
),
/* 7 /*/
KEYBTDECL
(
0x37
,
0x2f
,
false
),
/* 8 (*/
KEYBT
(
0x38
,
0x28
),
/* 8 (*/
KEYBTDECL
(
0x38
,
0x28
,
false
),
/* 9 )*/
KEYBT
(
0x39
,
0x29
),
/* 9 )*/
KEYBTDECL
(
0x39
,
0x29
,
false
),
/* 0 =*/
KEYBT
(
0x30
,
0x3d
),
/* 0 =*/
KEYBTDECL
(
0x30
,
0x3d
,
false
),
/* ' ?*/
KEYBT
(
0x27
,
0x5f
),
/* ' ?*/
KEYBTDECL
(
0x27
,
0x5f
,
false
),
/* ^ `*/
KEYBT
(
0x5e
,
0x60
),
/* ^ `*/
KEYBT
(
0x5e
,
0x60
,
false
,
1
,
2
,
0x5e
,
0x60
),
/* q Q*/
KEYBT
(
0x71
,
0x51
),
/* q Q*/
KEYBTDECL
(
0x71
,
0x51
,
true
),
/* w W*/
KEYBT
(
0x77
,
0x57
),
/* w W*/
KEYBTDECL
(
0x77
,
0x57
,
true
),
/* e E*/
KEYBT
(
0x65
,
0x45
),
/* e E*/
KEYBT
(
0x65
,
0x45
,
true
,
0
,
0
,
0x65
,
0x45
,
0xea
,
0xca
,
0xe8
,
0xc8
,
0xeb
,
0xcb
),
/* r R*/
KEYBT
(
0x72
,
0x52
),
/* r R*/
KEYBTDECL
(
0x72
,
0x52
,
true
),
/* t T*/
KEYBT
(
0x74
,
0x54
),
/* t T*/
KEYBTDECL
(
0x74
,
0x54
,
true
),
/* z Z*/
KEYBT
(
0x7a
,
0x5a
),
/* z Z*/
KEYBTDECL
(
0x7a
,
0x5a
,
true
),
/* u U*/
KEYBT
(
0x75
,
0x55
),
/* u U*/
KEYBT
(
0x75
,
0x55
,
true
,
0
,
0
,
0x75
,
0x55
,
0xfb
,
0xdb
,
0xf9
,
0xd9
,
0xfc
,
0xdc
),
/* i I*/
KEYBT
(
0x69
,
0x49
),
/* i I*/
KEYBT
(
0x69
,
0x49
,
true
,
0
,
0
,
0x69
,
0x49
,
0xee
,
0xce
,
0xec
,
0xcc
,
0xef
,
0xcf
),
/* o O*/
KEYBT
(
0x6f
,
0x4f
),
/* o O*/
KEYBT
(
0x6f
,
0x4f
,
true
,
0
,
0
,
0x6f
,
0x4f
,
0xf4
,
0xd4
,
0xf2
,
0xd2
,
0xf6
,
0xd6
),
/* p P*/
KEYBT
(
0x70
,
0x50
),
/* p P*/
KEYBTDECL
(
0x70
,
0x50
,
true
),
/* è ü*/
KEYBT
(
0xe8
,
0xfa
),
/* è ü*/
KEYBTDECL
(
0xe8
,
0xfa
,
false
),
/* ¨ !*/
KEYBT
(
0xa8
,
0x21
),
/* ¨ !*/
KEYBT
(
0xa8
,
0x21
,
false
,
3
,
0
,
0xa8
,
0x21
),
/* a A*/
KEYBT
(
0x61
,
0x41
),
/* a A*/
KEYBT
(
0x61
,
0x41
,
true
,
0
,
0
,
0x61
,
0x41
,
0xe2
,
0xc2
,
0xe0
,
0xc0
,
0xe4
,
0xc4
),
/* s S*/
KEYBT
(
0x73
,
0x53
),
/* s S*/
KEYBTDECL
(
0x73
,
0x53
,
true
),
/* d D*/
KEYBT
(
0x64
,
0x44
),
/* d D*/
KEYBTDECL
(
0x64
,
0x44
,
true
),
/* f F*/
KEYBT
(
0x66
,
0x46
),
/* f F*/
KEYBTDECL
(
0x66
,
0x46
,
true
),
/* g G*/
KEYBT
(
0x67
,
0x47
),
/* g G*/
KEYBTDECL
(
0x67
,
0x47
,
true
),
/* h H*/
KEYBT
(
0x68
,
0x48
),
/* h H*/
KEYBTDECL
(
0x68
,
0x48
,
true
),
/* j J*/
KEYBT
(
0x6a
,
0x4a
),
/* j J*/
KEYBTDECL
(
0x6a
,
0x4a
,
true
),
/* k K*/
KEYBT
(
0x6b
,
0x4b
),
/* k K*/
KEYBTDECL
(
0x6b
,
0x4b
,
true
),
/* l L*/
KEYBT
(
0x6c
,
0x4c
),
/* l L*/
KEYBTDECL
(
0x6c
,
0x4c
,
true
),
/* é ö*/
KEYBT
(
0xe9
,
0xf6
),
/* é ö*/
KEYBTDECL
(
0xe9
,
0xf6
,
false
),
/* à ä*/
KEYBT
(
0xe0
,
0xe4
),
/* à ä*/
KEYBTDECL
(
0xe0
,
0xe4
,
false
),
/* $ £*/
KEYBT
(
0x24
,
0xa3
),
/* $ £*/
KEYBTDECL
(
0x24
,
0xa3
,
false
),
/* < >*/
KEYBT
(
0x3c
,
0x3e
),
/* < >*/
KEYBTDECL
(
0x3c
,
0x3e
,
false
),
/* y Y*/
KEYBT
(
0x79
,
0x59
),
/* y Y*/
KEYBT
(
0x79
,
0x59
,
true
,
0
,
0
,
0x79
,
0x59
,
0
,
0
,
0
,
0
,
0xff
),
/* x X*/
KEYBT
(
0x78
,
0x58
),
/* x X*/
KEYBTDECL
(
0x78
,
0x58
,
true
),
/* c C*/
KEYBT
(
0x63
,
0x43
),
/* c C*/
KEYBTDECL
(
0x63
,
0x43
,
true
),
/* v V*/
KEYBT
(
0x76
,
0x56
),
/* v V*/
KEYBTDECL
(
0x76
,
0x56
,
true
),
/* b B*/
KEYBT
(
0x62
,
0x42
),
/* b B*/
KEYBTDECL
(
0x62
,
0x42
,
true
),
/* n N*/
KEYBT
(
0x6e
,
0x4e
),
/* n N*/
KEYBTDECL
(
0x6e
,
0x4e
,
true
),
/* m M*/
KEYBT
(
0x6d
,
0x4d
),
/* m M*/
KEYBTDECL
(
0x6d
,
0x4d
,
true
),
/* , ;*/
KEYBT
(
0x2c
,
0x3b
),
/* , ;*/
KEYBTDECL
(
0x2c
,
0x3b
,
false
),
/* . :*/
KEYBT
(
0x2e
,
0x3a
),
/* . :*/
KEYBTDECL
(
0x2e
,
0x3a
,
false
),
/* - _*/
KEYBT
(
0x2d
,
0x5f
)};
/* - _*/
KEYBTDECL
(
0x2d
,
0x5f
,
false
)};
const
KEYBT
GERMAN_LOCALE
[]
=
{
/* ^ ? */
KEYBT
(
0x5f
,
0xb0
),
KEYBT
GERMAN_LOCALE
[]
=
{
/* 1 ! */
KEYBT
(
0x31
,
0x21
),
/* ^ ? */
KEYBTDECL
(
0x5f
,
0xb0
,
false
),
/* 2 " */
KEYBT
(
0x32
,
0x22
),
/* 1 ! */
KEYBTDECL
(
0x31
,
0x21
,
true
),
/* 3 § */
KEYBT
(
0x33
,
0xa7
),
/* 2 " */
KEYBTDECL
(
0x32
,
0x22
,
true
),
/* 4 $ */
KEYBT
(
0x34
,
0x24
),
/* 3 § */
KEYBTDECL
(
0x33
,
0xa7
,
true
),
/* 5 % */
KEYBT
(
0x35
,
0x25
),
/* 4 $ */
KEYBTDECL
(
0x34
,
0x24
,
true
),
/* 6 & */
KEYBT
(
0x36
,
0x26
),
/* 5 % */
KEYBTDECL
(
0x35
,
0x25
,
true
),
/* 7 / */
KEYBT
(
0x37
,
0x2f
),
/* 6 & */
KEYBTDECL
(
0x36
,
0x26
,
true
),
/* 8 ( */
KEYBT
(
0x38
,
0x28
),
/* 7 / */
KEYBTDECL
(
0x37
,
0x2f
,
true
),
/* 9 ) */
KEYBT
(
0x39
,
0x29
),
/* 8 ( */
KEYBTDECL
(
0x38
,
0x28
,
true
),
/* 0 = */
KEYBT
(
0x30
,
0x3d
),
/* 9 ) */
KEYBTDECL
(
0x39
,
0x29
,
true
),
/* ? ? */
KEYBT
(
0xdf
,
0x3f
),
/* 0 = */
KEYBTDECL
(
0x30
,
0x3d
,
true
),
/* ` ? */
KEYBT
(
0x60
,
0xb4
),
/* ? ? */
KEYBTDECL
(
0xdf
,
0x3f
,
true
),
/* ` ? */
KEYBTDECL
(
0x60
,
0xb4
,
false
),
/* q Q */
KEYBT
(
0x71
,
0x51
),
/* w W */
KEYBT
(
0x77
,
0x57
),
/* q Q */
KEYBTDECL
(
0x71
,
0x51
,
true
),
/* e E */
KEYBT
(
0x65
,
0x45
),
/* w W */
KEYBTDECL
(
0x77
,
0x57
,
true
),
/* r R */
KEYBT
(
0x72
,
0x52
),
/* e E */
KEYBTDECL
(
0x65
,
0x45
,
true
),
/* t T */
KEYBT
(
0x74
,
0x54
),
/* r R */
KEYBTDECL
(
0x72
,
0x52
,
true
),
/* z Z */
KEYBT
(
0x7a
,
0x5a
),
/* t T */
KEYBTDECL
(
0x74
,
0x54
,
true
),
/* u U */
KEYBT
(
0x75
,
0x55
),
/* z Z */
KEYBTDECL
(
0x7a
,
0x5a
,
true
),
/* i I */
KEYBT
(
0x69
,
0x49
),
/* u U */
KEYBTDECL
(
0x75
,
0x55
,
true
),
/* o O */
KEYBT
(
0x6f
,
0x4f
),
/* i I */
KEYBTDECL
(
0x69
,
0x49
,
true
),
/* p P */
KEYBT
(
0x70
,
0x50
),
/* o O */
KEYBTDECL
(
0x6f
,
0x4f
,
true
),
/* ? ? */
KEYBT
(
0xfc
,
0xdc
),
/* p P */
KEYBTDECL
(
0x70
,
0x50
,
true
),
/* + * */
KEYBT
(
0x2b
,
0x2a
),
/* ? ? */
KEYBTDECL
(
0xfc
,
0xdc
,
true
),
/* + * */
KEYBTDECL
(
0x2b
,
0x2a
,
true
),
/* a A */
KEYBT
(
0x61
,
0x41
),
/* s S */
KEYBT
(
0x73
,
0x53
),
/* a A */
KEYBTDECL
(
0x61
,
0x41
,
true
),
/* d D */
KEYBT
(
0x64
,
0x44
),
/* s S */
KEYBTDECL
(
0x73
,
0x53
,
true
),
/* f F */
KEYBT
(
0x66
,
0x46
),
/* d D */
KEYBTDECL
(
0x64
,
0x44
,
true
),
/* g G */
KEYBT
(
0x67
,
0x47
),
/* f F */
KEYBTDECL
(
0x66
,
0x46
,
true
),
/* h H */
KEYBT
(
0x68
,
0x48
),
/* g G */
KEYBTDECL
(
0x67
,
0x47
,
true
),
/* j J */
KEYBT
(
0x6a
,
0x4a
),
/* h H */
KEYBTDECL
(
0x68
,
0x48
,
true
),
/* k K */
KEYBT
(
0x6b
,
0x4b
),
/* j J */
KEYBTDECL
(
0x6a
,
0x4a
,
true
),
/* l L */
KEYBT
(
0x6c
,
0x4c
),
/* k K */
KEYBTDECL
(
0x6b
,
0x4b
,
true
),
/* ? ? */
KEYBT
(
0xf6
,
0xd6
),
/* l L */
KEYBTDECL
(
0x6c
,
0x4c
,
true
),
/* ? ? */
KEYBT
(
0xe4
,
0xc4
),
/* ? ? */
KEYBTDECL
(
0xf6
,
0xd6
,
true
),
/* ' # */
KEYBT
(
0x27
,
0x23
),
/* ? ? */
KEYBTDECL
(
0xe4
,
0xc4
,
true
),
/* ' # */
KEYBTDECL
(
0x27
,
0x23
,
true
),
/* y Y */
KEYBT
(
0x79
,
0x59
),
/* x X */
KEYBT
(
0x78
,
0x58
),
/* y Y */
KEYBTDECL
(
0x79
,
0x59
,
true
),
/* c C */
KEYBT
(
0x63
,
0x43
),
/* x X */
KEYBTDECL
(
0x78
,
0x58
,
true
),
/* v V */
KEYBT
(
0x76
,
0x56
),
/* c C */
KEYBTDECL
(
0x63
,
0x43
,
true
),
/* b B */
KEYBT
(
0x62
,
0x42
),
/* v V */
KEYBTDECL
(
0x76
,
0x56
,
true
),
/* n N */
KEYBT
(
0x6e
,
0x4e
),
/* b B */
KEYBTDECL
(
0x62
,
0x42
,
true
),
/* m M */
KEYBT
(
0x6d
,
0x4d
),
/* n N */
KEYBTDECL
(
0x6e
,
0x4e
,
true
),
/* , ; */
KEYBT
(
0x2c
,
0x3b
),
/* m M */
KEYBTDECL
(
0x6d
,
0x4d
,
true
),
/* . : */
KEYBT
(
0x2e
,
0x3a
),
/* , ; */
KEYBTDECL
(
0x2c
,
0x3b
,
true
),
/* _ - */
KEYBT
(
0x5f
,
0x2d
)};
/* . : */
KEYBTDECL
(
0x2e
,
0x3a
,
true
),
/* _ - */
KEYBTDECL
(
0x5f
,
0x2d
,
false
)};
...
...
src/gui/UBKeyboardPalette.cpp
View file @
e0ee3669
...
@@ -38,11 +38,16 @@ UBKeyboardPalette::UBKeyboardPalette(QWidget *parent)
...
@@ -38,11 +38,16 @@ UBKeyboardPalette::UBKeyboardPalette(QWidget *parent)
setGrip
(
false
);
setGrip
(
false
);
capsLock
=
false
;
capsLock
=
false
;
shift
=
false
;
languagePopupActive
=
false
;
languagePopupActive
=
false
;
keyboardActive
=
false
;
keyboardActive
=
false
;
nSpecialModifierIndex
=
0
;
specialModifier
=
0
;
btnWidth
=
btnHeight
=
16
;
btnWidth
=
btnHeight
=
16
;
strSize
=
"16x16"
;
strSize
=
"16x16"
;
currBtnImages
=
new
BTNImages
(
"16"
,
btnWidth
,
btnHeight
);
currBtnImages
=
new
BTNImages
(
"16"
,
btnWidth
,
btnHeight
);
storage
=
NULL
;
buttons
=
new
UBKeyButton
*
[
47
];
buttons
=
new
UBKeyButton
*
[
47
];
for
(
int
i
=
0
;
i
<
47
;
i
++
)
for
(
int
i
=
0
;
i
<
47
;
i
++
)
...
@@ -143,6 +148,8 @@ UBKeyboardPalette::~UBKeyboardPalette()
...
@@ -143,6 +148,8 @@ UBKeyboardPalette::~UBKeyboardPalette()
delete
currBtnImages
;
delete
currBtnImages
;
currBtnImages
=
NULL
;
currBtnImages
=
NULL
;
}
}
onActivated
(
false
);
}
}
QSize
UBKeyboardPalette
::
sizeHint
()
const
QSize
UBKeyboardPalette
::
sizeHint
()
const
...
@@ -302,8 +309,10 @@ void UBKeyboardPalette::paintEvent( QPaintEvent* event)
...
@@ -302,8 +309,10 @@ void UBKeyboardPalette::paintEvent( QPaintEvent* event)
//-------------------
//-------------------
// // Row 3 Stub
// // Row 3 Stub
// ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth, btnHeight);
// offX += btnWidth;
// button Enter
ctrlButtons
[
ctrlButtonsId
++
]
->
setGeometry
(
offX
,
offY
,
btnWidth
*
1
,
btnHeight
);
offX
+=
btnWidth
*
1
;
// buttons [a]..[\]
// buttons [a]..[\]
for
(
int
i
=
0
;
i
<
12
;
i
++
)
for
(
int
i
=
0
;
i
<
12
;
i
++
)
...
@@ -313,8 +322,8 @@ void UBKeyboardPalette::paintEvent( QPaintEvent* event)
...
@@ -313,8 +322,8 @@ void UBKeyboardPalette::paintEvent( QPaintEvent* event)
}
}
// button Enter
// button Enter
ctrlButtons
[
ctrlButtonsId
++
]
->
setGeometry
(
offX
,
offY
,
btnWidth
*
3
,
btnHeight
);
ctrlButtons
[
ctrlButtonsId
++
]
->
setGeometry
(
offX
,
offY
,
btnWidth
*
2
,
btnHeight
);
offX
+=
btnWidth
*
3
;
offX
+=
btnWidth
*
2
;
//------------------------------------------------
//------------------------------------------------
// set geometry (position) for row 4
// set geometry (position) for row 4
...
@@ -353,6 +362,11 @@ void UBKeyboardPalette::paintEvent( QPaintEvent* event)
...
@@ -353,6 +362,11 @@ void UBKeyboardPalette::paintEvent( QPaintEvent* event)
//------------------------------------------------
//------------------------------------------------
}
}
void
UBKeyboardPalette
::
onDeactivated
()
{
onActivated
(
false
);
}
//-----------------------------------------------------------------------//
//-----------------------------------------------------------------------//
// BTNImages Class
// BTNImages Class
...
@@ -415,6 +429,11 @@ UBKeyboardButton::~UBKeyboardButton()
...
@@ -415,6 +429,11 @@ UBKeyboardButton::~UBKeyboardButton()
}
}
}
}
bool
UBKeyboardButton
::
isPressed
()
{
return
bPressed
;
}
void
UBKeyboardButton
::
paintEvent
(
QPaintEvent
*
)
void
UBKeyboardButton
::
paintEvent
(
QPaintEvent
*
)
{
{
...
@@ -437,7 +456,7 @@ void UBKeyboardButton::paintEvent(QPaintEvent*)
...
@@ -437,7 +456,7 @@ void UBKeyboardButton::paintEvent(QPaintEvent*)
//--------------------------
//--------------------------
if
(
bPressed
)
if
(
isPressed
()
)
{
{
painter
.
drawImage
(
0
,
0
,
m_parent
->
currBtnImages
->
m_btnLeftActive
,
0
,
0
,
m_parent
->
currBtnImages
->
m_btnLeftActive
.
width
(),
m_parent
->
currBtnImages
->
m_btnLeftActive
.
height
()
);
painter
.
drawImage
(
0
,
0
,
m_parent
->
currBtnImages
->
m_btnLeftActive
,
0
,
0
,
m_parent
->
currBtnImages
->
m_btnLeftActive
.
width
(),
m_parent
->
currBtnImages
->
m_btnLeftActive
.
height
()
);
painter
.
drawImage
(
QRect
(
m_parent
->
currBtnImages
->
m_btnLeftActive
.
width
(),
0
,
width
()
-
m_parent
->
currBtnImages
->
m_btnLeftActive
.
width
()
-
m_parent
->
currBtnImages
->
m_btnRightActive
.
width
(),
height
()),
m_parent
->
currBtnImages
->
m_btnCenterActive
);
painter
.
drawImage
(
QRect
(
m_parent
->
currBtnImages
->
m_btnLeftActive
.
width
(),
0
,
width
()
-
m_parent
->
currBtnImages
->
m_btnLeftActive
.
width
()
-
m_parent
->
currBtnImages
->
m_btnRightActive
.
width
(),
height
()),
m_parent
->
currBtnImages
->
m_btnCenterActive
);
...
@@ -492,10 +511,55 @@ UBKeyButton::UBKeyButton(UBKeyboardPalette* parent)
...
@@ -492,10 +511,55 @@ UBKeyButton::UBKeyButton(UBKeyboardPalette* parent)
UBKeyButton
::~
UBKeyButton
()
UBKeyButton
::~
UBKeyButton
()
{}
{}
bool
UBKeyButton
::
shifted
()
{
bool
b
=
keyboard
->
shift
;
if
(
keybt
->
capsLockSwitch
&&
keyboard
->
capsLock
)
b
=
!
b
;
return
b
;
}
void
UBKeyButton
::
onPress
()
void
UBKeyButton
::
onPress
()
{
{
if
(
keybt
!=
NULL
)
if
(
keybt
!=
NULL
)
sendUnicodeSymbol
(
keybt
->
code1
,
keybt
->
code2
,
capsLock
());
{
int
codeIndex
=
keyboard
->
nSpecialModifierIndex
*
2
+
shifted
();
if
(
keyboard
->
nSpecialModifierIndex
)
{
if
(
keybt
->
codes
[
codeIndex
].
empty
())
{
sendUnicodeSymbol
(
keyboard
->
specialModifier
);
sendUnicodeSymbol
(
keybt
->
codes
[
shifted
()]);
}
else
{
sendUnicodeSymbol
(
keybt
->
codes
[
codeIndex
]);
}
keyboard
->
nSpecialModifierIndex
=
0
;
}
else
{
int
nSpecialModifierIndex
=
shifted
()
?
keybt
->
modifier2
:
keybt
->
modifier1
;
if
(
nSpecialModifierIndex
)
{
keyboard
->
nSpecialModifierIndex
=
nSpecialModifierIndex
;
keyboard
->
specialModifier
=
keybt
->
codes
[
codeIndex
];
}
else
{
sendUnicodeSymbol
(
keybt
->
codes
[
codeIndex
]);
}
}
}
if
(
keyboard
->
shift
)
{
keyboard
->
shift
=
false
;
keyboard
->
update
();
}
}
}
void
UBKeyButton
::
onRelease
()
void
UBKeyButton
::
onRelease
()
...
@@ -505,7 +569,7 @@ void UBKeyButton::paintContent(QPainter& painter)
...
@@ -505,7 +569,7 @@ void UBKeyButton::paintContent(QPainter& painter)
{
{
if
(
keybt
)
if
(
keybt
)
{
{
QString
text
(
QChar
(
capsLock
()
?
keybt
->
symbol2
:
keybt
->
symbol1
));
QString
text
(
QChar
(
shifted
()
?
keybt
->
symbol2
:
keybt
->
symbol1
));
QRect
textRect
(
rect
().
x
()
+
2
,
rect
().
y
()
+
2
,
rect
().
width
()
-
4
,
rect
().
height
()
-
4
);
QRect
textRect
(
rect
().
x
()
+
2
,
rect
().
y
()
+
2
,
rect
().
width
()
-
4
,
rect
().
height
()
-
4
);
painter
.
drawText
(
textRect
,
Qt
::
AlignCenter
,
text
);
painter
.
drawText
(
textRect
,
Qt
::
AlignCenter
,
text
);
}
}
...
@@ -565,6 +629,11 @@ void UBCapsLockButton::onPress()
...
@@ -565,6 +629,11 @@ void UBCapsLockButton::onPress()
void
UBCapsLockButton
::
onRelease
()
void
UBCapsLockButton
::
onRelease
()
{}
{}
bool
UBCapsLockButton
::
isPressed
()
{
return
keyboard
->
capsLock
;
}
void
UBCapsLockButton
::
paintContent
(
QPainter
&
painter
)
void
UBCapsLockButton
::
paintContent
(
QPainter
&
painter
)
{
{
if
(
imgContent
!=
NULL
)
if
(
imgContent
!=
NULL
)
...
@@ -576,6 +645,40 @@ void UBCapsLockButton::paintContent(QPainter& painter)
...
@@ -576,6 +645,40 @@ void UBCapsLockButton::paintContent(QPainter& painter)
painter
.
drawText
(
rect
(),
Qt
::
AlignCenter
,
"^"
);
painter
.
drawText
(
rect
(),
Qt
::
AlignCenter
,
"^"
);
}
}
UBShiftButton
::
UBShiftButton
(
UBKeyboardPalette
*
parent
,
const
QString
_contentImagePath
)
:
UBKeyboardButton
(
parent
,
_contentImagePath
)
{}
UBShiftButton
::~
UBShiftButton
()
{}
void
UBShiftButton
::
onPress
()
{
keyboard
->
shift
=
!
keyboard
->
shift
;
keyboard
->
update
();
}
void
UBShiftButton
::
onRelease
()
{}
bool
UBShiftButton
::
isPressed
()
{
return
keyboard
->
shift
;
}
void
UBShiftButton
::
paintContent
(
QPainter
&
painter
)
{
if
(
imgContent
!=
NULL
)
{
painter
.
drawImage
((
rect
().
width
()
-
imgContent
->
m_btnContent
.
width
()
)
/
2
,
(
rect
().
height
()
-
imgContent
->
m_btnContent
.
height
()
)
/
2
,
imgContent
->
m_btnContent
,
0
,
0
,
imgContent
->
m_btnContent
.
width
(),
imgContent
->
m_btnContent
.
height
());
}
else
painter
.
drawText
(
rect
(),
Qt
::
AlignCenter
,
"^"
);
}
UBLocaleButton
::
UBLocaleButton
(
UBKeyboardPalette
*
parent
)
UBLocaleButton
::
UBLocaleButton
(
UBKeyboardPalette
*
parent
)
:
UBKeyboardButton
(
parent
)
:
UBKeyboardButton
(
parent
)
...
...
src/gui/UBKeyboardPalette.h
View file @
e0ee3669
...
@@ -64,7 +64,9 @@ class UBKeyboardPalette : public UBActionPalette
...
@@ -64,7 +64,9 @@ class UBKeyboardPalette : public UBActionPalette
friend
class
UBKeyboardButton
;
friend
class
UBKeyboardButton
;
friend
class
UBCapsLockButton
;
friend
class
UBCapsLockButton
;
friend
class
UBShiftButton
;
friend
class
UBLocaleButton
;
friend
class
UBLocaleButton
;
friend
class
UBKeyButton
;
public
:
public
:
UBKeyboardPalette
(
QWidget
*
parent
);
UBKeyboardPalette
(
QWidget
*
parent
);
...
@@ -97,10 +99,14 @@ private slots:
...
@@ -97,10 +99,14 @@ private slots:
protected
:
protected
:
bool
capsLock
;
bool
capsLock
;
bool
shift
;
int
nCurrentLocale
;
int
nCurrentLocale
;
int
nLocalesCount
;
int
nLocalesCount
;
UBKeyboardLocale
**
locales
;
UBKeyboardLocale
**
locales
;
int
nSpecialModifierIndex
;
KEYCODE
specialModifier
;
QString
strSize
;
QString
strSize
;
int
btnWidth
;
int
btnWidth
;
int
btnHeight
;
int
btnHeight
;
...
@@ -113,7 +119,7 @@ protected:
...
@@ -113,7 +119,7 @@ protected:
virtual
void
paintEvent
(
QPaintEvent
*
event
);
virtual
void
paintEvent
(
QPaintEvent
*
event
);
virtual
void
moveEvent
(
QMoveEvent
*
event
);
virtual
void
moveEvent
(
QMoveEvent
*
event
);
void
sendKeyEvent
(
const
KEYBT
&
keybt
);
void
sendKeyEvent
(
KEYCODE
keyCode
);
void
setLocale
(
int
nLocale
);
void
setLocale
(
int
nLocale
);
...
@@ -170,11 +176,11 @@ protected:
...
@@ -170,11 +176,11 @@ protected:
virtual
void
onRelease
()
=
0
;
virtual
void
onRelease
()
=
0
;
virtual
void
paintContent
(
QPainter
&
painter
)
=
0
;
virtual
void
paintContent
(
QPainter
&
painter
)
=
0
;
bool
capsLock
(){
return
keyboard
->
capsLock
;}
virtual
bool
isPressed
();
UBKeyboardPalette
*
keyboard
;
UBKeyboardPalette
*
keyboard
;
void
sendUnicodeSymbol
(
unsigned
int
nSymbol1
,
unsigned
int
nSymbol2
,
bool
shift
);
void
sendUnicodeSymbol
(
KEYCODE
keycode
);
void
sendControlSymbol
(
int
nSymbol
);
void
sendControlSymbol
(
int
nSymbol
);
private
:
private
:
...
@@ -197,6 +203,7 @@ public:
...
@@ -197,6 +203,7 @@ public:
virtual
void
paintContent
(
QPainter
&
painter
);
virtual
void
paintContent
(
QPainter
&
painter
);
private
:
private
:
bool
shifted
();
const
KEYBT
*
keybt
;
const
KEYBT
*
keybt
;
};
};
...
@@ -229,8 +236,28 @@ public:
...
@@ -229,8 +236,28 @@ public:
virtual
void
onPress
();
virtual
void
onPress
();
virtual
void
onRelease
();
virtual
void
onRelease
();
virtual
void
paintContent
(
QPainter
&
painter
);
virtual
void
paintContent
(
QPainter
&
painter
);
protected
:
virtual
bool
isPressed
();
};
class
UBShiftButton
:
public
UBKeyboardButton
{
Q_OBJECT
public
:
UBShiftButton
(
UBKeyboardPalette
*
parent
,
const
QString
_contentImagePath
);
~
UBShiftButton
();
virtual
void
onPress
();
virtual
void
onRelease
();
virtual
void
paintContent
(
QPainter
&
painter
);
protected
:
virtual
bool
isPressed
();
};
};
class
UBLocaleButton
:
public
UBKeyboardButton
class
UBLocaleButton
:
public
UBKeyboardButton
{
{
Q_OBJECT
Q_OBJECT
...
...
src/gui/UBKeyboardPalette_linux.cpp
View file @
e0ee3669
...
@@ -70,22 +70,59 @@ void x11SendKey(Display *display, int keyCode, int modifiers)
...
@@ -70,22 +70,59 @@ void x11SendKey(Display *display, int keyCode, int modifiers)
// Send a fake key release event to the window.
// Send a fake key release event to the window.
event
=
createKeyEvent
(
display
,
winFocus
,
winRoot
,
false
,
keyCode
,
modifiers
);
event
=
createKeyEvent
(
display
,
winFocus
,
winRoot
,
false
,
keyCode
,
modifiers
);
XSendEvent
(
event
.
display
,
event
.
window
,
True
,
KeyPressMask
,
(
XEvent
*
)
&
event
);
XSendEvent
(
event
.
display
,
event
.
window
,
True
,
KeyPressMask
,
(
XEvent
*
)
&
event
);
}
}
void
UBKeyboardButton
::
sendUnicodeSymbol
(
unsigned
int
nSymbol1
,
unsigned
int
nSymbol2
,
bool
shift
)
void
traceKeyCodes
(
)
{
{
unsigned
int
nSymbol
=
shift
?
nSymbol2
:
nSymbol1
;
Display
*
display
=
XOpenDisplay
(
0
);
if
(
display
==
NULL
)
return
;
int
min_keycodes
,
max_keycodes
,
byte_per_code
;
XDisplayKeycodes
(
display
,
&
min_keycodes
,
&
max_keycodes
);
KeySym
*
keySyms
=
XGetKeyboardMapping
(
display
,
min_keycodes
,
max_keycodes
-
min_keycodes
,
&
byte_per_code
);
qDebug
()
<<
"Codes table, min_keycodes: "
<<
min_keycodes
<<
", max_keycodes: "
<<
max_keycodes
<<
", bytes_per_code:"
<<
byte_per_code
;
for
(
int
i
=
0
;
i
<
max_keycodes
-
min_keycodes
;
i
++
)
{
QString
str
;
for
(
int
j
=
0
;
j
<
byte_per_code
;
j
++
)
{
str
+=
QString
::
number
(
keySyms
[
i
*
byte_per_code
+
j
],
16
);
str
+=
":"
;
}
qDebug
()
<<
i
<<
":"
<<
str
;
}
XFree
(
keySyms
);
XCloseDisplay
(
display
);
}
void
UBKeyboardButton
::
sendUnicodeSymbol
(
KEYCODE
keycode
)
{
// Obtain the X11 display.
// Obtain the X11 display.
Display
*
display
=
XOpenDisplay
(
0
);
Display
*
display
=
XOpenDisplay
(
0
);
if
(
display
==
NULL
)
if
(
display
==
NULL
)
return
;
return
;
KeyCode
keyCode
=
XKeysymToKeycode
(
display
,
nSymbol
);
if
(
!
keycode
.
empty
())
if
(
keyCode
!=
NoSymbol
)
{
{
x11SendKey
(
display
,
keyCode
,
shift
);
int
modifier
=
keycode
.
modifier
;
if
(
keycode
.
modifier
==
2
)
modifier
=
0x2000
;
if
(
keycode
.
modifier
==
3
)
modifier
=
0x2001
;
if
(
keycode
.
modifier
==
4
)
modifier
=
0x4000
;
if
(
keycode
.
modifier
==
5
)
modifier
=
0x4001
;
//modifiers 6 and 7 seems are not available.... They are reassigned in layout creationtime
//if (keycode.modifier==6) modifier = 0x6000;
//if (keycode.modifier==7) modifier = 0x6001;
x11SendKey
(
display
,
keycode
.
code
+
keyboard
->
min_keycodes
,
modifier
);
}
}
XCloseDisplay
(
display
);
XCloseDisplay
(
display
);
...
@@ -111,16 +148,17 @@ void UBKeyboardButton::sendControlSymbol(int nSymbol)
...
@@ -111,16 +148,17 @@ void UBKeyboardButton::sendControlSymbol(int nSymbol)
void
UBKeyboardPalette
::
createCtrlButtons
()
void
UBKeyboardPalette
::
createCtrlButtons
()
{
{
ctrlButtons
=
new
UBKeyboardButton
*
[
8
];
ctrlButtons
=
new
UBKeyboardButton
*
[
9
];
ctrlButtons
[
0
]
=
new
UBCntrlButton
(
this
,
"<-"
,
XK_BackSpace
);
ctrlButtons
[
0
]
=
new
UBCntrlButton
(
this
,
XK_BackSpace
,
"backspace"
);
ctrlButtons
[
1
]
=
new
UBCntrlButton
(
this
,
"<->"
,
XK_Tab
);
ctrlButtons
[
1
]
=
new
UBCntrlButton
(
this
,
XK_Tab
,
"tab"
);
ctrlButtons
[
2
]
=
new
UBCntrlButton
(
this
,
tr
(
"Enter"
),
XK_Return
);
ctrlButtons
[
2
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
ctrlButtons
[
3
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
ctrlButtons
[
3
]
=
new
UBCntrlButton
(
this
,
tr
(
"Enter"
),
XK_Return
);
ctrlButtons
[
4
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
ctrlButtons
[
4
]
=
new
UBShiftButton
(
this
,
"shift"
);
ctrlButtons
[
5
]
=
new
UBLocaleButton
(
this
);
ctrlButtons
[
5
]
=
new
UBShiftButton
(
this
,
"shift"
);
ctrlButtons
[
6
]
=
new
UBCntrlButton
(
this
,
""
,
XK_space
);
ctrlButtons
[
6
]
=
new
UBLocaleButton
(
this
);
ctrlButtons
[
7
]
=
new
UBLocaleButton
(
this
);
ctrlButtons
[
7
]
=
new
UBCntrlButton
(
this
,
""
,
XK_space
);
ctrlButtons
[
8
]
=
new
UBLocaleButton
(
this
);
}
}
...
@@ -128,90 +166,114 @@ void UBKeyboardPalette::onActivated(bool activated)
...
@@ -128,90 +166,114 @@ void UBKeyboardPalette::onActivated(bool activated)
{
{
if
(
activated
)
if
(
activated
)
{
{
if
(
storage
)
{
qDebug
()
<<
"Keybard already activated...."
;
return
;
}
Display
*
display
=
XOpenDisplay
(
0
);
Display
*
display
=
XOpenDisplay
(
0
);
if
(
display
==
NULL
)
if
(
display
==
NULL
)
return
;
return
;
XDisplayKeycodes
(
display
,
&
this
->
min_keycodes
,
&
this
->
max_keycodes
);
XDisplayKeycodes
(
display
,
&
this
->
min_keycodes
,
&
this
->
max_keycodes
);
KeySym
*
keySyms
=
XGetKeyboardMapping
(
display
,
min_keycodes
,
KeySym
*
keySyms
=
XGetKeyboardMapping
(
display
,
min_keycodes
,
max_keycodes
-
min_keycodes
,
&
this
->
byte_per_code
);
max_keycodes
-
min_keycodes
,
&
byte_per_code
);
storage
=
keySyms
;
storage
=
keySyms
;
XCloseDisplay
(
display
);
XCloseDisplay
(
display
);
qDebug
()
<<
"------------ ORIGINAL --------------------------------------------------"
;
traceKeyCodes
();
onLocaleChanged
(
locales
[
nCurrentLocale
]);
onLocaleChanged
(
locales
[
nCurrentLocale
]);
qDebug
()
<<
"------------ CUSTOM ------------------------------------------------"
;
traceKeyCodes
();
qDebug
()
<<
"----------------------------------------------------------------------"
;
}
}
else
else
{
{
Display
*
display
=
XOpenDisplay
(
0
);
Display
*
display
=
XOpenDisplay
(
0
);
if
(
display
==
NULL
)
if
(
display
==
NULL
)
{
qDebug
()
<<
"Keybard not activated...."
;
return
;
return
;
}
KeySym
*
keySyms
=
(
KeySym
*
)
storage
;
KeySym
*
keySyms
=
(
KeySym
*
)
storage
;
if
(
keySyms
!=
NULL
)
if
(
keySyms
!=
NULL
)
{
{
qDebug
()
<<
"Default key table restored....."
;
XChangeKeyboardMapping
(
display
,
min_keycodes
,
byte_per_code
,
XChangeKeyboardMapping
(
display
,
min_keycodes
,
byte_per_code
,
keySyms
,
max_keycodes
-
min_keycodes
);
keySyms
,
max_keycodes
-
min_keycodes
);
XFree
(
keySyms
);
XFree
(
keySyms
);
storage
=
NULL
;
}
}
XCloseDisplay
(
display
);
XCloseDisplay
(
display
);
}
}
}
}
void
UBKeyboardPalette
::
onDeactivated
()
void
UBKeyboardPalette
::
onLocaleChanged
(
UBKeyboardLocale
*
locale
)
{
{
Display
*
display
=
XOpenDisplay
(
0
);
Display
*
display
=
XOpenDisplay
(
0
);
if
(
display
==
NULL
)
if
(
display
==
NULL
)
return
;
return
;
KeySym
*
keySyms
=
(
KeySym
*
)
storage
;
int
byte_per_code
;
if
(
keySyms
!=
NULL
)
{
KeySym
*
keySyms
=
XGetKeyboardMapping
(
display
,
min_keycodes
,
XChangeKeyboardMapping
(
display
,
min_keycodes
,
byte_per_code
,
max_keycodes
-
min_keycodes
,
&
byte_per_code
);
keySyms
,
max_keycodes
-
min_keycodes
);
}
XCloseDisplay
(
display
);
}
void
setSymbolsFromButton
(
Display
*
display
,
for
(
int
i
=
0
;
i
<
SYMBOL_KEYS_COUNT
;
i
++
)
const
UBKeyboardLocale
&
locale
,
{
int
byte_per_code
,
// loop by keybt
int
nFromSymbol
,
for
(
int
j
=
0
;
j
<
8
;
j
++
)
int
nFromButton
,
int
count
)
{
KeySym
*
keySyms
=
new
KeySym
[
count
*
byte_per_code
];
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
{
keySyms
[
byte_per_code
*
i
+
0
]
=
KEYCODE
&
kc
=
(
*
locale
)[
i
]
->
codes
[
j
];
keySyms
[
byte_per_code
*
i
+
2
]
=
locale
[
nFromButton
+
i
]
->
code1
;
if
(
!
kc
.
empty
())
{
if
(
kc
.
modifier
<=
5
)
keySyms
[
kc
.
code
*
byte_per_code
+
kc
.
modifier
]
=
kc
.
symbol
;
keySyms
[
byte_per_code
*
i
+
1
]
=
}
keySyms
[
byte_per_code
*
i
+
3
]
=
locale
[
nFromButton
+
i
]
->
code2
;
}
}
for
(
int
j
=
4
;
j
<
byte_per_code
;
j
++
)
//Now look for modifiers > 5 and reassign them to free places
keySyms
[
byte_per_code
*
i
+
j
]
=
NoSymbol
;
for
(
int
i
=
0
;
i
<
SYMBOL_KEYS_COUNT
;
i
++
)
{
// loop by keybt
for
(
int
j
=
0
;
j
<
8
;
j
++
)
{
KEYCODE
&
kc
=
(
*
locale
)[
i
]
->
codes
[
j
];
if
(
!
kc
.
empty
())
{
if
(
kc
.
modifier
>
5
)
{
for
(
int
i1
=
0
;
i1
<
SYMBOL_KEYS_COUNT
;
i1
++
)
for
(
int
j1
=
0
;
j1
<=
5
;
j1
++
)
if
(
keySyms
[
i1
*
byte_per_code
+
j1
]
==
NoSymbol
)
{
kc
.
code
=
i1
;
kc
.
modifier
=
j1
;
break
;
}
}
XChangeKeyboardMapping
(
display
,
nFromSymbol
,
byte_per_code
,
keySyms
,
count
);
}
delete
[]
keySyms
;
keySyms
[
kc
.
code
*
byte_per_code
+
kc
.
modifier
]
=
kc
.
symbol
;
}
}
}
}
void
UBKeyboardPalette
::
onLocaleChanged
(
UBKeyboardLocale
*
locale
)
{
Display
*
display
=
XOpenDisplay
(
0
);
if
(
display
==
NULL
)
return
;
setSymbolsFromButton
(
display
,
*
locale
,
byte_per_code
,
min_keycodes
+
41
,
0
,
1
);
XChangeKeyboardMapping
(
display
,
min_keycodes
,
byte_per_code
,
keySyms
,
max_keycodes
-
min_keycodes
);
setSymbolsFromButton
(
display
,
*
locale
,
byte_per_code
,
min_keycodes
+
2
,
1
,
12
);
XFree
(
keySyms
);
setSymbolsFromButton
(
display
,
*
locale
,
byte_per_code
,
min_keycodes
+
16
,
13
,
12
);
setSymbolsFromButton
(
display
,
*
locale
,
byte_per_code
,
min_keycodes
+
30
,
25
,
11
);
setSymbolsFromButton
(
display
,
*
locale
,
byte_per_code
,
min_keycodes
+
44
,
37
,
10
);
XCloseDisplay
(
display
);
XCloseDisplay
(
display
);
}
}
src/gui/UBKeyboardPalette_mac.cpp
View file @
e0ee3669
...
@@ -22,15 +22,13 @@
...
@@ -22,15 +22,13 @@
#include <QMap>
#include <QMap>
#include <QString>
#include <QString>
void
UBKeyboardButton
::
sendUnicodeSymbol
(
unsigned
int
nSymbol1
,
unsigned
int
nSymbol2
,
bool
shift
)
void
UBKeyboardButton
::
sendUnicodeSymbol
(
KEYCODE
keycode
)
{
{
unsigned
int
nSymbol
=
(
shift
)
?
nSymbol2
:
nSymbol1
;
if
(
keycode
.
modifier
)
if
(
shift
)
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
56
,
true
));
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
56
,
true
));
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
nSymbol
,
true
));
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
keycode
.
code
,
true
));
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
nSymbol
,
false
));
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
keycode
.
code
,
false
));
if
(
shift
)
if
(
keycode
.
modifier
)
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
56
,
false
));
CGEventPost
(
kCGSessionEventTap
,
CGEventCreateKeyboardEvent
(
NULL
,
56
,
false
));
}
}
...
@@ -46,16 +44,17 @@ void UBKeyboardButton::sendControlSymbol(int nSymbol)
...
@@ -46,16 +44,17 @@ void UBKeyboardButton::sendControlSymbol(int nSymbol)
void
UBKeyboardPalette
::
createCtrlButtons
()
void
UBKeyboardPalette
::
createCtrlButtons
()
{
{
ctrlButtons
=
new
UBKeyboardButton
*
[
7
];
ctrlButtons
=
new
UBKeyboardButton
*
[
9
];
ctrlButtons
[
0
]
=
new
UBCntrlButton
(
this
,
"<-"
,
51
);
ctrlButtons
[
0
]
=
new
UBCntrlButton
(
this
,
51
,
"backspace"
);
ctrlButtons
[
1
]
=
new
UBCntrlButton
(
this
,
"<->"
,
48
);
ctrlButtons
[
1
]
=
new
UBCntrlButton
(
this
,
48
,
"tab"
);
ctrlButtons
[
2
]
=
new
UBCntrlButton
(
this
,
tr
(
"Enter"
),
76
);
ctrlButtons
[
2
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
ctrlButtons
[
3
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
ctrlButtons
[
3
]
=
new
UBCntrlButton
(
this
,
tr
(
"Enter"
),
76
);
ctrlButtons
[
4
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
ctrlButtons
[
4
]
=
new
UBShiftButton
(
this
,
"shift"
);
ctrlButtons
[
5
]
=
new
UBLocaleButton
(
this
);
ctrlButtons
[
5
]
=
new
UBShiftButton
(
this
,
"shift"
);
ctrlButtons
[
6
]
=
new
UBCntrlButton
(
this
,
""
,
49
);
ctrlButtons
[
6
]
=
new
UBLocaleButton
(
this
);
ctrlButtons
[
7
]
=
new
UBLocaleButton
(
this
);
ctrlButtons
[
7
]
=
new
UBCntrlButton
(
this
,
""
,
49
);
ctrlButtons
[
8
]
=
new
UBLocaleButton
(
this
);
}
}
void
SetMacLocaleByIdentifier
(
const
QString
&
id
)
void
SetMacLocaleByIdentifier
(
const
QString
&
id
)
...
@@ -102,10 +101,7 @@ void UBKeyboardPalette::onActivated(bool activated)
...
@@ -102,10 +101,7 @@ void UBKeyboardPalette::onActivated(bool activated)
SetMacLocaleByIdentifier
(
activeLocale
);
SetMacLocaleByIdentifier
(
activeLocale
);
}
}
}
}
void
UBKeyboardPalette
::
onDeactivated
()
{
SetMacLocaleByIdentifier
(
activeLocale
);
}
void
UBKeyboardPalette
::
onLocaleChanged
(
UBKeyboardLocale
*
locale
)
void
UBKeyboardPalette
::
onLocaleChanged
(
UBKeyboardLocale
*
locale
)
{
{
SetMacLocaleByIdentifier
(
locale
->
id
);
SetMacLocaleByIdentifier
(
locale
->
id
);
...
...
src/gui/UBKeyboardPalette_win.cpp
View file @
e0ee3669
...
@@ -8,21 +8,19 @@
...
@@ -8,21 +8,19 @@
#include "core/memcheck.h"
#include "core/memcheck.h"
void
UBKeyboardButton
::
sendUnicodeSymbol
(
unsigned
int
nSymbol1
,
unsigned
int
nSymbol2
,
bool
shift
)
void
UBKeyboardButton
::
sendUnicodeSymbol
(
KEYCODE
keycode
)
{
{
unsigned
int
nSymbol
=
shift
?
nSymbol2
:
nSymbol1
;
INPUT
input
[
2
];
INPUT
input
[
2
];
input
[
0
].
type
=
INPUT_KEYBOARD
;
input
[
0
].
type
=
INPUT_KEYBOARD
;
input
[
0
].
ki
.
wVk
=
0
;
input
[
0
].
ki
.
wVk
=
0
;
input
[
0
].
ki
.
wScan
=
nS
ymbol
;
input
[
0
].
ki
.
wScan
=
keycode
.
s
ymbol
;
input
[
0
].
ki
.
dwFlags
=
KEYEVENTF_UNICODE
;
input
[
0
].
ki
.
dwFlags
=
KEYEVENTF_UNICODE
;
input
[
0
].
ki
.
time
=
0
;
input
[
0
].
ki
.
time
=
0
;
input
[
0
].
ki
.
dwExtraInfo
=
0
;
input
[
0
].
ki
.
dwExtraInfo
=
0
;
input
[
1
].
type
=
INPUT_KEYBOARD
;
input
[
1
].
type
=
INPUT_KEYBOARD
;
input
[
1
].
ki
.
wVk
=
0
;
input
[
1
].
ki
.
wVk
=
0
;
input
[
1
].
ki
.
wScan
=
nS
ymbol
;
input
[
1
].
ki
.
wScan
=
keycode
.
s
ymbol
;
input
[
1
].
ki
.
dwFlags
=
KEYEVENTF_UNICODE
|
KEYEVENTF_KEYUP
;
input
[
1
].
ki
.
dwFlags
=
KEYEVENTF_UNICODE
|
KEYEVENTF_KEYUP
;
input
[
1
].
ki
.
time
=
0
;
input
[
1
].
ki
.
time
=
0
;
input
[
1
].
ki
.
dwExtraInfo
=
0
;
input
[
1
].
ki
.
dwExtraInfo
=
0
;
...
@@ -57,11 +55,10 @@ void UBKeyboardPalette::createCtrlButtons()
...
@@ -57,11 +55,10 @@ void UBKeyboardPalette::createCtrlButtons()
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
0x08
,
"backspace"
);
// Backspace
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
0x08
,
"backspace"
);
// Backspace
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
0x09
,
"tab"
);
// Tab
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
0x09
,
"tab"
);
// Tab
// ctrlButtons[ctrlID++] = new UBKeyButton(this); // Row 2 Stub
ctrlButtons
[
ctrlID
++
]
=
new
UBCapsLockButton
(
this
,
"capslock"
);
// Shift
// ctrlButtons[ctrlID++] = new UBKeyButton(this); // Row 3 Stub
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
tr
(
"Enter"
),
0x0d
);
// Enter
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
tr
(
"Enter"
),
0x0d
);
// Enter
ctrlButtons
[
ctrlID
++
]
=
new
UB
CapsLockButton
(
this
,
"capslock"
);
// Caps Lock
ctrlButtons
[
ctrlID
++
]
=
new
UB
ShiftButton
(
this
,
"shift"
);
// Shift
ctrlButtons
[
ctrlID
++
]
=
new
UB
CapsLockButton
(
this
,
"capslock"
);
// Caps Lock
ctrlButtons
[
ctrlID
++
]
=
new
UB
ShiftButton
(
this
,
"shift"
);
// Shift
ctrlButtons
[
ctrlID
++
]
=
new
UBLocaleButton
(
this
);
// Language Switch
ctrlButtons
[
ctrlID
++
]
=
new
UBLocaleButton
(
this
);
// Language Switch
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
""
,
0x20
);
// Space
ctrlButtons
[
ctrlID
++
]
=
new
UBCntrlButton
(
this
,
""
,
0x20
);
// Space
ctrlButtons
[
ctrlID
++
]
=
new
UBLocaleButton
(
this
);
// Language Switch
ctrlButtons
[
ctrlID
++
]
=
new
UBLocaleButton
(
this
);
// Language Switch
...
@@ -69,10 +66,6 @@ void UBKeyboardPalette::createCtrlButtons()
...
@@ -69,10 +66,6 @@ void UBKeyboardPalette::createCtrlButtons()
void
UBKeyboardPalette
::
onActivated
(
bool
)
void
UBKeyboardPalette
::
onActivated
(
bool
)
{
{
}
void
UBKeyboardPalette
::
onDeactivated
()
{
}
}
void
UBKeyboardPalette
::
onLocaleChanged
(
UBKeyboardLocale
*
)
void
UBKeyboardPalette
::
onLocaleChanged
(
UBKeyboardLocale
*
)
{}
{}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment