summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/multikeyapplet/multikey.cpp22
-rw-r--r--core/applets/multikeyapplet/multikey.h2
-rw-r--r--inputmethods/multikey/configdlg.cpp161
-rw-r--r--inputmethods/multikey/configdlg.h12
-rw-r--r--share/multikey/ru.keymap255
5 files changed, 359 insertions, 93 deletions
diff --git a/core/applets/multikeyapplet/multikey.cpp b/core/applets/multikeyapplet/multikey.cpp
index 0a056b0..f1227ef 100644
--- a/core/applets/multikeyapplet/multikey.cpp
+++ b/core/applets/multikeyapplet/multikey.cpp
@@ -26,3 +26,3 @@
26 26
27Multikey::Multikey( QWidget *parent ) : QLabel( parent ), current("EN") 27Multikey::Multikey(QWidget *parent) : QLabel(parent), popupMenu(this), current("EN")
28{ 28{
@@ -36,2 +36,3 @@ Multikey::Multikey( QWidget *parent ) : QLabel( parent ), current("EN")
36 setText("EN"); 36 setText("EN");
37 popupMenu.insertItem("EN", -1);
37 show(); 38 show();
@@ -39,6 +40,19 @@ Multikey::Multikey( QWidget *parent ) : QLabel( parent ), current("EN")
39 40
40void Multikey::mousePressEvent( QMouseEvent * ) 41void Multikey::mousePressEvent(QMouseEvent *ev)
41{ 42{
43 if (ev->button() == RightButton) {
44
45 QPoint p = mapToGlobal(QPoint(0, 0));
46 QSize s = popupMenu.sizeHint();
47 int opt = popupMenu.exec(QPoint(p.x() + (width() / 2) - (s.width() / 2),
48 p.y() - s.height()), 0);
49
50 if (opt == -1)
51 return;
52 lang = opt;
53 } else {
54 lang = lang < sw_maps.count()-1 ? lang+1 : 0;
55 }
56
42 QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); 57 QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)");
43 lang = lang < sw_maps.count()-1 ? lang+1 : 0;
44 //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii()); 58 //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii());
@@ -62,2 +76,3 @@ void Multikey::message(const QCString &message, const QByteArray &data)
62 sw_maps.clear(); 76 sw_maps.clear();
77 popupMenu.clear();
63 78
@@ -92,2 +107,3 @@ void Multikey::message(const QCString &message, const QByteArray &data)
92 labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); 107 labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace());
108 popupMenu.insertItem(labels[labels.count()-1], labels.count()-1);
93 } else { 109 } else {
diff --git a/core/applets/multikeyapplet/multikey.h b/core/applets/multikeyapplet/multikey.h
index 2cb7b29..b525074 100644
--- a/core/applets/multikeyapplet/multikey.h
+++ b/core/applets/multikeyapplet/multikey.h
@@ -18,2 +18,3 @@
18#include <qstringlist.h> 18#include <qstringlist.h>
19#include <qpopupmenu.h>
19#include <qcopchannel_qws.h> 20#include <qcopchannel_qws.h>
@@ -33,2 +34,3 @@ protected:
33 QStringList labels; 34 QStringList labels;
35 QPopupMenu popupMenu;
34 QString current; 36 QString current;
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp
index f127d0e..d29109a 100644
--- a/inputmethods/multikey/configdlg.cpp
+++ b/inputmethods/multikey/configdlg.cpp
@@ -14,2 +14,3 @@
14 14
15#include <qlayout.h>
15#include <qwidget.h> 16#include <qwidget.h>
@@ -35,3 +36,3 @@
35// ConfigDlg::ConfigDlg() {{{1 36// ConfigDlg::ConfigDlg() {{{1
36ConfigDlg::ConfigDlg () : QTabWidget () 37ConfigDlg::ConfigDlg () : QDialog ()
37{ 38{
@@ -46,6 +47,9 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
46 47
47 QVBox *gen_box = new QVBox (this); 48 QVBoxLayout *base_lay = new QVBoxLayout(this);
48 gen_box->setMargin(3); 49
49 addTab(gen_box, tr("General Settings")); 50 QTabWidget *tabs = new QTabWidget(this, "tabs");
50 51
52 QWidget *gen_box = new QWidget(tabs, "gen_tab");
53 QVBoxLayout *gen_lay = new QVBoxLayout(gen_box);
54 gen_lay->setMargin(3);
51 QGroupBox *map_group = new QGroupBox (2, Qt::Vertical, tr("Keymap File"), gen_box); 55 QGroupBox *map_group = new QGroupBox (2, Qt::Vertical, tr("Keymap File"), gen_box);
@@ -131,3 +135,2 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
131 // have to "+1" because the "current language" listItem... remember? 135 // have to "+1" because the "current language" listItem... remember?
132
133 connect(keymaps, SIGNAL(highlighted(int)), SLOT(setMap(int))); 136 connect(keymaps, SIGNAL(highlighted(int)), SLOT(setMap(int)));
@@ -144,3 +147,3 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
144 remove_button->setFlat(TRUE); 147 remove_button->setFlat(TRUE);
145 if (default_maps.find(QFileInfo(current_map).fileName()) != default_maps.end()) 148 if (keymaps->currentItem() == 0 || default_maps.find(QFileInfo(current_map).fileName()) != default_maps.end())
146 remove_button->setDisabled(true); 149 remove_button->setDisabled(true);
@@ -148,2 +151,4 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
148 151
152 gen_lay->addWidget(map_group);
153
149 // make a box that will contain the buttons on the bottom 154 // make a box that will contain the buttons on the bottom
@@ -159,5 +164,2 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
159 164
160 // by connecting it after checking it, the signal isn't emmited
161 connect (pick_button, SIGNAL(clicked()), this, SLOT(pickTog()));
162
163 repeat_button = new QCheckBox(tr("Key Repeat"), other_grid); 165 repeat_button = new QCheckBox(tr("Key Repeat"), other_grid);
@@ -169,3 +171,5 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
169 } 171 }
170 connect (repeat_button, SIGNAL(clicked()), this, SLOT(repeatTog())); 172
173 gen_lay->addWidget(other_grid);
174 tabs->addTab(gen_box, tr("General Settings"));
171 175
@@ -175,7 +179,11 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
175 179
176 QGrid *color_box = new QGrid(2, this); 180 QWidget *color_box = new QWidget(tabs, "color_tab");
177 color_box->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); 181
178 color_box->setMargin(3); 182 QGridLayout *color_lay = new QGridLayout(color_box);
179 color_box->setSpacing(3); 183 QGrid *color_grid = new QGrid(2, color_box);
180 addTab(color_box, tr("Colors")); 184 color_lay->setAlignment(Qt::AlignTop);
185 color_grid->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
186 color_grid->layout()->setAlignment(Qt::AlignTop);
187 color_grid->setMargin(3);
188 color_grid->setSpacing(3);
181 189
@@ -185,4 +193,4 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
185 193
186 label = new QLabel(tr("Key Color"), color_box); 194 label = new QLabel(tr("Key Color"), color_grid);
187 keycolor_button = new QPushButton(color_box); 195 keycolor_button = new QPushButton(color_grid);
188 connect(keycolor_button, SIGNAL(clicked()), SLOT(keyColorClicked())); 196 connect(keycolor_button, SIGNAL(clicked()), SLOT(keyColorClicked()));
@@ -202,4 +210,4 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
202 210
203 label = new QLabel(tr("Key Pressed Color"), color_box); 211 label = new QLabel(tr("Key Pressed Color"), color_grid);
204 keycolor_pressed_button = new QPushButton(color_box); 212 keycolor_pressed_button = new QPushButton(color_grid);
205 connect(keycolor_pressed_button, SIGNAL(clicked()), SLOT(keyColorPressedClicked())); 213 connect(keycolor_pressed_button, SIGNAL(clicked()), SLOT(keyColorPressedClicked()));
@@ -209,4 +217,4 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
209 217
210 label = new QLabel(tr("Line Color"), color_box); 218 label = new QLabel(tr("Line Color"), color_grid);
211 keycolor_lines_button = new QPushButton(color_box); 219 keycolor_lines_button = new QPushButton(color_grid);
212 connect(keycolor_lines_button, SIGNAL(clicked()), SLOT(keyColorLinesClicked())); 220 connect(keycolor_lines_button, SIGNAL(clicked()), SLOT(keyColorLinesClicked()));
@@ -217,4 +225,4 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
217 225
218 label = new QLabel(tr("Text Color"), color_box); 226 label = new QLabel(tr("Text Color"), color_grid);
219 textcolor_button = new QPushButton(color_box); 227 textcolor_button = new QPushButton(color_grid);
220 connect(textcolor_button, SIGNAL(clicked()), SLOT(textColorClicked())); 228 connect(textcolor_button, SIGNAL(clicked()), SLOT(textColorClicked()));
@@ -224,9 +232,12 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
224 232
225 label = new QLabel("", color_box); // a spacer so the above buttons dont expand 233 label = new QLabel("", color_grid); // a spacer so the above buttons dont expand
226 label->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); 234 label->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
227} 235 /* FIXME: hacked spacer height */
236 QSpacerItem *spacer = new QSpacerItem(0, 300, QSizePolicy::Expanding, QSizePolicy::Maximum);
228 237
229ConfigDlg::~ConfigDlg() 238 color_lay->addWidget(color_grid, 0, 0);
230{ 239 color_lay->addItem(spacer);
231 emit reloadSw(); 240
241 tabs->addTab(color_box, tr("Colors"));
242 base_lay->addWidget(tabs);
232} 243}
@@ -250,3 +261,3 @@ QStringList ConfigDlg::loadSw()
250 /* Clear non existents entries */ 261 /* Clear non existents entries */
251 QStringList s_copy = s_maps; 262 QStringList s_copy(s_maps);
252 for (uint i = 0; i < s_copy.count(); ++i) { 263 for (uint i = 0; i < s_copy.count(); ++i) {
@@ -274,2 +285,40 @@ QStringList ConfigDlg::loadSw()
274 285
286void ConfigDlg::accept()
287{
288 /* Writing all stuffs to config */
289 Config *config = new Config("multikey");
290 config->setGroup("general");
291 config->writeEntry("usePickboard", pick_button->isChecked()); // default closed
292 config->writeEntry("useRepeat", repeat_button->isChecked()); // default closed
293
294 config->setGroup("keymaps");
295 config->writeEntry("sw", sw_maps, QChar('|'));
296 config->writeEntry("maps", custom_maps, QChar('|'));
297 delete config;
298
299 int index = keymaps->currentItem();
300 if (index == 0) {
301
302 remove_button->setDisabled(true);
303 emit setMapToDefault();
304 }
305 else if (default_maps.find(sw_maps[index-1]) != default_maps.end()) {
306
307 remove_button->setDisabled(true);
308 emit setMapToFile(QPEApplication::qpeDir() + "share/multikey/" + sw_maps[index - 1]);
309
310 } else {
311
312 remove_button->setEnabled(true);
313 emit setMapToFile(sw_maps[index - 1]);
314 }
315
316 emit pickboardToggled(pick_button->isChecked());
317 emit repeatToggled(repeat_button->isChecked());
318 emit reloadSw();
319
320 QDialog::accept();
321 emit configDlgClosed();
322}
323
275void ConfigDlg::moveSelectedUp() 324void ConfigDlg::moveSelectedUp()
@@ -287,6 +336,2 @@ void ConfigDlg::moveSelectedUp()
287 keymaps->setCurrentItem(i-1); 336 keymaps->setCurrentItem(i-1);
288
289 Config config("multikey");
290 config.setGroup("keymaps");
291 config.writeEntry("sw", sw_maps, QChar('|'));
292 } 337 }
@@ -307,6 +352,2 @@ void ConfigDlg::moveSelectedDown()
307 keymaps->setCurrentItem(i+1); 352 keymaps->setCurrentItem(i+1);
308
309 Config config("multikey");
310 config.setGroup("keymaps");
311 config.writeEntry("sw", sw_maps, QChar('|'));
312 } 353 }
@@ -314,20 +355,2 @@ void ConfigDlg::moveSelectedDown()
314 355
315void ConfigDlg::pickTog() {
316
317 Config config ("multikey");
318 config.setGroup ("general");
319 config.writeEntry ("usePickboard", pick_button->isChecked()); // default closed
320
321 emit pickboardToggled(pick_button->isChecked());
322}
323
324void ConfigDlg::repeatTog() {
325
326 Config config ("multikey");
327 config.setGroup ("general");
328 config.writeEntry ("useRepeat", repeat_button->isChecked()); // default closed
329
330 emit repeatToggled(repeat_button->isChecked());
331}
332
333void ConfigDlg::closeEvent(QCloseEvent *) { 356void ConfigDlg::closeEvent(QCloseEvent *) {
@@ -338,11 +361,2 @@ void ConfigDlg::closeEvent(QCloseEvent *) {
338 361
339// ConfigDlg::setMap {{{1
340
341/*
342 * the index is kinda screwy, because in the config file, index 0 is just the
343 * first element in the QStringList, but here it's the "Current Language"
344 * listItem. therefor you have to minus one to the index before you access it.
345 *
346 */
347
348void ConfigDlg::setMap(int index) { 362void ConfigDlg::setMap(int index) {
@@ -350,15 +364,8 @@ void ConfigDlg::setMap(int index) {
350 if (index == 0) { 364 if (index == 0) {
351
352 remove_button->setDisabled(true); 365 remove_button->setDisabled(true);
353 emit setMapToDefault();
354 } 366 }
355 else if (default_maps.find(sw_maps[index-1]) != default_maps.end()) { 367 else if (default_maps.find(sw_maps[index-1]) != default_maps.end()) {
356
357 remove_button->setDisabled(true); 368 remove_button->setDisabled(true);
358 emit setMapToFile(QPEApplication::qpeDir() + "share/multikey/" + sw_maps[index - 1]);
359
360 } else { 369 } else {
361
362 remove_button->setEnabled(true); 370 remove_button->setEnabled(true);
363 emit setMapToFile(sw_maps[index - 1]);
364 } 371 }
@@ -403,8 +410,2 @@ void ConfigDlg::addMap() {
403 keymaps->setSelected(keymaps->count() - 1, true); 410 keymaps->setSelected(keymaps->count() - 1, true);
404
405
406 config.writeEntry("maps", maps, QChar('|'));
407 config.writeEntry("sw", sw_maps, QChar('|'));
408 config.writeEntry("current", map);
409
410} 411}
@@ -421,8 +422,2 @@ void ConfigDlg::removeMap() {
421 sw_maps.remove(sw_maps.at(keymaps->currentItem())); 422 sw_maps.remove(sw_maps.at(keymaps->currentItem()));
422
423 // write the changes
424 Config config ("multikey");
425 config.setGroup("keymaps");
426 config.writeEntry("maps", custom_maps, QChar('|'));
427 config.writeEntry("sw", sw_maps, QChar('|'));
428} 423}
diff --git a/inputmethods/multikey/configdlg.h b/inputmethods/multikey/configdlg.h
index ea157c5..91ae429 100644
--- a/inputmethods/multikey/configdlg.h
+++ b/inputmethods/multikey/configdlg.h
@@ -1,3 +1,3 @@
1#include <qpe/qpeapplication.h> 1#include <qpe/qpeapplication.h>
2#include <qtabwidget.h> 2#include <qdialog.h>
3#include <qcheckbox.h> 3#include <qcheckbox.h>
@@ -9,3 +9,3 @@
9 9
10class ConfigDlg : public QTabWidget 10class ConfigDlg : public QDialog
11{ 11{
@@ -15,3 +15,2 @@ public:
15 ConfigDlg (); 15 ConfigDlg ();
16 ~ConfigDlg ();
17 static QStringList ConfigDlg::loadSw(); 16 static QStringList ConfigDlg::loadSw();
@@ -27,2 +26,5 @@ signals:
27 26
27protected:
28 virtual void accept();
29
28protected slots: 30protected slots:
@@ -32,4 +34,2 @@ protected slots:
32private slots: 34private slots:
33 void pickTog();
34 void repeatTog();
35 void setMap(int index); 35 void setMap(int index);
@@ -39,3 +39,2 @@ private slots:
39 39
40
41 // all those required slots for the color push buttons 40 // all those required slots for the color push buttons
@@ -53,3 +52,2 @@ private:
53 52
54
55 QStringList default_maps; // the maps in your share/multikey/ dir 53 QStringList default_maps; // the maps in your share/multikey/ dir
diff --git a/share/multikey/ru.keymap b/share/multikey/ru.keymap
new file mode 100644
index 0000000..8cda846
--- a/dev/null
+++ b/share/multikey/ru.keymap
@@ -0,0 +1,255 @@
1# Created by Anton Kachalov (mouse@altlinux.ru)
2title = Russian
3sw = RU
4
51 0x1000 0 2 # and you can write whatever you want after the last element
6
7
8 "9 9 2 1"
9 ". c None"
10 "a c #000000"
11 "........."
12 "........."
13 ".aa.aa.aa"
14 ".a..a..a."
15 ".aa.aa.a."
16 ".a...a.a."
17 ".aa.aa.aa"
18 "........."
19 "........."
20
21 1 0 0x0451 2 # £
221 0 0x31 2 # 1
23 1 0 0x32 2# 2
241 0 0x33 2 # 3
251 0 0x34 2 # 4
261 0 0x35 2 # 5
271 0 0x36 2 # 6
281 0 0x37 2 # 7
291 0 0x38 2 # 8
301 0 0x39 2 # 9
31 1 0 0x30 2# 0
32 1 0 0x2d 2# -
33 1 0 0x3d 2# =
341 0x1003 0 2
35
36 "9 9 2 1"
37 ". c None"
38 "a c #000000"
39 "........."
40 "........."
41 "...a....."
42 "..aa....."
43 ".aaaaaaaa"
44 "..aa....."
45 "...a....."
46 "........."
47 "........."
48
49
502 0x1001 0x9 3 # tab char, but why doesnt this work...?
51
52
53 "11 9 2 1"
54 ". c None"
55 "a c #000000"
56 "..........."
57 "..........."
58 ".....a..a.."
59 ".....aa.a.."
60 ".aaaaaaaa.."
61 ".....aa.a.."
62 ".....a..a.."
63 "..........."
64 "..........."
652 0 0x0439 2 # Ê
662 0 0x0446 2 # Ã
672 0 0x0443 2 # Õ
682 0 0x043a 2 # Ë
692 0 0x0435 2 # Å
702 0 0x043d 2 # Î
712 0 0x0433 2 # Ç
722 0 0x0448 2 # Û
732 0 0x0449 2 # Ý
742 0 0x0437 2 # Ú
752 0 0x0445 2 # È
762 0 0x044a 2 # ß
772 0 0x2f 4 # /
78
793 0x1024 0 4
80 "17 7 2 1"
81 " c None"
82 ". c #000000"
83 " "
84 " .. . .. .. "
85 " . . . . . . "
86 " . ... .. . "
87 " . . . . . "
88 " .. . . . .. "
89 " "
903 0 0x0444 2 # Æ
913 0 0x044b 2 # Ù
923 0 0x0432 2 # ×
933 0 0x0430 2 # Á
943 0 0x043f 2 # Ð
953 0 0x0440 2 # Ò
963 0 0x043e 2 # Ï
973 0 0x043b 2 # Ì
983 0 0x0434 2 # Ä
993 0 0x0436 2 # Ö
1003 0 0x044d 2 # Ü
1013 0x1004 0 5 # ENTER
102 "16 9 2 1"
103 ". c None"
104 "a c #000000"
105 "................"
106 "................"
107 "...........a...."
108 "....aa.....a...."
109 "...aa......a...."
110 "..aaaaaaaaaa...."
111 "...aa..........."
112 "....aa.........."
113 "................"
114
1154 0x1020 0 5
116 "21 7 2 1"
117 " c None"
118 ". c #000000"
119 " "
120 " .. . . ... ... ... "
121 " . . . . . . "
122 " . ... . .. . "
123 " . . . . . . "
124 " .. . . ... . . "
125 " "
1264 0 0x044f 2 # Ñ
1274 0 0x0447 2 # Þ
1284 0 0x0441 2 # Ó
1294 0 0x043c 2 # Í
1304 0 0x0438 2 # É
1314 0 0x0442 2 # Ô
1324 0 0x044c 2 # Ø
1334 0 0x0431 2 # Â
1344 0 0x044e 2 # À
1354 0 0x2e 2 # .
1364 0x1020 0 5 # SHIFT
137 "21 7 2 1"
138 " c None"
139 ". c #000000"
140 " "
141 " .. . . ... ... ... "
142 " . . . . . . "
143 " . ... . .. . "
144 " . . . . . . "
145 " .. . . ... . . "
146 " "
147
1485 0x1021 0 3
149 "17 7 2 1"
150 " c None"
151 ". c #000000"
152 " "
153 " .. ... .. . "
154 " . . . . . "
155 " . . .. . "
156 " . . . . . "
157 " .. . . . ... "
158 " "
1595 0x1023 0 3
160 "13 7 2 1"
161 " c None"
162 ". c #000000"
163 " "
164 " . . ... "
165 " . . . . "
166 " ... . . "
167 " . . . . "
168 " . . ... . "
169 " "
1705 0 0x20 16
1715 0x1023 0 3
172 "13 7 2 1"
173 " c None"
174 ". c #000000"
175 " "
176 " . . ... "
177 " . . . . "
178 " ... . . "
179 " . . . . "
180 " . . ... . "
181 " "
1825 0x1021 0 3
183 "17 7 2 1"
184 " c None"
185 ". c #000000"
186 " "
187 " .. ... .. . "
188 " . . . . . "
189 " . . .. . "
190 " . . . . . "
191 " .. . . . ... "
192 " "
1935 0x1030 0 2 #original code is F1, but i'll use it for turning on/off the config dialog
194 "13 7 2 1"
195 " c None"
196 ". c #000000"
197 " "
198 " . "
199 " ... "
200 " ..... "
201 " . "
202 " . "
203 " "
204
205# shift table
2060x0451 0x0401 # £ -> ³
2070x31 0x21 # 1 -> !
2080x32 0x22 # 2 -> "
2090x33 0x4e # 3 -> N
2100x34 0x3b # 4 -> ;
2110x35 0x25 # 5 -> %
2120x36 0x3a # 6 -> :
2130x37 0x3f # 7 -> ?
2140x38 0x2a # 8 -> *
2150x39 0x28 # 9 -> (
2160x30 0x29 # 0 -> )
2170x2d 0x5f # - -> _
2180x3d 0x2b # = -> +
219
2200x0439 0x0419 # Ê -> ê
2210x0446 0x0426 # Ã -> ã
2220x0443 0x0423 # Õ -> õ
2230x043a 0x041a # Ë -> ë
2240x0435 0x0415 # Å -> å
2250x043d 0x041d # Î -> î
2260x0433 0x0413 # Ç -> ç
2270x0448 0x0428 # Û -> û
2280x0449 0x0429 # Ý -> ý
2290x0437 0x0417 # Ú -> ú
2300x0445 0x0425 # È -> è
2310x044a 0x042a # ß -> ÿ
232
2330x0444 0x0424 # Æ -> æ
2340x044b 0x042b # Ù -> ù
2350x0432 0x0412 # × -> ÷
2360x0430 0x0410 # Á -> á
2370x043f 0x041f # Ð -> ð
2380x0440 0x0420 # Ò -> ò
2390x043e 0x041e # Ï -> ï
2400x043b 0x041b # Ì -> ì
2410x0434 0x0414 # Ä -> ä
2420x0436 0x0416 # Ö -> ö
2430x044d 0x042d # Ü -> ü
244
2450x044f 0x042f # Ñ -> ñ
2460x0447 0x0427 # Þ -> þ
2470x0441 0x0421 # Ó -> ó
2480x043c 0x041c # Í -> í
2490x0438 0x0418 # É -> é
2500x0442 0x0422 # Ô -> ô
2510x044c 0x042c # Ø -> ø
2520x0431 0x0411 # Â -> â
2530x044e 0x042e # À -> à
2540x2f 0x7c # / -> |
2550x2e 0x2c # . -> ,