summaryrefslogtreecommitdiff
authoralwin <alwin>2004-02-26 15:33:31 (UTC)
committer alwin <alwin>2004-02-26 15:33:31 (UTC)
commit42eb413737eb6e911867e1b9c0f5b6cf81c677fd (patch) (unidiff)
treeb32284f8cec0f584151f0826fd121c153fc07601
parentd26a7814b7b454583a136a78aeb7016467ec9ff8 (diff)
downloadopie-42eb413737eb6e911867e1b9c0f5b6cf81c677fd.zip
opie-42eb413737eb6e911867e1b9c0f5b6cf81c677fd.tar.gz
opie-42eb413737eb6e911867e1b9c0f5b6cf81c677fd.tar.bz2
Yeah - zkb fixed and working within OPIE.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--apps/Settings/keyz-cfg.desktop6
-rw-r--r--noncore/applets/zkbapplet/config.in4
-rw-r--r--noncore/applets/zkbapplet/zkbapplet.control9
-rw-r--r--noncore/applets/zkbapplet/zkbapplet.cpp49
-rw-r--r--noncore/applets/zkbapplet/zkbapplet.h23
-rw-r--r--noncore/applets/zkbapplet/zkbapplet.pro22
-rw-r--r--noncore/applets/zkbapplet/zkbwidget.cpp150
-rw-r--r--noncore/applets/zkbapplet/zkbwidget.h38
-rw-r--r--noncore/apps/keyz-cfg/cfgdlg.cpp131
-rw-r--r--noncore/apps/keyz-cfg/cfgdlg.h39
-rw-r--r--noncore/apps/keyz-cfg/cfgfile.cpp338
-rw-r--r--noncore/apps/keyz-cfg/cfgfile.h106
-rw-r--r--noncore/apps/keyz-cfg/config.in4
-rw-r--r--noncore/apps/keyz-cfg/keyz-cfg.control9
-rwxr-xr-xnoncore/apps/keyz-cfg/keyz-cfg.postinst3
-rw-r--r--noncore/apps/keyz-cfg/keyz-cfg.pro24
-rw-r--r--noncore/apps/keyz-cfg/main.cpp24
-rw-r--r--noncore/apps/keyz-cfg/zkb.cpp590
-rw-r--r--noncore/apps/keyz-cfg/zkb.h205
-rw-r--r--noncore/apps/keyz-cfg/zkbcfg.cpp228
-rw-r--r--noncore/apps/keyz-cfg/zkbcfg.h69
-rw-r--r--noncore/apps/keyz-cfg/zkbnames.cpp450
-rw-r--r--noncore/apps/keyz-cfg/zkbnames.h27
-rw-r--r--noncore/apps/keyz-cfg/zkbxml.cpp587
-rw-r--r--noncore/apps/keyz-cfg/zkbxml.h68
-rw-r--r--packages2
-rw-r--r--pics/keyz-cfg.pngbin0 -> 2761 bytes
-rw-r--r--pics/zkb-disabled.pngbin0 -> 818 bytes
-rw-r--r--share/zkb/bg.xml494
-rw-r--r--share/zkb/bg.xml.num506
-rw-r--r--share/zkb/common.xml2121
-rw-r--r--share/zkb/common.xml.num2115
-rw-r--r--share/zkb/de.xml617
-rw-r--r--share/zkb/de.xml.num618
-rw-r--r--share/zkb/en.xml383
-rw-r--r--share/zkb/en.xml.num383
-rw-r--r--share/zkb/latin1.xml1927
-rw-r--r--share/zkb/ru.xml542
-rw-r--r--share/zkb/zkb.xml.sample55
-rw-r--r--share/zkb/zkb.xml.sample.num55
40 files changed, 13021 insertions, 0 deletions
diff --git a/apps/Settings/keyz-cfg.desktop b/apps/Settings/keyz-cfg.desktop
new file mode 100644
index 0000000..104eb73
--- a/dev/null
+++ b/apps/Settings/keyz-cfg.desktop
@@ -0,0 +1,6 @@
1[Desktop Entry]
2Comment=keyz configurator
3Exec=keyz-cfg
4Icon=keyz-cfg
5Type=Application
6Name=keyz configurator
diff --git a/noncore/applets/zkbapplet/config.in b/noncore/applets/zkbapplet/config.in
new file mode 100644
index 0000000..19d6597
--- a/dev/null
+++ b/noncore/applets/zkbapplet/config.in
@@ -0,0 +1,4 @@
1 config ZKBAPPLET
2 boolean "zkbapplet (switch keyboard layout on the fly)"
3 default "n"
4 depends ( LIBQPE || LIBQPE-X11 ) && KEYZCFG
diff --git a/noncore/applets/zkbapplet/zkbapplet.control b/noncore/applets/zkbapplet/zkbapplet.control
new file mode 100644
index 0000000..973373f
--- a/dev/null
+++ b/noncore/applets/zkbapplet/zkbapplet.control
@@ -0,0 +1,9 @@
1Package: zkbapplet
2Files: plugins/applets/libzkbapplet.so* pics/zkb-disabled.png share/zkb/*.xml
3Priority: optional
4Section: opie/applets
5Maintainer: Rajko Albrecht <alwin@handhelds.org>
6Architecture: arm
7Depends: task-opie-minimal, key-cfg
8Description: ZKB Applet
9Version: 0.6.0-$EXTRAVERSION
diff --git a/noncore/applets/zkbapplet/zkbapplet.cpp b/noncore/applets/zkbapplet/zkbapplet.cpp
new file mode 100644
index 0000000..6c71568
--- a/dev/null
+++ b/noncore/applets/zkbapplet/zkbapplet.cpp
@@ -0,0 +1,49 @@
1#include <stdio.h>
2#include <qlabel.h>
3#include <qbutton.h>
4#include <qwindowsystem_qws.h>
5#include "zkbapplet.h"
6#include "zkbwidget.h"
7
8
9ZkbApplet::ZkbApplet() : app(0){
10}
11
12ZkbApplet::~ZkbApplet()
13{
14 if (app) delete app;
15}
16
17QWidget* ZkbApplet::applet(QWidget* parent) {
18 if (app == 0) {
19 app = new ZkbWidget(parent);
20 }
21
22 return app;
23}
24
25int ZkbApplet::position() const {
26 return 8;
27}
28
29QRESULT ZkbApplet::queryInterface(const QUuid& uuid, QUnknownInterface** iface) {
30
31 *iface = 0;
32 if (uuid == IID_QUnknown) {
33 *iface = this;
34 } else if (uuid == IID_TaskbarApplet) {
35 *iface = this;
36 } else {
37 return QS_FALSE;
38 }
39
40 if (*iface) {
41 (*iface)->addRef();
42 }
43
44 return QS_OK;
45}
46
47Q_EXPORT_INTERFACE() {
48 Q_CREATE_INSTANCE(ZkbApplet)
49}
diff --git a/noncore/applets/zkbapplet/zkbapplet.h b/noncore/applets/zkbapplet/zkbapplet.h
new file mode 100644
index 0000000..fcf03b5
--- a/dev/null
+++ b/noncore/applets/zkbapplet/zkbapplet.h
@@ -0,0 +1,23 @@
1#include "qpe/taskbarappletinterface.h"
2
3#ifndef ZKBAPPLET_H
4#define ZKBAPPLET_H
5
6class ZkbWidget;
7
8class ZkbApplet : public TaskbarAppletInterface {
9public:
10 ZkbApplet();
11 virtual ~ZkbApplet();
12
13 QRESULT queryInterface(const QUuid&, QUnknownInterface**);
14 Q_REFCOUNT
15
16 virtual QWidget* applet(QWidget*);
17 virtual int position() const;
18
19protected:
20 ZkbWidget* app;
21};
22
23#endif
diff --git a/noncore/applets/zkbapplet/zkbapplet.pro b/noncore/applets/zkbapplet/zkbapplet.pro
new file mode 100644
index 0000000..22615d0
--- a/dev/null
+++ b/noncore/applets/zkbapplet/zkbapplet.pro
@@ -0,0 +1,22 @@
1TEMPLATE = lib
2CONFIG += qt plugin warn_on release
3HEADERS = zkbapplet.h\
4 zkbwidget.h \
5 ../../apps/keyz-cfg/zkbcfg.h \
6 ../../apps/keyz-cfg/zkbnames.h \
7 ../../apps/keyz-cfg/zkbxml.h \
8 ../../apps/keyz-cfg/zkb.h
9SOURCES = zkbapplet.cpp \
10 zkbwidget.cpp \
11 ../../apps/keyz-cfg/zkbcfg.cpp \
12 ../../apps/keyz-cfg/zkbnames.cpp \
13 ../../apps/keyz-cfg/zkbxml.cpp \
14 ../../apps/keyz-cfg/zkb.cpp
15TARGET = zkbapplet
16DESTDIR = $(OPIEDIR)/plugins/applets
17INCLUDEPATH += $(OPIEDIR)/include ../../apps/keyz-cfg
18DEPENDPATH += ../$(OPIEDIR)/include
19VERSION = 0.6.0
20LIBS += -lqpe
21
22include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/applets/zkbapplet/zkbwidget.cpp b/noncore/applets/zkbapplet/zkbwidget.cpp
new file mode 100644
index 0000000..05a76e7
--- a/dev/null
+++ b/noncore/applets/zkbapplet/zkbwidget.cpp
@@ -0,0 +1,150 @@
1#include <qpe/qcopenvelope_qws.h>
2#include <qpe/applnk.h>
3#include <qpe/qpeapplication.h>
4#include <qpe/resource.h>
5#include <stdio.h>
6#include <unistd.h>
7#include "zkbwidget.h"
8#include "zkbcfg.h"
9
10ZkbWidget::ZkbWidget(QWidget* parent):QLabel(parent),keymap(0),
11 disabled(Resource::loadPixmap("zkb-disabled")) {
12
13 labels = new QPopupMenu();
14 connect(labels, SIGNAL(activated(int)), this,
15 SLOT(labelChanged(int)));
16
17 loadKeymap();
18
19 channel = new QCopChannel("QPE/zkb", this);
20 connect(channel, SIGNAL(received(const QCString&, const QByteArray&)),
21 this, SLOT(signalReceived(const QCString&, const QByteArray&)));
22 setFixedWidth ( AppLnk::smallIconSize() );
23 setFixedHeight ( AppLnk::smallIconSize() );
24}
25
26ZkbWidget::~ZkbWidget() {
27}
28
29bool ZkbWidget::loadKeymap() {
30 ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb");
31 QFontMetrics fm(font());
32
33 if (keymap != 0) {
34 delete keymap;
35 keymap = 0;
36 }
37
38 Keymap* km = new Keymap();
39
40 if (!c.load("zkb.xml", *km, "")) {
41 delete km;
42 setPixmap(disabled);
43 return false;
44 }
45
46 connect(km, SIGNAL(stateChanged(const QString&)),
47 this, SLOT(stateChanged(const QString&)));
48
49 qwsServer->setKeyboardFilter(km);
50
51 Keymap* oldkm = keymap;
52 keymap = km;
53
54 if (oldkm != 0) {
55 delete oldkm;
56 }
57
58 setText(keymap->getCurrentLabel());
59
60 labels->clear();
61 QStringList l = keymap->listLabels();
62 labels->insertItem(disabled, 0, 0);
63 int n = 1;
64 w = 0;
65 for(QStringList::Iterator it = l.begin(); it != l.end();
66 ++it, n++) {
67
68 // printf("label: %s\n", (const char*) (*it).utf8());
69
70 labels->insertItem(*it, n, n);
71 int lw = fm.width(*it);
72 if (lw > w) {
73 w = lw;
74 }
75 }
76
77 if (w == 0) {
78 hide();
79 } else {
80 show();
81 }
82 return true;
83}
84
85QSize ZkbWidget::sizeHint() const {
86 return QSize(AppLnk::smallIconSize(),AppLnk::smallIconSize());
87}
88
89void ZkbWidget::stateChanged(const QString& s) {
90 //qDebug("stateChanged: %s\n", (const char*) s.utf8());
91 setText(s);
92}
93
94void ZkbWidget::labelChanged(int id) {
95 if (id == 0) {
96 keymap->disable();
97 setPixmap(disabled);
98 return;
99 }
100
101 keymap->enable();
102
103 QStringList l = keymap->listLabels();
104 QString lbl = l[id-1];
105
106 //printf("labelChanged: %s\n", (const char*) lbl.utf8());
107 State* state = keymap->getStateByLabel(lbl);
108 if (state != 0) {
109 keymap->setCurrentState(state);
110 setText(lbl);
111 }
112}
113
114void ZkbWidget::mouseReleaseEvent(QMouseEvent*) {
115 QSize sh = labels->sizeHint();
116 QPoint p = mapToGlobal(QPoint((width()-sh.width())/2,-sh.height()));
117 labels->exec(p);
118}
119
120void ZkbWidget::signalReceived(const QCString& msg, const QByteArray& data) {
121 QDataStream stream(data, IO_ReadOnly);
122
123 if (msg == "enable()") {
124 keymap->enable();
125 } else if (msg == "disable()") {
126 keymap->disable();
127 } else if (msg == "reload()") {
128 QCopEnvelope("QPE/System", "busy()");
129 QTimer::singleShot(0, this, SLOT(reload()));
130 } else if (msg == "switch(QString)") {
131 QString lbl;
132 stream >> lbl;
133
134 if (keymap != 0) {
135 State* state = keymap->getStateByLabel(lbl);
136 if (state != 0) {
137 keymap->setCurrentState(state);
138 setText(lbl);
139 }
140 }
141 } else if (msg == "debug(QString)") {
142 QString flag;
143 stream >> flag;
144 }
145}
146
147void ZkbWidget::reload() {
148 loadKeymap();
149 QCopEnvelope("QPE/System", "notBusy()");
150}
diff --git a/noncore/applets/zkbapplet/zkbwidget.h b/noncore/applets/zkbapplet/zkbwidget.h
new file mode 100644
index 0000000..a943563
--- a/dev/null
+++ b/noncore/applets/zkbapplet/zkbwidget.h
@@ -0,0 +1,38 @@
1#ifndef ZKBWIDGET_H
2#define ZKBWIDGET_H
3
4#include <qwidget.h>
5#include <qlabel.h>
6#include <qpopupmenu.h>
7#include <qpixmap.h>
8#include <qcopchannel_qws.h>
9
10#include "zkb.h"
11
12class ZkbWidget : public QLabel {
13Q_OBJECT
14
15public:
16 ZkbWidget(QWidget* parent);
17 ~ZkbWidget();
18
19 QSize sizeHint() const;
20
21protected:
22 QLabel* label;
23 Keymap* keymap;
24 QPopupMenu* labels;
25 QCopChannel* channel;
26 int w, h;
27 QPixmap disabled;
28
29 bool loadKeymap();
30 void mouseReleaseEvent(QMouseEvent*);
31
32protected slots:
33 void stateChanged(const QString&);
34 void labelChanged(int id);
35 void signalReceived(const QCString& msg, const QByteArray& data);
36 void reload();
37};
38#endif
diff --git a/noncore/apps/keyz-cfg/cfgdlg.cpp b/noncore/apps/keyz-cfg/cfgdlg.cpp
new file mode 100644
index 0000000..863f21e
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/cfgdlg.cpp
@@ -0,0 +1,131 @@
1
2#include <qdir.h>
3#include <qpe/qpeapplication.h>
4#include <qpe/qcopenvelope_qws.h>
5#include <unistd.h>
6#include "cfgdlg.h"
7
8CfgDlg::CfgDlg(QWidget* parent, CfgFile* cf, QApplication* app):QDialog(parent), cfile(cf), application(app) {
9 setCaption(tr("keyz configurator"));
10
11 QGridLayout* gl = new QGridLayout(this, 7, 5, 5, 5);
12
13 QLabel* flabel = new QLabel("Available Keymaps", this);
14 files = new QListBox(this);
15 QPushButton* addButton = new QPushButton(">>", this); //add->setText("Add");
16 connect(addButton, SIGNAL(clicked()), this, SLOT(add()));
17 QLabel* klabel = new QLabel("Selected Keymaps", this);
18 keymaps = new QListBox(this);
19 connect(keymaps, SIGNAL(highlighted(const QString&)), this, SLOT(keymapHighlighted(const QString&)));
20 QPushButton* delButton = new QPushButton("<<", this); //del->setText("Delete");
21 connect(delButton, SIGNAL(clicked()), this, SLOT(del()));
22 QPushButton* slabelButton = new QPushButton("Set Label", this); //apply->setText("Apply");
23 connect(slabelButton, SIGNAL(clicked()), this, SLOT(setLabel()));
24 QLabel* l = new QLabel("Label", this);
25 label = new QLineEdit(this);
26 QLabel* adlabel = new QLabel("Auto Repeat Delay (ms)", this);
27 QLabel* aplabel = new QLabel("Auto Repeat Period (ms)", this);
28 ad = new QSpinBox(50, 5000, 5, this);
29 ap = new QSpinBox(0, 5000, 5, this);
30
31 //QLabel* adms = new QLabel("ms", this);
32 //QLabel* apms = new QLabel("ms", this);
33
34 //QCheckBox* enable = new QCheckBox("Enable", t);
35
36 gl->setColStretch(0, 1);
37 gl->setColStretch(1, 1);
38 gl->setColStretch(3, 1);
39 gl->setColStretch(4, 1);
40 gl->setRowStretch(3, 1);
41 gl->addMultiCellWidget(flabel, 0, 0, 0, 1);
42 gl->addMultiCellWidget(klabel, 0, 0, 3, 4);
43 gl->addMultiCellWidget(files, 1, 3, 0, 1);
44 gl->addMultiCellWidget(keymaps, 1, 3, 3, 4);
45 gl->addWidget(addButton, 1, 2);
46 gl->addWidget(delButton, 2, 2);
47
48 gl->addWidget(l, 4, 0);
49 gl->addWidget(label, 4, 1);
50 gl->addMultiCellWidget(slabelButton, 4, 4, 3, 4);
51
52 gl->addMultiCellWidget(adlabel, 5, 5, 0, 2);
53 gl->addMultiCellWidget(ad, 5, 5, 3, 4);
54 //gl->addWidget(adms, 5, 3);
55
56 gl->addMultiCellWidget(aplabel, 6, 6, 0, 2);
57 gl->addMultiCellWidget(ap, 6, 6, 3, 4);
58
59 //gl->addWidget(apms, 6, 3);
60
61 QList<CfgEntry>& e = cfile->getEntries();
62
63 for(uint i = 0; i < e.count(); i++) {
64 CfgEntry* entry = e.at(i);
65 keymaps->insertItem(entry->getFile());
66 m.insert(entry->getFile(), entry->getLabel());
67 }
68
69 QDir dir(QPEApplication::qpeDir()+"/share/zkb", "*.xml");
70 QStringList flist = dir.entryList();
71 QStringList::Iterator sit;
72 for(sit = flist.begin(); sit != flist.end(); ++sit) {
73 if (*sit != "common.xml" && *sit != "zkb.xml" && m.find(*sit) == m.end()) {
74 files->insertItem(*sit);
75 }
76 }
77
78 ad->setValue(cfile->getAutorepeatDelay());
79 ap->setValue(cfile->getAutorepeatPeriod());
80
81 //gl->addMultiCellWidget(enable, 7, 7, 0, 4);
82}
83
84CfgDlg::~CfgDlg() {
85}
86
87void CfgDlg::add() {
88 if (!files->currentText().isEmpty()) {
89 QString t = files->currentText();
90 files->removeItem(files->currentItem());
91 keymaps->insertItem(t);
92 cfile->replaceEntry(t, "");
93 m.replace(t, "");
94 }
95}
96
97void CfgDlg::del() {
98 if (!keymaps->currentText().isEmpty()) {
99 QString t = keymaps->currentText();
100 keymaps->removeItem(keymaps->currentItem());
101 cfile->deleteEntry(t);
102 files->insertItem(t);
103 m.remove(files->currentText());
104 }
105}
106
107void CfgDlg::setLabel() {
108 if (!keymaps->currentText().isEmpty()) {
109 cfile->replaceEntry(keymaps->currentText(),
110 label->text());
111 m.replace(keymaps->currentText(), label->text());
112 }
113}
114
115void CfgDlg::keymapHighlighted(const QString&text) {
116 label->setText(*m.find(text));
117}
118
119
120void CfgDlg::accept() {
121 cfile->setAutorepeatDelay(ad->value());
122 cfile->setAutorepeatPeriod(ap->value());
123
124 CfgParser p;
125 p.save(QPEApplication::qpeDir()+"/share/zkb/zkb.xml", *cfile);
126 QCopEnvelope("QPE/zkb", "reload()");
127
128 QDialog::accept();
129 parentWidget()->close(false);
130}
131
diff --git a/noncore/apps/keyz-cfg/cfgdlg.h b/noncore/apps/keyz-cfg/cfgdlg.h
new file mode 100644
index 0000000..16732ee
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/cfgdlg.h
@@ -0,0 +1,39 @@
1#include <qlabel.h>
2#include <qlistbox.h>
3#include <qpushbutton.h>
4#include <qlineedit.h>
5#include <qlayout.h>
6#include <qcheckbox.h>
7#include <qspinbox.h>
8#include <qdialog.h>
9#include <qapplication.h>
10
11#include "cfgfile.h"
12
13class CfgDlg : public QDialog {
14Q_OBJECT
15
16public:
17 CfgDlg(QWidget* parent, CfgFile* cfile, QApplication *);
18 virtual ~CfgDlg();
19
20protected:
21 CfgFile* cfile;
22 QApplication* application;
23
24 QMap<QString, QString> m;
25
26 QListBox* files;
27 QListBox* keymaps;
28 QLineEdit* label;
29 QSpinBox* ap;
30 QSpinBox* ad;
31
32 virtual void accept();
33
34protected slots:
35 void add();
36 void del();
37 void setLabel();
38 void keymapHighlighted(const QString&);
39};
diff --git a/noncore/apps/keyz-cfg/cfgfile.cpp b/noncore/apps/keyz-cfg/cfgfile.cpp
new file mode 100644
index 0000000..b0dc968
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/cfgfile.cpp
@@ -0,0 +1,338 @@
1#include <qmessagebox.h>
2#include "cfgfile.h"
3
4// CfgEntry implementation
5CfgEntry::CfgEntry() {
6}
7
8CfgEntry::CfgEntry(const QString& f, const QString& l):
9 file(f), label(l) {
10}
11
12const QString& CfgEntry::getFile() const {
13 return file;
14}
15
16void CfgEntry::setFile(const QString& f) {
17 file = f;
18}
19
20const QString& CfgEntry::getLabel() const {
21 return label;
22}
23
24void CfgEntry::setLabel(const QString& f) {
25 label = f;
26}
27
28// CfgFile implementation
29CfgFile::CfgFile():ardelay(400), arperiod(80) {
30}
31
32CfgFile::~CfgFile() {
33}
34
35QList<CfgEntry>& CfgFile::getEntries() {
36 return entries;
37}
38
39bool CfgFile::replaceEntry(const QString& file, const QString& label, int index) {
40 deleteEntry(file);
41
42 CfgEntry* entry = new CfgEntry(file, label);
43 if (index >= 0) {
44 entries.insert(index, entry);
45 } else {
46 entries.append(entry);
47 }
48
49 return true;
50}
51
52bool CfgFile::deleteEntry(const QString& file) {
53 for(int i = 0; i < (int) entries.count(); i++) {
54 CfgEntry* entry = entries.at(i);
55 if (entry->getFile() == file) {
56 entries.remove(i);
57 return true;
58 }
59 }
60 return false;
61}
62
63int CfgFile::getAutorepeatDelay() const {
64 return ardelay;
65}
66
67void CfgFile::setAutorepeatDelay(int n) {
68 ardelay = n;
69}
70
71int CfgFile::getAutorepeatPeriod() const {
72 return arperiod;
73}
74
75void CfgFile::setAutorepeatPeriod(int n) {
76 arperiod = n;
77}
78
79// CfgParser implementation
80CfgParser::CfgParser() {
81}
82
83bool CfgParser::load(QString file, CfgFile& cfg) {
84 QFile f(file);
85 QXmlInputSource is(f);
86 QXmlSimpleReader reader;
87 CfgHandler p(*this);
88
89 reader.setErrorHandler(this);
90 reader.setContentHandler(&p);
91
92 err = "";
93 ardelay = -1;
94 arperiod = -1;
95 reader.parse(is);
96
97 if (!err.isEmpty()) {
98 qDebug(err);
99 return false;
100 }
101
102 QMap<QString, QString>::Iterator fit, lit;
103 for(uint i = 0; i < includeList.count(); i++) {
104 QString file = *includeList.at(i);
105 fit = includes.find(file);
106 QString prefix = fit.data();
107 QString label = "";
108
109 qDebug("include: file=" + fit.key() + ", prefix=" + fit.data());
110 lit = labels.find(prefix+":*");
111 if (lit != labels.end()) {
112 label = lit.data();
113 }
114
115 cfg.replaceEntry(file, label);
116 }
117
118 if (ardelay != -1) {
119 cfg.setAutorepeatDelay(ardelay);
120 }
121
122 if (arperiod != -1) {
123 cfg.setAutorepeatPeriod(arperiod);
124 }
125
126 return true;
127}
128
129bool CfgParser::save(QString file, CfgFile& cfg) {
130 FILE* f = fopen((const char*) file.local8Bit(), "w");
131
132 fprintf(f, "<keymap autorepeat-delay=\"%d\" autorepeat-period=\"%d\" "
133 "author=\"keyzcfg\">\n", cfg.getAutorepeatDelay(),
134 cfg.getAutorepeatPeriod());
135
136 QList<CfgEntry>& entries = cfg.getEntries();
137 int n;
138
139 for(n=0; n < (int) entries.count(); n++) {
140 CfgEntry* entry = entries.at(n);
141 QString l = entry->getLabel();
142 if (!l.isEmpty()) {
143 fprintf(f, "\t<label name=\"%s\" state=\"km%d:*\"/>\n",
144 (const char*) l.utf8(), n);
145 }
146 }
147
148 for(n=0; n < (int) entries.count(); n++) {
149 CfgEntry* entry = entries.at(n);
150 fprintf(f, "\t<include file=\"%s\" prefix=\"km%d\"/>\n",
151 (const char*) entry->getFile().utf8(), n);
152 }
153
154 int k = n-1;
155 char* states[] = { "LShift", "LShift-Caps", "LShift-Num",
156 "LShift-Num-Caps", 0};
157
158 for(n=0; n < (int) entries.count(); n++) {
159 QString nstate = "km" + QString::number(n+1);
160 if (n == k) {
161 nstate = "km" + QString::number(0);
162 }
163
164 for(int i = 0; states[i] != 0; i++) {
165 fprintf(f, "\t<state name=\"km%d:%s\">\n",
166 n, states[i]);
167 fprintf(f, "\t\t<map keycode=\"Middle\" pressed=\"true\">\n");
168 fprintf(f, "\t\t\t<next-state name=\"%s:%s\"/>\n",
169 (const char*) nstate.utf8(), states[i]);
170 fprintf(f, "\t\t</map>\n\t</state>\n\n");
171 }
172 }
173
174 fprintf(f, "\t<state name=\"km0:Normal\" default=\"true\"/>\n");
175
176 fprintf(f, "</keymap>");
177 fclose(f);
178 return true;
179}
180
181CfgParser::~CfgParser() {
182}
183
184int CfgParser::getAutorepeatDelay() const {
185 return ardelay;
186}
187
188void CfgParser::setAutorepeatDelay(int n) {
189 ardelay = n;
190}
191
192int CfgParser::getAutorepeatPeriod() const {
193 return arperiod;
194}
195
196void CfgParser::setAutorepeatPeriod(int n) {
197 arperiod = n;
198}
199
200void CfgParser::addLabel(const QString& name, const QString& state) {
201 labels.insert(state, name);
202 labelList.append(&labels.find(state).data());
203}
204
205void CfgParser::addFile(const QString& file, const QString& prefix) {
206 includes.insert(file, prefix);
207 includeList.append(&includes.find(file).key());
208}
209
210QString CfgParser::errorString() {
211 return err;
212}
213
214bool CfgParser::warning(const QXmlParseException& e) {
215 QString tmp;
216
217 tmp.sprintf("%d: warning: %s\n", e.lineNumber(),
218 (const char*) e.message().utf8());
219
220 err += tmp;
221
222 return true;
223}
224
225bool CfgParser::error(const QXmlParseException& e) {
226 QString tmp;
227
228 tmp.sprintf("%d: error: %s\n", e.lineNumber(),
229 (const char*) e.message().utf8());
230
231 err += tmp;
232
233 return true;
234}
235
236bool CfgParser::fatalError(const QXmlParseException& e) {
237 QString tmp;
238
239 tmp.sprintf("%d: fatal error: %s\n", e.lineNumber(),
240 (const char*) e.message().utf8());
241
242 err += tmp;
243
244 return false;
245}
246
247// CfgHandler implementation
248CfgHandler::CfgHandler(CfgParser& c):cfg(c) {
249}
250
251CfgHandler::~CfgHandler() {
252}
253
254bool CfgHandler::startKeymapElement(int ard, int arp, const QString& author) {
255 if (author != "keyzcfg") {
256 bool ret;
257 ret = QMessageBox::warning(0, "keyz configurator",
258 "Your zkb.xml doesn't seem created by keyz configurator.\n"
259 "By using keyz configurator you may loose your current "
260 "configuration\n Do you want to continue\n\n",
261 "Yes", "No", 0, 0, 1);
262
263 if (ret != 0) {
264 err = "cancelled by user";
265 return false;
266 }
267 }
268
269 if (ard != -1) {
270 cfg.setAutorepeatDelay(ard);
271 }
272
273 if (arp != -1) {
274 cfg.setAutorepeatPeriod(arp);
275 }
276
277 return true;
278}
279
280bool CfgHandler::startIncludeElement(const QString& file,
281 const QString& pref) {
282
283 cfg.addFile(file, pref);
284 return true;
285}
286
287bool CfgHandler::startLabelElement(const QString& label,
288 const QString& state) {
289
290 cfg.addLabel(label, state);
291 return true;
292}
293
294bool CfgHandler::startStateElement(const QString&, const QString&, bool) {
295
296 return true;
297}
298
299bool CfgHandler::startMapElement(int, bool) {
300 return true;
301}
302
303bool CfgHandler::startEventElement(int, int, int, bool, bool) {
304 return true;
305}
306
307bool CfgHandler::startNextStateElement(const QString&) {
308 return true;
309}
310
311
312bool CfgHandler::endKeymapElement() {
313 return true;
314}
315
316bool CfgHandler::endIncludeElement() {
317 return true;
318}
319
320bool CfgHandler::endLabelElement() {
321 return true;
322}
323
324bool CfgHandler::endStateElement() {
325 return true;
326}
327
328bool CfgHandler::endMapElement() {
329 return true;
330}
331
332bool CfgHandler::endEventElement() {
333 return true;
334}
335
336bool CfgHandler::endNextStateElement() {
337 return true;
338}
diff --git a/noncore/apps/keyz-cfg/cfgfile.h b/noncore/apps/keyz-cfg/cfgfile.h
new file mode 100644
index 0000000..9759900
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/cfgfile.h
@@ -0,0 +1,106 @@
1#ifndef CFGFILE_H
2#define CFGFILE_H
3
4#include <qlist.h>
5#include "zkbxml.h"
6
7class CfgEntry {
8public:
9 CfgEntry();
10 CfgEntry(const QString& file, const QString& label);
11
12 const QString& getFile() const;
13 void setFile(const QString& f);
14 const QString& getLabel() const;
15 void setLabel(const QString& l);
16
17protected:
18 QString file;
19 QString label;
20};
21
22class CfgFile {
23public:
24 CfgFile();
25 ~CfgFile();
26
27 QList<CfgEntry>& getEntries();
28 bool replaceEntry(const QString& file, const QString& label,
29 int index = -1);
30 bool deleteEntry(const QString& file);
31
32 int getAutorepeatDelay() const;
33 void setAutorepeatDelay(int);
34 int getAutorepeatPeriod() const;
35 void setAutorepeatPeriod(int);
36
37protected:
38 QList<CfgEntry> entries;
39 int ardelay;
40 int arperiod;
41};
42
43class CfgParser : public QXmlErrorHandler {
44public:
45 CfgParser();
46 virtual ~CfgParser();
47
48 bool load(QString file, CfgFile& cfg);
49 bool save(QString file, CfgFile& cfg);
50
51 void addLabel(const QString& name, const QString& state);
52 void addFile(const QString& file, const QString& prefix);
53
54 int getAutorepeatDelay() const;
55 void setAutorepeatDelay(int);
56 int getAutorepeatPeriod() const;
57 void setAutorepeatPeriod(int);
58
59 virtual bool warning(const QXmlParseException& e);
60 virtual bool error(const QXmlParseException& e);
61 virtual bool fatalError(const QXmlParseException& e);
62 virtual QString errorString();
63
64 QString getError();
65
66protected:
67 QString err;
68 QMap<QString, QString> labels;
69 QMap<QString, QString> includes;
70 QList<QString> labelList;
71 QList<QString> includeList;
72 int ardelay;
73 int arperiod;
74};
75
76class CfgHandler : public ZkbXmlHandler {
77public:
78 CfgHandler(CfgParser &);
79 virtual ~CfgHandler();
80
81protected:
82 CfgParser& cfg;
83
84 virtual bool startKeymapElement(int ardelay, int arperiod,
85 const QString& author);
86 virtual bool startIncludeElement(const QString& file,
87 const QString& prfix);
88 virtual bool startLabelElement(const QString& label,
89 const QString& state);
90 virtual bool startStateElement(const QString& name,
91 const QString& parent, bool dflt);
92 virtual bool startMapElement(int key, bool pressed);
93 virtual bool startEventElement(int keycode, int unicode, int modifiers,
94 bool pressed, bool autorepeat);
95 virtual bool startNextStateElement(const QString& state);
96
97 virtual bool endKeymapElement();
98 virtual bool endIncludeElement();
99 virtual bool endLabelElement();
100 virtual bool endStateElement();
101 virtual bool endMapElement();
102 virtual bool endEventElement();
103 virtual bool endNextStateElement();
104};
105
106#endif
diff --git a/noncore/apps/keyz-cfg/config.in b/noncore/apps/keyz-cfg/config.in
new file mode 100644
index 0000000..319bc1e
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/config.in
@@ -0,0 +1,4 @@
1 config KEYZCFG
2 boolean "keyz-cfg (configuration tool for keyz applett)"
3 default "n"
4 depends ( LIBQPE || LIBQPE-X11 )
diff --git a/noncore/apps/keyz-cfg/keyz-cfg.control b/noncore/apps/keyz-cfg/keyz-cfg.control
new file mode 100644
index 0000000..2a74b33
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/keyz-cfg.control
@@ -0,0 +1,9 @@
1Package: keyz-cfg
2Files: bin/keyz-cfg apps/Settings/key-cfg.desktop pics/keyz-cfg.png share/zkb/zkb.xml.sample
3Priority: optional
4Section: opie/applications
5Maintainer: Rajko Albrecht <alwin@handhelds.org>
6Architecture: arm
7Depends: task-opie-minimal
8Description: Keyz configuration program
9Version: 0.6.0-$EXTRAVERSION
diff --git a/noncore/apps/keyz-cfg/keyz-cfg.postinst b/noncore/apps/keyz-cfg/keyz-cfg.postinst
new file mode 100755
index 0000000..c7d1cf4
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/keyz-cfg.postinst
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3test -f $OPIEDIR/share/zkb/zkb.xml || cp $OPIEDIR/share/zkb/zkb.xml.sample $OPIEDIR/share/zkb/zkb.xml
diff --git a/noncore/apps/keyz-cfg/keyz-cfg.pro b/noncore/apps/keyz-cfg/keyz-cfg.pro
new file mode 100644
index 0000000..cbaf718
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/keyz-cfg.pro
@@ -0,0 +1,24 @@
1TEMPLATE = app
2DESTDIR = $(OPIEDIR)/bin
3 CONFIG = qt warn_on release
4 HEADERS = zkb.h \
5 zkbcfg.h \
6 zkbnames.h \
7 zkbxml.h \
8 cfgdlg.h \
9 cfgfile.h
10
11 SOURCES = main.cpp \
12 cfgdlg.cpp \
13 cfgfile.cpp \
14 zkb.cpp \
15 zkbcfg.cpp \
16 zkbnames.cpp \
17 zkbxml.cpp
18
19INCLUDEPATH += $(OPIEDIR)/include
20DEPENDPATH += $(OPIEDIR)/include
21 LIBS += -lqpe
22 TARGET = keyz-cfg
23
24include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/keyz-cfg/main.cpp b/noncore/apps/keyz-cfg/main.cpp
new file mode 100644
index 0000000..264db20
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/main.cpp
@@ -0,0 +1,24 @@
1#include <stdio.h>
2#include <qpe/qpeapplication.h>
3#include <qpe/qcopenvelope_qws.h>
4#include <qmainwindow.h>
5
6#include "cfgfile.h"
7#include "cfgdlg.h"
8
9int main( int argc, char **argv ) {
10 QPEApplication app(argc, argv);
11 CfgFile cfile;
12 CfgParser cp;
13 cp.load(QPEApplication::qpeDir()+"/share/zkb/zkb.xml", cfile);
14
15 QMainWindow m;
16 CfgDlg c(&m, &cfile, &app);
17 app.showMainWidget(&m);
18 m.hide();
19 c.showMaximized();
20
21 int ret = app.exec();
22
23 return ret;
24}
diff --git a/noncore/apps/keyz-cfg/zkb.cpp b/noncore/apps/keyz-cfg/zkb.cpp
new file mode 100644
index 0000000..abe1f5f
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkb.cpp
@@ -0,0 +1,590 @@
1#include <qnamespace.h>
2#include "zkb.h"
3#include <stdio.h>
4
5// Implementation of Action class
6Action::Action():state(0), keycode(0), unicode(0), flags(0) {
7}
8
9Action::Action(State* s, ushort kc, ushort uni, int f):
10 state(s), keycode(kc), unicode(uni), flags(f) {
11}
12
13Action::~Action() {
14}
15
16State* Action::getState() const {
17 return state;
18}
19
20void Action::setState(State* s) {
21 state = s;
22 setDefined(true);
23}
24
25bool Action::hasEvent() const {
26 return flags & Event;
27}
28
29void Action::setEvent(bool e) {
30 flags = (flags & ~Event) | ((e) ? Event : 0);
31
32 if (e) {
33 setDefined(true);
34 } else {
35 if (state == 0) {
36 setDefined(false);
37 }
38 }
39}
40
41bool Action::isDefined() const {
42 return flags & Defined;
43}
44
45void Action::setDefined(bool d) {
46 flags = (flags & ~Defined) | ((d) ? Defined : 0);
47}
48
49int Action::getKeycode() const {
50 return keycode;
51}
52
53void Action::setKeycode(int c) {
54 keycode = (ushort) c;
55 setEvent(true);
56}
57
58int Action::getUnicode() const {
59 return unicode;
60}
61
62void Action::setUnicode(int u) {
63 unicode = (ushort) u;
64 setEvent(true);
65}
66
67int Action::getModifiers() const {
68 int ret = 0;
69 if (flags & Shift_Mod) {
70 ret |= Qt::ShiftButton;
71 }
72
73 if (flags & Ctrl_Mod) {
74 ret |= Qt::ControlButton;
75 }
76
77 if (flags & Alt_Mod) {
78 ret |= Qt::AltButton;
79 }
80
81 if (flags & Keypad_Mod) {
82 ret |= Qt::Keypad;
83 }
84
85 return ret;
86}
87
88void Action::setModifiers(int m) {
89 int n = 0;
90
91 if (m & Qt::ShiftButton) {
92 n |= Shift_Mod;
93 }
94
95 if (m & Qt::ControlButton) {
96 n |= Ctrl_Mod;
97 }
98
99 if (m & Qt::AltButton) {
100 n |= Alt_Mod;
101 }
102
103 if (m & Qt::Keypad) {
104 n |= Keypad_Mod;
105 }
106
107 flags = flags & ~Mod_Bits | n;
108 setEvent(true);
109}
110
111bool Action::isPressed() const {
112 return (flags & Press) != 0;
113}
114
115void Action::setPressed(bool p) {
116 flags = (flags & ~Press) | ((p) ? Press : 0);
117 setEvent(true);
118}
119
120bool Action::isAutorepeat() const {
121 return (flags & Autorepeat) != 0;
122}
123
124void Action::setAutorepeat(bool p) {
125 flags = (flags & ~Autorepeat) | ((p) ? Autorepeat : 0);
126 setEvent(true);
127}
128
129// Implementation of State class
130const short State::x1[] = { /* from 0x20 to 0x5f */
131 31, 0, 28, 3, 5, 6, 9, 28, /* 0x20 - 0x27 */
132 11, 26, 10, 13, 26, 1, 29, 27, /* 0x28 - 0x2f */
133 15, 16, 22, 4, 17, 19, 24, 20, /* 0x30 - 0x37 */
134 8, 14, 29, 26, 29, 12, 32, 27, /* 0x38 - 0x3f */
135 18, 0, 1, 2, 3, 4, 5, 6, /* 0x40 - 0x47 */
136 7, 8, 9, 10, 11, 12, 13, 14, /* 0x48 - 0x4f */
137 15, 16, 17, 18, 19, 20, 21, 22, /* 0x50 - 0x57 */
138 23, 24, 25, 30, -1, 26, 28, 7, /* 0x58 - 0x5f */
139 31, -1, -1, -1, -1, -1, -1, -1, /* 0x60 - 0x67 */
140 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x68 - 0x6f */
141 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70 - 0x77 */
142 -1, -1, -1, 29, 31, 32, 32, 28, /* 0x78 - 0x7f */
143};
144
145const short State::x2[] = { /* from 0x1000 to 0x1057*/
146 42, 36, -1, 30, 32, -1, -1, -1, /* 0x1000 - 0x1007 */
147 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1008 - 0x100f */
148 -1, -1, 44, 45, 46, 47, -1, -1, /* 0x1010 - 0x1017 */
149 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1018 - 0x101f */
150 33, 35, 34, -1, 36, 27, -1, -1, /* 0x1020 - 0x1027 */
151 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1028 - 0x102f */
152 -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1030 - 0x1037 */
153 37, 38, 40, 39, 41, -1, -1, -1, /* 0x1038 - 0x103f */
154 -1, -1, -1, -1, -1, 35, -1, -1, /* 0x1040 - 0x1047 */
155 -1, -1, -1, -1, -1, 48, -1, -1, /* 0x1048 - 0x104f */
156 43, 49, 50, -1, -1, -1, -1, -1, /* 0x1050 - 0x1057 */
157};
158
159State::State(State* p):parent(p), keys(0) {
160 keys = new Action[Key_Max * 2 + 1];
161}
162
163State::State(const State& s) {
164 parent = s.parent;
165 keys = new Action[Key_Max * 2 + 1];
166 memcpy(keys, s.keys, sizeof(Action) * (Key_Max * 2 + 1));
167}
168
169State::~State() {
170 if (keys!=0) {
171 delete [] keys;
172 }
173}
174
175Action* State::get(int keycode, bool pressed, bool follow) const {
176 Action* ret = 0;
177 int n = translateKeycode(keycode);
178
179 if (n != -1 && keys != 0) {
180 if (pressed) {
181 n += Key_Max;
182 }
183 ret = &keys[n];
184 }
185
186 if (ret==0 || !ret->isDefined()) {
187 if (follow && parent!=0) {
188 ret = parent->get(keycode, pressed, follow);
189 }
190 }
191
192 return ret;
193}
194
195bool State::set(int keycode, bool pressed, Action& action) {
196 int n = translateKeycode(keycode);
197
198 if (n==-1 || keys==0) {
199 return false;
200 }
201
202 if (pressed) {
203 n += Key_Max + 1;
204 }
205
206 keys[n] = action;
207 return true;
208}
209
210State* State::getParent() const {
211 return parent;
212}
213
214void State::setParent(State* s) {
215 parent = s;
216}
217
218int State::translateKeycode(int keycode) const {
219 if (keycode < 0x20) {
220 return -1;
221 }
222
223 if (keycode < 0x80) {
224 return x1[keycode - 0x20];
225 }
226
227 if (keycode < 0x1000) {
228 return -1;
229 }
230
231 if (keycode < 0x1057) {
232 return x2[keycode - 0x1000];
233 }
234
235 return -1;
236}
237
238// Implementation of Keymap class
239Keymap::Keymap():enabled(true), currentState(0), autoRepeatAction(0), repeater(this) {
240 repeatDelay=400;
241 repeatPeriod=80;
242 connect(&repeater, SIGNAL(timeout()), this, SLOT(autoRepeat()));
243}
244
245Keymap::~Keymap() {
246 QMap<QString, State*>::Iterator it;
247 for(it = states.begin(); it != states.end(); ++it) {
248 delete it.data();
249 }
250 states.clear();
251}
252
253bool Keymap::filter(int unicode, int keycode, int modifiers,
254 bool isPress, bool autoRepeat) {
255
256 qDebug("filter: >>> unicode=%x, keycode=%x, modifiers=%x, "
257 "ispressed=%x\n", unicode, keycode, modifiers, isPress);
258
259 if (!enabled) {
260 return false;
261 }
262
263 // the second check is workaround to make suspend work if
264 // the user pressed it right after he did resume. for some
265 // reason the event sent by qt has autoRepeat true in this
266 // case
267 if (autoRepeat && keycode != 4177) {
268 return true;
269 }
270
271 (void) unicode; (void) modifiers;
272
273 Action* action = currentState->get(keycode, isPress, true);
274 if (action==0 || !action->isDefined()) {
275 return true;
276 }
277
278 if (action->hasEvent()) {
279 qDebug("filter:<<< unicode=%x, keycode=%x, modifiers=%x, "
280 "ispressed=%x\n", action->getUnicode(),
281 action->getKeycode(), action->getModifiers(),
282 action->isPressed());
283
284 QWSServer::sendKeyEvent(action->getUnicode(),
285 action->getKeycode(), action->getModifiers(),
286 action->isPressed(), false);
287 }
288
289 if (action->isAutorepeat()) {
290 autoRepeatAction = action;
291 repeater.start(repeatDelay, TRUE);
292 } else {
293 autoRepeatAction = 0;
294 }
295
296 State* nstate = action->getState();
297 if (nstate != 0) {
298 setCurrentState(nstate);
299 QString lbl = getCurrentLabel();
300 if (!lbl.isEmpty()) {
301 emit stateChanged(lbl);
302 }
303 }
304
305
306 return true;
307}
308
309void Keymap::enable() {
310 enabled = true;
311}
312
313void Keymap::disable() {
314 enabled = false;
315}
316
317QStringList Keymap::listStates() {
318 QStringList ret;
319
320 QMap<QString, State*>::Iterator it;
321 for(it = states.begin(); it != states.end(); ++it) {
322 ret.append(it.key());
323 }
324
325 return ret;
326}
327
328State* Keymap::getStateByName(const QString& name) {
329 QMap<QString, State*>::Iterator it = states.find(name);
330
331 if (it == states.end()) {
332 return 0;
333 }
334
335 return it.data();
336}
337
338QStringList Keymap::listLabels() {
339 QStringList ret;
340
341 for(uint i = 0; i < labelList.count(); i++) {
342 ret.append(*labelList.at(i));
343 }
344
345 return ret;
346}
347
348State* Keymap::getStateByLabel(const QString& label) {
349 QMap<QString, QString>::Iterator lit = labels.find(label);
350 State* state = 0;
351
352 if (lit == labels.end()) {
353 return 0;
354 }
355
356 QString name = lit.data();
357
358 int n = name.find(":*");
359 if (n>=0 && n==(int)(name.length()-2)) {
360 name=name.left(name.length() - 1);
361
362 n = currentStateName.findRev(":");
363 if (n >= 0) {
364 name += currentStateName.mid(n+1);
365 }
366 }
367
368 //qDebug("look for: %s\n", (const char*) name.utf8());
369 QMap<QString, State*>::Iterator sit = states.find(name);
370 if (sit != states.end()) {
371 state = sit.data();
372 }
373
374 return state;
375}
376
377bool Keymap::addState(const QString& name, State* state) {
378 if (states.find(name) != states.end()) {
379 return false;
380 }
381
382 states.insert(name, state);
383 lsmapInSync = false;
384
385 if (currentState == 0) {
386 setCurrentState(state);
387 }
388
389 return true;
390}
391
392State* Keymap::getCurrentState() const {
393 return currentState;
394}
395
396QString Keymap::getCurrentLabel() {
397 return currentLabel;
398}
399
400bool Keymap::setCurrentState(State* state) {
401 QMap<QString, State*>::Iterator it;
402 for(it = states.begin(); it != states.end(); ++it) {
403 State* s = it.data();
404 if (s == state) {
405 currentState = s;
406 currentStateName = it.key();
407
408 qDebug("state changed: %s\n", (const char*)
409 currentStateName.utf8());
410
411 if (!lsmapInSync) {
412 generateLabelStateMaps();
413 }
414
415 QMap<State*, QString>::Iterator tit;
416 tit = stateLabelMap.find(state);
417 if (tit != stateLabelMap.end()) {
418 currentLabel = tit.data();
419 } else {
420 // qDebug("no label for: " + currentStateName + "\n");
421 currentLabel = "";
422 }
423
424 return true;
425 }
426 }
427
428 return false;
429}
430
431bool Keymap::removeState(const QString& name, bool force) {
432 QMap<QString, State*>::Iterator it = states.find(name);
433
434 if (it == states.end()) {
435 return false;
436 }
437
438 State* state = it.data();
439 QList<Action> acts = findStateUsage(state);
440
441 if (!acts.isEmpty()) {
442 if (!force) {
443 return false;
444 } else {
445 for(Action* a = acts.first(); a != 0; a = acts.next()) {
446 a->setState(0);
447 }
448 }
449 }
450
451 if (state == currentState) {
452 if (states.begin() != states.end()) {
453 setCurrentState(states.begin().data());
454 }
455 }
456
457 states.remove(it);
458 delete state;
459
460 lsmapInSync = false;
461
462 return true;
463}
464
465void Keymap::autoRepeat() {
466 if (autoRepeatAction != 0) {
467 qDebug("filter:<<< unicode=%x, keycode=%x, modifiers=%x, "
468 "ispressed=%x\n", autoRepeatAction->getUnicode(),
469 autoRepeatAction->getKeycode(),
470 autoRepeatAction->getModifiers(),
471 autoRepeatAction->isPressed());
472
473 QWSServer::sendKeyEvent(autoRepeatAction->getUnicode(),
474 autoRepeatAction->getKeycode(),
475 autoRepeatAction->getModifiers(),
476 autoRepeatAction->isPressed(), true);
477 }
478
479 repeater.start(repeatPeriod, TRUE);
480}
481
482bool Keymap::addLabel(const QString& label, const QString& state, int index) {
483 if (labels.find(label) != labels.end()) {
484 return false;
485 }
486
487 labels.insert(label, state);
488 const QString& l = labels.find(label).key();
489 if (index == -1) {
490 labelList.append(l);
491 } else {
492 labelList.insert(labelList.at(index), l);
493 }
494
495 lsmapInSync = false;
496
497 return true;
498}
499
500bool Keymap::removeLabel(const QString& label) {
501
502 if (labels.find(label) == labels.end()) {
503 return false;
504 }
505
506 labels.remove(label);
507 labelList.remove(label);
508 lsmapInSync = false;
509
510 if (label == currentLabel) {
511 currentLabel = "";
512 }
513
514 return true;
515}
516
517int Keymap::getAutorepeatDelay() const {
518 return repeatDelay;
519}
520
521void Keymap::setAutorepeatDelay(int n) {
522 repeatDelay = n;
523}
524
525int Keymap::getAutorepeatPeriod() const {
526 return repeatPeriod;
527}
528
529void Keymap::setAutorepeatPeriod(int n) {
530 repeatPeriod = n;
531}
532
533QList<Action> Keymap::findStateUsage(State* s) {
534 QList<Action> ret;
535
536 QMap<QString, State*>::Iterator it;
537 for(it = states.begin(); it != states.end(); ++it) {
538 State* state = it.data();
539
540 for(int i = 0; i < 0x1100; i++) {
541 Action* action = state->get(i, false);
542 if (action!=0 && action->getState()==s) {
543 ret.append(action);
544 }
545
546 action = state->get(i, true);
547 if (action!=0 && action->getState()==s) {
548 ret.append(action);
549 }
550 }
551 }
552
553 return ret;
554}
555
556void Keymap::generateLabelStateMaps() {
557 stateLabelMap.clear();
558
559 QMap<QString, QString>::Iterator lit;
560 for(lit = labels.begin(); lit != labels.end(); ++lit) {
561 QString label = lit.key();
562 QString name = lit.data();
563
564 bool wc = false;
565 int n = name.find("*");
566 if (n>=0 && n==(int)(name.length()-1)) {
567 name=name.left(name.length() - 1);
568 wc = true;
569 }
570
571 QMap<QString, State*>::Iterator sit;
572 for(sit = states.begin(); sit != states.end(); ++sit) {
573 QString sname = sit.key();
574 State* state = sit.data();
575
576 if (sname.length() < name.length()) {
577 continue;
578 }
579
580 if (sname.left(name.length()) == name) {
581 if (wc || sname.length()==name.length()) {
582 stateLabelMap.insert(state, label);
583 }
584
585 }
586 }
587 }
588
589 lsmapInSync = true;
590}
diff --git a/noncore/apps/keyz-cfg/zkb.h b/noncore/apps/keyz-cfg/zkb.h
new file mode 100644
index 0000000..deff869
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkb.h
@@ -0,0 +1,205 @@
1#ifndef ZKB_H
2#define ZKB_H
3
4#include <qstring.h>
5#include <qstringlist.h>
6#include <qmap.h>
7#include <qwindowsystem_qws.h>
8#include <qkeyboard_qws.h>
9#include <qtimer.h>
10#include <stdio.h>
11
12class State;
13
14class Action {
15protected:
16 State* state;
17 ushort keycode;
18 ushort unicode;
19 int flags;
20
21 enum {
22 Shift_Mod = 1,
23 Ctrl_Mod = 2,
24 Alt_Mod = 4,
25 Keypad_Mod = 8,
26 Mod_Bits = 15,
27 Press = 16,
28 Autorepeat = 32,
29 Event = 64,
30 Defined = 128,
31 };
32
33 void setDefined(bool);
34
35public:
36 Action();
37 Action(State*, ushort, ushort, int);
38 ~Action();
39
40 State* getState() const;
41 void setState(State*);
42
43 bool hasEvent() const;
44 void setEvent(bool);
45
46 bool isDefined() const;
47
48 int getKeycode() const;
49 void setKeycode(int);
50
51 int getUnicode() const;
52 void setUnicode(int);
53
54 int getModifiers() const;
55 void setModifiers(int m);
56
57 bool isPressed() const;
58 void setPressed(bool);
59
60 bool isAutorepeat() const;
61 void setAutorepeat(bool);
62};
63
64class State {
65protected:
66 State* parent;
67 Action* keys;
68
69 enum {
70 Key_a=0,
71 Key_b=1,
72 Key_c=2,
73 Key_d=3,
74 Key_e=4,
75 Key_f=5,
76 Key_g=6,
77 Key_h=7,
78 Key_i=8,
79 Key_j=9,
80 Key_k=10,
81 Key_l=11,
82 Key_m=12,
83 Key_n=13,
84 Key_o=14,
85 Key_p=15,
86 Key_q=16,
87 Key_r=17,
88 Key_s=18,
89 Key_t=19,
90 Key_u=20,
91 Key_v=21,
92 Key_w=22,
93 Key_x=23,
94 Key_y=24,
95 Key_z=25,
96 Key_Comma=26,
97 Key_Slash=27,
98 Key_Quote=28,
99 Key_Dot=29,
100 Key_Backspace=30,
101 Key_Space=31,
102 Key_Enter=32,
103 Key_LeftShift=33,
104 Key_RightShift=34,
105 Key_Fn=35,
106 Key_Tab=36,
107 Key_Calendar=37,
108 Key_Addressbook=38,
109 Key_Home=39,
110 Key_Menu=40,
111 Key_Mail=41,
112 Key_Cancel=42,
113 Key_OK=43,
114 Key_Left=44,
115 Key_Up=45,
116 Key_Right=46,
117 Key_Down=47,
118 Key_Middle=48,
119 Key_Off=49,
120 Key_Light=50,
121
122 Key_Max=51
123 };
124
125 static const short x1[];
126 static const short x2[];
127
128 int translateKeycode(int keycode) const;
129
130public:
131 State(State* parent=0);
132 State(const State&);
133 ~State();
134
135 Action* get(int keycode, bool pressed, bool follow = false) const;
136 bool set(int keycode, bool pressed, Action& action);
137
138 State* getParent() const;
139 void setParent(State*);
140};
141
142class Keymap : public QObject, public QWSServer::KeyboardFilter {
143Q_OBJECT
144
145public:
146 Keymap();
147 virtual ~Keymap();
148
149 virtual bool filter(int unicode, int keycode, int modifiers,
150 bool isPress, bool autoRepeat);
151
152 void enable();
153 void disable();
154
155 QStringList listStates();
156 State* getStateByName(const QString& name);
157
158 QStringList listLabels();
159 State* getStateByLabel(const QString& label);
160
161 bool addState(const QString& name, State* state);
162 bool removeState(const QString& name, bool force = false);
163 bool setCurrentState(State*);
164 State* getCurrentState() const;
165 QString getCurrentLabel();
166
167 bool addLabel(const QString& label, const QString& state,
168 int index=-1);
169 bool removeLabel(const QString& label);
170
171 int getAutorepeatDelay() const;
172 void setAutorepeatDelay(int);
173
174 int getAutorepeatPeriod() const;
175 void setAutorepeatPeriod(int);
176
177signals:
178 void stateChanged(const QString& name);
179
180protected slots:
181 void autoRepeat();
182
183protected:
184 QMap<QString, State*> states;
185 QMap<QString, QString> labels;
186 QStringList labelList;
187
188 QMap<State*,QString> stateLabelMap;
189 bool lsmapInSync;
190
191 bool enabled;
192 State* currentState;
193 QString currentStateName;
194 QString currentLabel;
195 Action* autoRepeatAction;
196
197 int repeatDelay;
198 int repeatPeriod;
199 QTimer repeater;
200
201 QList<Action> findStateUsage(State* s);
202 void generateLabelStateMaps();
203};
204
205#endif
diff --git a/noncore/apps/keyz-cfg/zkbcfg.cpp b/noncore/apps/keyz-cfg/zkbcfg.cpp
new file mode 100644
index 0000000..0992b9a
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkbcfg.cpp
@@ -0,0 +1,228 @@
1#include <qfileinfo.h>
2
3#include "zkbcfg.h"
4
5
6// Implementation of XkbConfig class
7ZkbConfig::ZkbConfig(const QString& dir):path(dir) {
8}
9
10ZkbConfig::~ZkbConfig() {
11}
12
13bool ZkbConfig::load(const QString& file, Keymap& keymap, const QString& prefix) {
14 bool ret;
15 QFile f(path+"/"+file);
16 QFileInfo fi(f);
17
18 qDebug("start loading file=%s\n", (const char*) file.utf8());
19 if (includedFiles.find(fi.absFilePath()) != includedFiles.end()) {
20 return false;
21 }
22
23 includedFiles.insert(fi.absFilePath(), 1);
24 QXmlInputSource is(f);
25 QXmlSimpleReader reader;
26 ZkbHandler h(*this, keymap, prefix);
27
28 reader.setContentHandler(&h);
29 reader.setErrorHandler(this);
30 ret = reader.parse(is);
31 includedFiles.remove(fi.absFilePath());
32
33 qDebug("end loading file=%s : status=%s\n", (const char*) file.utf8(),
34 (const char*) err.utf8());
35 return ret;
36}
37
38bool ZkbConfig::warning(const QXmlParseException& e) {
39 QString tmp;
40
41 tmp.sprintf("%d: warning: %s\n", e.lineNumber(),
42 (const char*) e.message().utf8());
43
44 err += tmp;
45
46 return true;
47}
48
49bool ZkbConfig::error(const QXmlParseException& e) {
50 QString tmp;
51
52 tmp.sprintf("%d: error: %s\n", e.lineNumber(),
53 (const char*) e.message().utf8());
54
55 err += tmp;
56
57 return true;
58}
59
60bool ZkbConfig::fatalError(const QXmlParseException& e) {
61 QString tmp;
62
63 tmp.sprintf("%d: fatal error: %s\n", e.lineNumber(),
64 (const char*) e.message().utf8());
65
66 err += tmp;
67
68 return false;
69}
70
71QString ZkbConfig::errorString() {
72 return err;
73}
74
75// Implementation of ZkbHandler
76ZkbHandler::ZkbHandler(ZkbConfig& z, Keymap& k, const QString& p):zkc(z), keymap(k),
77 prefix(p), ardelay(-1), arperiod(-1), currentState(0), currentAction(0) {
78}
79
80ZkbHandler::~ZkbHandler() {
81}
82
83bool ZkbHandler::startKeymapElement(int ard, int arp, const QString&) {
84 ardelay = ard;
85 arperiod = arp;
86
87 return true;
88}
89
90bool ZkbHandler::startIncludeElement(const QString& file,
91 const QString& pref) {
92
93 QString p = prefix;
94
95 if (!pref.isNull()) {
96 p += pref + ":";
97 }
98
99
100 bool ret = zkc.load(file, keymap, p);
101 if (!ret) {
102 setError("Error including file: " + file);
103 }
104
105 return ret;
106}
107
108bool ZkbHandler::startLabelElement(const QString& label,
109 const QString& state) {
110
111 if (!keymap.addLabel(label, prefix + state)) {
112 err = "label " + label + " already defined";
113 return false;
114 }
115
116 return true;
117}
118
119bool ZkbHandler::startStateElement(const QString& name,
120 const QString& parentName, bool dflt) {
121
122 currentStateName = prefix + name;
123 currentState = keymap.getStateByName(currentStateName);
124
125 //qDebug("state name=%s\n", (const char*) currentStateName.utf8());
126
127 State* parent = 0;
128 if (!parentName.isEmpty()) {
129 QString pn = prefix + parentName;
130 parent = keymap.getStateByName(pn);
131 if (parent == 0) {
132 err = currentStateName +
133 ": undefined parent state: " + pn;
134 return false;
135 }
136 }
137
138 if (currentState == 0) {
139 currentState = new State(parent);
140 keymap.addState(currentStateName, currentState);
141 } else {
142 if (parent!=0) {
143 currentState->setParent(parent);
144 }
145 }
146
147 if (dflt) {
148 keymap.setCurrentState(currentState);
149 }
150
151 return true;
152}
153
154bool ZkbHandler::startMapElement(int keycode, bool pressed) {
155 currentAction = currentState->get(keycode, pressed);
156 if (currentAction == 0) {
157 setError("keycode " + QString::number(keycode) + " not supported");
158 return false;
159 }
160
161 currentAction->setEvent(false);
162 currentAction->setState(0);
163
164 return true;
165}
166
167bool ZkbHandler::startEventElement(int keycode, int unicode, int modifiers,
168 bool pressed, bool autorepeat) {
169
170 currentAction->setEvent(true);
171 currentAction->setKeycode(keycode);
172 currentAction->setUnicode(unicode);
173 currentAction->setModifiers(modifiers);
174 currentAction->setPressed(pressed);
175 currentAction->setAutorepeat(autorepeat);
176
177 return true;
178}
179
180bool ZkbHandler::startNextStateElement(const QString& state) {
181 State* s = keymap.getStateByName(prefix + state);
182 if (s == 0) {
183 setError("undefine state: " + prefix + state);
184 return false;
185 }
186
187 currentAction->setState(s);
188 return true;
189}
190
191
192bool ZkbHandler::endKeymapElement() {
193 if (ardelay > 0) {
194 keymap.setAutorepeatDelay(ardelay);
195 }
196
197 if (arperiod > 0) {
198 keymap.setAutorepeatPeriod(arperiod);
199 }
200
201 return true;
202}
203
204bool ZkbHandler::endIncludeElement() {
205 return true;
206}
207
208bool ZkbHandler::endLabelElement() {
209 return true;
210}
211
212bool ZkbHandler::endStateElement() {
213 currentState = 0;
214 return true;
215}
216
217bool ZkbHandler::endMapElement() {
218 currentAction = 0;
219 return true;
220}
221
222bool ZkbHandler::endEventElement() {
223 return true;
224}
225
226bool ZkbHandler::endNextStateElement() {
227 return true;
228}
diff --git a/noncore/apps/keyz-cfg/zkbcfg.h b/noncore/apps/keyz-cfg/zkbcfg.h
new file mode 100644
index 0000000..dc1ac07
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkbcfg.h
@@ -0,0 +1,69 @@
1#ifndef ZKBCFG_H
2#define ZKBCFG_H
3
4#include <qxml.h>
5#include "zkb.h"
6#include "zkbxml.h"
7
8class ZkbConfig : public QXmlErrorHandler {
9public:
10 ZkbConfig(const QString& dir);
11 virtual ~ZkbConfig();
12
13 bool load(const QString& file, Keymap& keymap, const QString& prefix);
14
15 virtual bool warning(const QXmlParseException& e);
16 virtual bool error(const QXmlParseException& e);
17 virtual bool fatalError(const QXmlParseException& e);
18 virtual QString errorString();
19
20protected:
21 QString path;
22 QMap<QString, int> includedFiles;
23 QString err;
24};
25
26class ZkbHandler : public ZkbXmlHandler {
27public:
28 ZkbHandler(ZkbConfig& zkc, Keymap& keymap, const QString& prefix);
29 virtual ~ZkbHandler();
30
31protected:
32 ZkbConfig& zkc;
33 Keymap& keymap;
34 QString prefix;
35
36 // stuff for keymap tag
37 int ardelay;
38 int arperiod;
39
40 // stuff for state tag
41 QString currentStateName;
42 State* currentState;
43
44 // stuff for map tag
45 Action* currentAction;
46
47 virtual bool startKeymapElement(int ardelay, int arperiod,
48 const QString& author);
49 virtual bool startIncludeElement(const QString& file,
50 const QString& prfix);
51 virtual bool startLabelElement(const QString& label,
52 const QString& state);
53 virtual bool startStateElement(const QString& name,
54 const QString& parent, bool dflt);
55 virtual bool startMapElement(int key, bool pressed);
56 virtual bool startEventElement(int keycode, int unicode, int modifiers,
57 bool pressed, bool autorepeat);
58 virtual bool startNextStateElement(const QString& state);
59
60 virtual bool endKeymapElement();
61 virtual bool endIncludeElement();
62 virtual bool endLabelElement();
63 virtual bool endStateElement();
64 virtual bool endMapElement();
65 virtual bool endEventElement();
66 virtual bool endNextStateElement();
67};
68
69#endif
diff --git a/noncore/apps/keyz-cfg/zkbnames.cpp b/noncore/apps/keyz-cfg/zkbnames.cpp
new file mode 100644
index 0000000..fec3a2e
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkbnames.cpp
@@ -0,0 +1,450 @@
1#ifdef USE_ZKB_NAMES
2
3#include <qmap.h>
4#include <qstring.h>
5
6#include "zkbnames.h"
7
8QString Null_String((const char*) 0);
9
10// Implementation of KeyNames
11static struct {
12 int key;
13 char *name;
14} Key_Names[] = {
15 { 32, "Space" },
16 { 39, "Apostrophe" },
17 { 44, "Comma" },
18 { 46, "Period" },
19 { 47, "Slash" },
20 { 65, "A" },
21 { 66, "B" },
22 { 67, "C" },
23 { 68, "D" },
24 { 69, "E" },
25 { 70, "F" },
26 { 71, "G" },
27 { 72, "H" },
28 { 73, "I" },
29 { 74, "J" },
30 { 75, "K" },
31 { 76, "L" },
32 { 77, "M" },
33 { 78, "N" },
34 { 79, "O" },
35 { 80, "P" },
36 { 81, "Q" },
37 { 82, "R" },
38 { 83, "S" },
39 { 84, "T" },
40 { 85, "U" },
41 { 86, "V" },
42 { 87, "W" },
43 { 88, "X" },
44 { 89, "Y" },
45 { 90, "Z" },
46 { 4096, "Cancel" },
47 { 4097, "Tab" },
48 { 4099, "Backspace" },
49 { 4100, "Enter" },
50 { 4114, "Left" },
51 { 4115, "Up" },
52 { 4116, "Right" },
53 { 4117, "Down" },
54 { 4128, "Left Shift" },
55 { 4130, "Right Shift" },
56 { 4152, "Calendar" },
57 { 4153, "Addressbook" },
58 { 4154, "Menu" },
59 { 4155, "Home" },
60 { 4156, "Mail" },
61 { 4165, "Fn" },
62 { 4173, "Middle" },
63 { 4176, "OK" },
64 { 4177, "Off" },
65 { 4178, "Light" },
66 { 0, 0 }
67};
68
69static QMap<QString, int> kn_map;
70static QMap<int, QString> kn_rmap;
71
72void init_kn_maps() {
73 int i = 0;
74 while (Key_Names[i].name != 0) {
75 int key = Key_Names[i].key;
76 QString name(Key_Names[i].name);
77
78 kn_map.insert(name, key);
79 kn_rmap.insert(key, name);
80 i++;
81 }
82}
83
84int KeyNames::find(const QString& key) {
85 if (kn_map.isEmpty()) {
86 init_kn_maps();
87 }
88
89 QMap<QString, int>::Iterator it = kn_map.find(key);
90 if (it == kn_map.end()) {
91 return -1;
92 } else {
93 return it.data();
94 }
95}
96
97const QString& KeyNames::find(int k) {
98 if (kn_map.isEmpty()) {
99 init_kn_maps();
100 }
101
102 QMap<int, QString>::Iterator it = kn_rmap.find(k);
103 if (it == kn_rmap.end()) {
104 return Null_String;
105 } else {
106 return it.data();
107 }
108}
109
110// Implementation of ModifierNames
111struct {
112 int value;
113 char* name;
114} Modifier_Names[] = {
115 { 8, "Shift" },
116 { 16, "Control" },
117 { 32, "Alt" },
118 { 0x4000, "Keypad" },
119 { 0, 0 }
120};
121
122static QMap<QString, int> mn_map;
123static QMap<int, QString> mn_rmap;
124
125void init_mn_maps() {
126 int i = 0;
127 while (Modifier_Names[i].name != 0) {
128 int value = Modifier_Names[i].value;
129 QString name(Modifier_Names[i].name);
130
131 mn_map.insert(name, value);
132 mn_rmap.insert(value, name);
133 i++;
134 }
135}
136
137int ModifierNames::find(const QString& key) {
138 if (mn_map.isEmpty()) {
139 init_mn_maps();
140 }
141
142 QMap<QString, int>::Iterator it = mn_map.find(key);
143 if (it == mn_map.end()) {
144 return -1;
145 } else {
146 return it.data();
147 }
148}
149
150const QString& ModifierNames::find(int k) {
151 if (mn_map.isEmpty()) {
152 init_mn_maps();
153 }
154
155 QMap<int, QString>::Iterator it = mn_rmap.find(k);
156 if (it == mn_rmap.end()) {
157 return Null_String;
158 } else {
159 return it.data();
160 }
161}
162
163// Implementation of KeycodeNames
164
165struct {
166 char* name;
167 int keycode;
168} Keycode_Names[] = {
169 { "Escape", 0x1000 },
170 { "Tab", 0x1001 },
171 { "Backtab", 0x1002 },
172 { "Backspace", 0x1003 },
173 { "BackSpace", 0x1003 },
174 { "Return", 0x1004 },
175 { "Enter", 0x1005 },
176 { "Insert", 0x1006 },
177 { "Delete", 0x1007 },
178 { "Pause", 0x1008 },
179 { "Print", 0x1009 },
180 { "SysReq", 0x100a },
181 { "Home", 0x1010 },
182 { "End", 0x1011 },
183 { "Left", 0x1012 },
184 { "Up", 0x1013 },
185 { "Right", 0x1014 },
186 { "Down", 0x1015 },
187 { "Prior", 0x1016 },
188 { "PageUp", 0x1016 },
189 { "Next", 0x1017 },
190 { "PageDown", 0x1017 },
191 { "Shift", 0x1020 },
192 { "Control", 0x1021 },
193 { "Meta", 0x1022 },
194 { "Alt", 0x1023 },
195 { "CapsLock", 0x1024 },
196 { "NumLock", 0x1025 },
197 { "ScrollLock", 0x1026 },
198 { "F1", 0x1030 },
199 { "F2", 0x1031 },
200 { "F3", 0x1032 },
201 { "F4", 0x1033 },
202 { "F5", 0x1034 },
203 { "F6", 0x1035 },
204 { "F7", 0x1036 },
205 { "F8", 0x1037 },
206 { "F9", 0x1038 },
207 { "F10", 0x1039 },
208 { "F11", 0x103a },
209 { "F12", 0x103b },
210 { "F13", 0x103c },
211 { "F14", 0x103d },
212 { "F15", 0x103e },
213 { "F16", 0x103f },
214 { "F17", 0x1040 },
215 { "F18", 0x1041 },
216 { "F19", 0x1042 },
217 { "F20", 0x1043 },
218 { "F21", 0x1044 },
219 { "F22", 0x1045 },
220 { "F23", 0x1046 },
221 { "F24", 0x1047 },
222 { "F25", 0x1048 },
223 { "F26", 0x1049 },
224 { "F27", 0x104a },
225 { "F28", 0x104b },
226 { "F29", 0x104c },
227 { "F30", 0x104d },
228 { "F31", 0x104e },
229 { "F32", 0x104f },
230 { "F33", 0x1050 },
231 { "F34", 0x1051 },
232 { "F35", 0x1052 },
233 { "Super_L", 0x1053 },
234 { "Super_R", 0x1054 },
235 { "Menu", 0x1055 },
236 { "Hyper_L", 0x1056 },
237 { "Hyper_R", 0x1057 },
238 { "Help", 0x1058 },
239 { "Space", 0x20 },
240 { "Any", 0x20 },
241 { "Exclam", 0x21 },
242 { "QuoteDbl", 0x22 },
243 { "NumberSign", 0x23 },
244 { "Dollar", 0x24 },
245 { "Percent", 0x25 },
246 { "Ampersand", 0x26 },
247 { "Apostrophe", 0x27 },
248 { "ParenLeft", 0x28 },
249 { "ParenRight", 0x29 },
250 { "Asterisk", 0x2a },
251 { "Plus", 0x2b },
252 { "Comma", 0x2c },
253 { "Minus", 0x2d },
254 { "Period", 0x2e },
255 { "Slash", 0x2f },
256 { "0", 0x30 },
257 { "1", 0x31 },
258 { "2", 0x32 },
259 { "3", 0x33 },
260 { "4", 0x34 },
261 { "5", 0x35 },
262 { "6", 0x36 },
263 { "7", 0x37 },
264 { "8", 0x38 },
265 { "9", 0x39 },
266 { "Colon", 0x3a },
267 { "Semicolon", 0x3b },
268 { "Less", 0x3c },
269 { "Equal", 0x3d },
270 { "Greater", 0x3e },
271 { "Question", 0x3f },
272 { "At", 0x40 },
273 { "A", 0x41 },
274 { "B", 0x42 },
275 { "C", 0x43 },
276 { "D", 0x44 },
277 { "E", 0x45 },
278 { "F", 0x46 },
279 { "G", 0x47 },
280 { "H", 0x48 },
281 { "I", 0x49 },
282 { "J", 0x4a },
283 { "K", 0x4b },
284 { "L", 0x4c },
285 { "M", 0x4d },
286 { "N", 0x4e },
287 { "O", 0x4f },
288 { "P", 0x50 },
289 { "Q", 0x51 },
290 { "R", 0x52 },
291 { "S", 0x53 },
292 { "T", 0x54 },
293 { "U", 0x55 },
294 { "V", 0x56 },
295 { "W", 0x57 },
296 { "X", 0x58 },
297 { "Y", 0x59 },
298 { "Z", 0x5a },
299 { "BracketLeft", 0x5b },
300 { "Backslash", 0x5c },
301 { "BracketRight", 0x5d },
302 { "AsciiCircum", 0x5e },
303 { "Underscore", 0x5f },
304 { "QuoteLeft", 0x60 },
305 { "BraceLeft", 0x7b },
306 { "Bar", 0x7c },
307 { "BraceRight", 0x7d },
308 { "AsciiTilde", 0x7e },
309 { "nobreakspace", 0x0a0 },
310 { "exclamdown", 0x0a1 },
311 { "cent", 0x0a2 },
312 { "sterling", 0x0a3 },
313 { "currency", 0x0a4 },
314 { "yen", 0x0a5 },
315 { "brokenbar", 0x0a6 },
316 { "section", 0x0a7 },
317 { "diaeresis", 0x0a8 },
318 { "copyright", 0x0a9 },
319 { "ordfeminine", 0x0aa },
320 { "guillemotleft", 0x0ab },
321 { "notsign", 0x0ac },
322 { "hyphen", 0x0ad },
323 { "registered", 0x0ae },
324 { "macron", 0x0af },
325 { "degree", 0x0b0 },
326 { "plusminus", 0x0b1 },
327 { "twosuperior", 0x0b2 },
328 { "threesuperior", 0x0b3 },
329 { "acute", 0x0b4 },
330 { "mu", 0x0b5 },
331 { "paragraph", 0x0b6 },
332 { "periodcentered", 0x0b7 },
333 { "cedilla", 0x0b8 },
334 { "onesuperior", 0x0b9 },
335 { "masculine", 0x0ba },
336 { "guillemotright", 0x0bb },
337 { "onequarter", 0x0bc },
338 { "onehalf", 0x0bd },
339 { "threequarters", 0x0be },
340 { "questiondown", 0x0bf },
341 { "Agrave", 0x0c0 },
342 { "Aacute", 0x0c1 },
343 { "Acircumflex", 0x0c2 },
344 { "Atilde", 0x0c3 },
345 { "Adiaeresis", 0x0c4 },
346 { "Aring", 0x0c5 },
347 { "AE", 0x0c6 },
348 { "Ccedilla", 0x0c7 },
349 { "Egrave", 0x0c8 },
350 { "Eacute", 0x0c9 },
351 { "Ecircumflex", 0x0ca },
352 { "Ediaeresis", 0x0cb },
353 { "Igrave", 0x0cc },
354 { "Iacute", 0x0cd },
355 { "Icircumflex", 0x0ce },
356 { "Idiaeresis", 0x0cf },
357 { "ETH", 0x0d0 },
358 { "Ntilde", 0x0d1 },
359 { "Ograve", 0x0d2 },
360 { "Oacute", 0x0d3 },
361 { "Ocircumflex", 0x0d4 },
362 { "Otilde", 0x0d5 },
363 { "Odiaeresis", 0x0d6 },
364 { "multiply", 0x0d7 },
365 { "Ooblique", 0x0d8 },
366 { "Ugrave", 0x0d9 },
367 { "Uacute", 0x0da },
368 { "Ucircumflex", 0x0db },
369 { "Udiaeresis", 0x0dc },
370 { "Yacute", 0x0dd },
371 { "THORN", 0x0de },
372 { "ssharp", 0x0df },
373 { "agrave", 0x0e0 },
374 { "aacute", 0x0e1 },
375 { "acircumflex", 0x0e2 },
376 { "atilde", 0x0e3 },
377 { "adiaeresis", 0x0e4 },
378 { "aring", 0x0e5 },
379 { "ae", 0x0e6 },
380 { "ccedilla", 0x0e7 },
381 { "egrave", 0x0e8 },
382 { "eacute", 0x0e9 },
383 { "ecircumflex", 0x0ea },
384 { "ediaeresis", 0x0eb },
385 { "igrave", 0x0ec },
386 { "iacute", 0x0ed },
387 { "icircumflex", 0x0ee },
388 { "idiaeresis", 0x0ef },
389 { "eth", 0x0f0 },
390 { "ntilde", 0x0f1 },
391 { "ograve", 0x0f2 },
392 { "oacute", 0x0f3 },
393 { "ocircumflex", 0x0f4 },
394 { "otilde", 0x0f5 },
395 { "odiaeresis", 0x0f6 },
396 { "division", 0x0f7 },
397 { "oslash", 0x0f8 },
398 { "ugrave", 0x0f9 },
399 { "uacute", 0x0fa },
400 { "ucircumflex", 0x0fb },
401 { "udiaeresis", 0x0fc },
402 { "yacute", 0x0fd },
403 { "thorn", 0x0fe },
404 { "ydiaeresis", 0x0ff },
405 { "unknown", 0xffff },
406 { 0, 0}
407};
408
409static QMap<QString, int> kcn_map;
410static QMap<int, QString> kcn_rmap;
411
412void init_kcn_maps() {
413 int i = 0;
414 while (Keycode_Names[i].name != 0) {
415 int keycode = Keycode_Names[i].keycode;
416 QString name(Keycode_Names[i].name);
417
418 kcn_map.insert(name, keycode);
419 kcn_rmap.insert(keycode, name);
420 i++;
421 }
422}
423
424int KeycodeNames::find(const QString& key) {
425 if (kcn_map.isEmpty()) {
426 init_kcn_maps();
427 }
428
429 QMap<QString, int>::Iterator it = kcn_map.find(key);
430 if (it == kcn_map.end()) {
431 return -1;
432 } else {
433 return it.data();
434 }
435}
436
437const QString& KeycodeNames::find(int k) {
438 if (kcn_map.isEmpty()) {
439 init_kcn_maps();
440 }
441
442 QMap<int, QString>::Iterator it = kcn_rmap.find(k);
443 if (it == kcn_rmap.end()) {
444 return Null_String;
445 } else {
446 return it.data();
447 }
448}
449
450#endif
diff --git a/noncore/apps/keyz-cfg/zkbnames.h b/noncore/apps/keyz-cfg/zkbnames.h
new file mode 100644
index 0000000..58462ff
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkbnames.h
@@ -0,0 +1,27 @@
1#ifndef ZKBNAMES_H
2#define ZKBNAMES_H
3
4#ifdef USE_ZKB_NAMES
5
6#include <qstring.h>
7
8class KeyNames {
9public:
10 static int find(const QString& key);
11 static const QString& find(int);
12};
13
14class KeycodeNames {
15public:
16 static int find(const QString& key);
17 static const QString& find(int);
18};
19
20class ModifierNames {
21public:
22 static int find(const QString& key);
23 static const QString& find(int);
24};
25
26#endif
27#endif
diff --git a/noncore/apps/keyz-cfg/zkbxml.cpp b/noncore/apps/keyz-cfg/zkbxml.cpp
new file mode 100644
index 0000000..76472cb
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkbxml.cpp
@@ -0,0 +1,587 @@
1#include "zkbxml.h"
2#include "zkbnames.h"
3
4static QString Keymap_Tag("keymap");
5static QString Include_Tag("include");
6static QString Label_Tag("label");
7static QString State_Tag("state");
8static QString Map_Tag("map");
9static QString Event_Tag("event");
10static QString NextState_Tag("next-state");
11
12ZkbXmlHandler::ZkbXmlHandler() {
13}
14
15ZkbXmlHandler::~ZkbXmlHandler() {
16}
17
18bool ZkbXmlHandler::startElement(const QString&, const QString&,
19 const QString& name, const QXmlAttributes& attr) {
20
21 bool ret = false;
22
23 if (name == Keymap_Tag) {
24 ret = start_keymap(attr);
25 } else if (name == Include_Tag) {
26 ret = start_include(attr);
27 } else if (name == Label_Tag) {
28 ret = start_label(attr);
29 } else if (name == State_Tag) {
30 ret = start_state(attr);
31 } else if (name == Map_Tag) {
32 ret = start_map(attr);
33 } else if (name == Event_Tag) {
34 ret = start_event(attr);
35 } else if (name == NextState_Tag) {
36 ret = start_next_state(attr);
37 }
38
39 elements.prepend(name);
40
41 return ret;
42}
43
44bool ZkbXmlHandler::endElement(const QString&, const QString&,
45 const QString& name) {
46
47 bool ret = false;
48
49 elements.remove(elements.begin());
50
51 if (name == Keymap_Tag) {
52 ret = end_keymap();
53 } else if (name == Include_Tag) {
54 ret = end_include();
55 } else if (name == Label_Tag) {
56 ret = end_label();
57 } else if (name == State_Tag) {
58 ret = end_state();
59 } else if (name == Map_Tag) {
60 ret = end_map();
61 } else if (name == Event_Tag) {
62 ret = end_event();
63 } else if (name == NextState_Tag) {
64 ret = end_next_state();
65 }
66
67 return ret;
68}
69
70QString ZkbXmlHandler::errorString() {
71 return err;
72}
73
74bool ZkbXmlHandler::startKeymapElement(int ardelay, int arperiod, const QString& author) {
75 return false;
76}
77
78bool ZkbXmlHandler::startIncludeElement(const QString& file,
79 const QString& prefix) {
80
81 return false;
82}
83
84bool ZkbXmlHandler::startLabelElement(const QString& label,
85 const QString& state) {
86
87 return false;
88}
89
90bool ZkbXmlHandler::startStateElement(const QString& name,
91 const QString& parent, bool dflt) {
92
93 return false;
94}
95
96bool ZkbXmlHandler::startMapElement(int keycode, bool pressed) {
97 return false;
98}
99
100bool ZkbXmlHandler::startEventElement(int keycode, int unicode, int modifiers,
101 bool pressed, bool autorepeat) {
102
103 return false;
104}
105
106bool ZkbXmlHandler::startNextStateElement(const QString& state) {
107 return false;
108}
109
110
111bool ZkbXmlHandler::endKeymapElement() {
112 return false;
113}
114
115bool ZkbXmlHandler::endIncludeElement() {
116 return false;
117}
118
119bool ZkbXmlHandler::endLabelElement() {
120 return false;
121}
122
123bool ZkbXmlHandler::endStateElement() {
124 return false;
125}
126
127bool ZkbXmlHandler::endMapElement() {
128 return false;
129}
130
131bool ZkbXmlHandler::endEventElement() {
132 return false;
133}
134
135bool ZkbXmlHandler::endNextStateElement() {
136 return false;
137}
138
139
140bool ZkbXmlHandler::start_keymap(const QXmlAttributes& attr) {
141 int nattr = 0;
142 int didx = attr.index("autorepeat-delay");
143 int pidx = attr.index("autorepeat-period");
144 int aidx = attr.index("author");
145 int ard = -1;
146 int arp = -1;
147 QString author;
148
149 if (!elements.isEmpty()) {
150 setError("keymap element should be top-level element");
151 return false;
152 }
153
154 if (didx >= 0) {
155 QString s = attr.value(didx);
156 bool ok;
157
158 ard = s.toInt(&ok);
159 if (!ok) {
160 setError("Invalid autorepeat-delay value: " + s);
161 return false;
162 }
163
164 nattr++;
165 }
166
167 if (pidx >= 0) {
168 QString s = attr.value(pidx);
169 bool ok;
170
171 arp = s.toInt(&ok);
172 if (!ok) {
173 setError("Invalid autorepeat-period value: " + s);
174 return false;
175 }
176
177 nattr++;
178 }
179
180 if (aidx >= 0) {
181 author = attr.value(aidx);
182 nattr++;
183 }
184
185 if (attr.length() > nattr) {
186 setError("Unsupported attributes");
187 return false;
188 }
189
190 return startKeymapElement(ard, arp, author);
191}
192
193bool ZkbXmlHandler::start_include(const QXmlAttributes& attr) {
194 int nattr = 0;
195 int fidx = attr.index("file");
196 int pidx = attr.index("prefix");
197 QString file;
198 QString prefix((const char*) 0);
199
200 if (elements.first() != Keymap_Tag) {
201 setError("include element should be used only "
202 "within keymap element");
203 return false;
204 }
205
206 if (fidx >= 0) {
207 file = attr.value(fidx);
208 nattr++;
209 } else {
210 setError("Missing file attribute");
211 return false;
212 }
213
214 if (pidx >= 0) {
215 prefix = attr.value(pidx);
216 nattr++;
217 }
218
219 if (attr.length() > nattr) {
220 setError("Unsupported attributes");
221 return false;
222 }
223
224 return startIncludeElement(file, prefix);
225}
226
227bool ZkbXmlHandler::start_label(const QXmlAttributes& attr) {
228 int nattr = 0;
229 int nidx = attr.index("name");
230 int sidx = attr.index("state");
231 QString name;
232 QString state;
233
234 if (elements.first() != Keymap_Tag) {
235 setError("label element should be used only "
236 "within keymap element");
237 return false;
238 }
239
240 if (nidx >= 0) {
241 name = attr.value(nidx);
242 nattr++;
243 } else {
244 setError("Missing name attribute");
245 return false;
246 }
247
248 if (sidx >= 0) {
249 state = attr.value(sidx);
250 nattr++;
251 } else {
252 setError("Missing name attribute");
253 return false;
254 }
255
256 if (attr.length() > nattr) {
257 setError("Unsupported attributes");
258 return false;
259 }
260
261 return startLabelElement(name, state);
262}
263
264bool ZkbXmlHandler::start_state(const QXmlAttributes& attr) {
265 int nattr = 0;
266 int nidx = attr.index("name");
267 int pidx = attr.index("parent");
268 int didx = attr.index("default");
269 QString name;
270 QString parent((const char*) 0);
271 bool dflt = false;
272
273 if (elements.first() != Keymap_Tag) {
274 setError("state element should be used only "
275 "within keymap element");
276 return false;
277 }
278
279 if (nidx >= 0) {
280 name = attr.value(nidx);
281 nattr++;
282 } else {
283 setError("Missing name attribute");
284 return false;
285 }
286
287 if (pidx >= 0) {
288 parent = attr.value(pidx);
289 nattr++;
290 }
291
292 if (didx >= 0) {
293 dflt = str2bool(attr.value(didx));
294 if (!err.isEmpty()) {
295 return false;
296 }
297
298 nattr++;
299 }
300
301 if (attr.length() > nattr) {
302 setError("Unsupported attributes");
303 return false;
304 }
305
306 return startStateElement(name, parent, dflt);
307}
308
309bool ZkbXmlHandler::start_map(const QXmlAttributes& attr) {
310 int nattr = 0;
311 int kidx = attr.index("keycode");
312 int pidx = attr.index("pressed");
313 int key;
314 bool pressed;
315
316 if (elements.first() != State_Tag) {
317 setError("map element should be used only "
318 "within state element");
319 return false;
320 }
321
322 if (kidx >= 0) {
323 key = str2key(attr.value(kidx));
324 if (!err.isEmpty()) {
325 return false;
326 }
327 nattr++;
328 } else {
329 setError("Missing keycode attribute");
330 return false;
331 }
332
333 if (pidx >= 0) {
334 pressed = str2bool(attr.value(pidx));
335 if (!err.isEmpty()) {
336 return false;
337 }
338 nattr++;
339 } else {
340 setError("Missing pressed attribute");
341 return false;
342 }
343
344 if (attr.length() > nattr) {
345 setError("Unsupported attributes");
346 return false;
347 }
348
349 return startMapElement(key, pressed);
350}
351
352bool ZkbXmlHandler::start_event(const QXmlAttributes& attr) {
353 int nattr = 0;
354 int kidx = attr.index("keycode");
355 int pidx = attr.index("pressed");
356 int uidx = attr.index("unicode");
357 int midx = attr.index("modifiers");
358 int aidx = attr.index("autorepeat");
359
360 int keycode;
361 int unicode;
362 int modifiers = 0;
363 bool pressed;
364 bool autorepeat = false;
365
366 if (elements.first() != Map_Tag) {
367 setError("event element should be used only "
368 "within map element");
369 return false;
370 }
371
372 if (kidx >= 0) {
373 keycode = str2keycode(attr.value(kidx));
374 if (!err.isEmpty()) {
375 return false;
376 }
377 nattr++;
378 } else {
379 setError("Missing keycode attribute");
380 return false;
381 }
382
383 if (uidx >= 0) {
384 unicode = str2unicode(attr.value(uidx));
385 if (!err.isEmpty()) {
386 return false;
387 }
388 nattr++;
389 } else {
390 setError("Missing unicode attribute");
391 return false;
392 }
393
394 if (midx >= 0) {
395 modifiers = str2modifier(attr.value(midx));
396 if (!err.isEmpty()) {
397 return false;
398 }
399 nattr++;
400 }
401
402 if (pidx >= 0) {
403 pressed = str2bool(attr.value(pidx));
404 if (!err.isEmpty()) {
405 return false;
406 }
407 nattr++;
408 } else {
409 setError("Missing pressed attribute");
410 return false;
411 }
412
413 if (aidx >= 0) {
414 autorepeat = str2bool(attr.value(aidx));
415 if (!err.isEmpty()) {
416 return false;
417 }
418 nattr++;
419 }
420
421 if (attr.length() > nattr) {
422 setError("Unsupported attributes");
423 return false;
424 }
425
426 return startEventElement(keycode, unicode, modifiers, pressed,
427 autorepeat);
428}
429
430bool ZkbXmlHandler::start_next_state(const QXmlAttributes& attr) {
431 int nattr = 0;
432 int nidx = attr.index("name");
433 QString name;
434
435 if (elements.first() != Map_Tag) {
436 setError("next-state element should be used only "
437 "within map element");
438 return false;
439 }
440
441 if (nidx >= 0) {
442 name = attr.value(nidx);
443 nattr++;
444 } else {
445 setError("Missing name attribute");
446 return false;
447 }
448
449 if (attr.length() > nattr) {
450 setError("Unsupported attributes");
451 return false;
452 }
453
454 return startNextStateElement(name);
455}
456
457bool ZkbXmlHandler::end_keymap() {
458 return endKeymapElement();
459}
460
461bool ZkbXmlHandler::end_include() {
462 return endIncludeElement();
463}
464
465bool ZkbXmlHandler::end_label() {
466 return endLabelElement();
467}
468
469bool ZkbXmlHandler::end_state() {
470 return endStateElement();
471}
472
473bool ZkbXmlHandler::end_map() {
474 return endMapElement();
475}
476
477bool ZkbXmlHandler::end_event() {
478 return endEventElement();
479}
480
481bool ZkbXmlHandler::end_next_state() {
482 return endNextStateElement();
483}
484
485void ZkbXmlHandler::setError(const QString& e) {
486 err = e;
487}
488
489int ZkbXmlHandler::str2key(const QString& s) {
490 int ret;
491
492#ifdef USE_ZKB_NAMES
493 ret = KeyNames::find(s);
494 if (ret == -1) {
495 setError("Invalid value: " + s);
496 }
497
498#else
499 ret = str2uint(s);
500#endif
501
502 return ret;
503}
504
505int ZkbXmlHandler::str2modifier(const QString& val) {
506 int ret;
507
508#ifdef USE_ZKB_NAMES
509 int n, i;
510 ret = 0;
511 n = 0;
512 do {
513 i = val.find('|', n);
514 if (i < 0) {
515 i = val.length();
516 }
517
518 QString s = val.mid(n, i - n);
519 int v = ModifierNames::find(s.stripWhiteSpace());
520
521 if (v == -1) {
522 setError("Invalid value: " + val);
523 return -1;
524 }
525
526 ret |= v;
527 n = i + 1;
528 } while (n < val.length());
529#else
530 ret = str2uint(val);
531#endif
532
533 return ret;
534}
535
536bool ZkbXmlHandler::str2bool(const QString& s) {
537 if (s == "true") {
538 return true;
539 } else {
540 return false;
541 }
542}
543
544int ZkbXmlHandler::str2unicode(const QString& s) {
545 return str2uint(s);
546}
547
548int ZkbXmlHandler::str2keycode(const QString& s) {
549 int ret;
550
551#ifdef USE_ZKB_NAMES
552 ret = KeycodeNames::find(s);
553 if (ret == -1) {
554 setError("Invalid value: " + s);
555 }
556
557#else
558 ret = str2uint(s);
559#endif
560
561 return ret;
562}
563
564int ZkbXmlHandler::str2uint(const QString& s) {
565 int ret;
566 bool ok;
567 QString val = s;
568 int r;
569
570 if (val.left(2) == "0x") {
571 val = s.mid(2);
572 r = 16;
573 } else if (val.left(1) == "0") {
574 val = s.mid(1);
575 r = 8;
576 } else {
577 r = 10;
578 }
579
580 ret = val.toInt(&ok, r);
581 if (!ok) {
582 setError("Invalid value: " + s);
583 ret = -1;
584 }
585
586 return ret;
587}
diff --git a/noncore/apps/keyz-cfg/zkbxml.h b/noncore/apps/keyz-cfg/zkbxml.h
new file mode 100644
index 0000000..2b15cbb
--- a/dev/null
+++ b/noncore/apps/keyz-cfg/zkbxml.h
@@ -0,0 +1,68 @@
1#ifndef ZKBXML_H
2#define ZKBXML_H
3
4#include <qxml.h>
5
6class ZkbXmlHandler : public QXmlDefaultHandler {
7public:
8 ZkbXmlHandler();
9 virtual ~ZkbXmlHandler();
10
11 virtual bool startElement(const QString&, const QString&,
12 const QString& name, const QXmlAttributes& attr);
13
14 virtual bool endElement(const QString&, const QString&,
15 const QString& name);
16
17 virtual QString errorString();
18
19protected:
20 QString err;
21 QStringList elements;
22
23 virtual bool startKeymapElement(int ardelay, int arperiod,
24 const QString& author);
25 virtual bool startIncludeElement(const QString& file,
26 const QString& prfix);
27 virtual bool startLabelElement(const QString& label,
28 const QString& state);
29 virtual bool startStateElement(const QString& name,
30 const QString& parent, bool dflt);
31 virtual bool startMapElement(int key, bool pressed);
32 virtual bool startEventElement(int keycode, int unicode, int modifiers,
33 bool pressed, bool autorepeat);
34 virtual bool startNextStateElement(const QString& state);
35
36 virtual bool endKeymapElement();
37 virtual bool endIncludeElement();
38 virtual bool endLabelElement();
39 virtual bool endStateElement();
40 virtual bool endMapElement();
41 virtual bool endEventElement();
42 virtual bool endNextStateElement();
43
44 bool start_keymap(const QXmlAttributes&);
45 bool start_include(const QXmlAttributes&);
46 bool start_label(const QXmlAttributes&);
47 bool start_state(const QXmlAttributes&);
48 bool start_map(const QXmlAttributes&);
49 bool start_event(const QXmlAttributes&);
50 bool start_next_state(const QXmlAttributes&);
51 bool end_keymap();
52 bool end_include();
53 bool end_label();
54 bool end_state();
55 bool end_map();
56 bool end_event();
57 bool end_next_state();
58
59 void setError(const QString&);
60 int str2key(const QString&);
61 int str2modifier(const QString&);
62 bool str2bool(const QString&);
63 int str2unicode(const QString&);
64 int str2keycode(const QString&);
65 int str2uint(const QString&);
66};
67
68#endif
diff --git a/packages b/packages
index 44d286e..d5a0c14 100644
--- a/packages
+++ b/packages
@@ -1,205 +1,207 @@
1 CONFIG_ADDRESSBOOK core/pim/addressbookaddressbook.pro 1 CONFIG_ADDRESSBOOK core/pim/addressbookaddressbook.pro
2 CONFIG_ADVANCEDFM noncore/apps/advancedfmadvancedfm.pro 2 CONFIG_ADVANCEDFM noncore/apps/advancedfmadvancedfm.pro
3 CONFIG_APPEARANCE2 noncore/settings/appearance2appearance2.pro 3 CONFIG_APPEARANCE2 noncore/settings/appearance2appearance2.pro
4CONFIG_APPLET_EXAMPLE examples/applet example.pro 4CONFIG_APPLET_EXAMPLE examples/applet example.pro
5 CONFIG_APPSKEY noncore/settings/appskeyappskey.pro 5 CONFIG_APPSKEY noncore/settings/appskeyappskey.pro
6 CONFIG_AQPKG noncore/settings/aqpkgaqpkg.pro 6 CONFIG_AQPKG noncore/settings/aqpkgaqpkg.pro
7 CONFIG_AUTOROTATEAPPLET noncore/applets/autorotateappletautorotateapplet.pro 7 CONFIG_AUTOROTATEAPPLET noncore/applets/autorotateappletautorotateapplet.pro
8 CONFIG_BACKGAMMONnoncore/games/backgammon backgammon.pro 8 CONFIG_BACKGAMMONnoncore/games/backgammon backgammon.pro
9 CONFIG_BACKUP noncore/settings/backupbackup.pro 9 CONFIG_BACKUP noncore/settings/backupbackup.pro
10 CONFIG_BARTENDER noncore/apps/opie-bartenderbartender.pro 10 CONFIG_BARTENDER noncore/apps/opie-bartenderbartender.pro
11 CONFIG_BATTERYAPPLET core/applets/batteryappletbatteryapplet.pro 11 CONFIG_BATTERYAPPLET core/applets/batteryappletbatteryapplet.pro
12 CONFIG_BEND noncore/unsupported/mail2/bendbend.pro 12 CONFIG_BEND noncore/unsupported/mail2/bendbend.pro
13CONFIG_BIGSCREEN_EXAMPLE libopie/big-screen/example osplitter_mail.pro 13CONFIG_BIGSCREEN_EXAMPLE libopie/big-screen/example osplitter_mail.pro
14 CONFIG_BINARY noncore/tools/calc2/binarybinary.pro 14 CONFIG_BINARY noncore/tools/calc2/binarybinary.pro
15 CONFIG_BLUE-PIN noncore/net/opietooth/blue-pinblue-pin.pro 15 CONFIG_BLUE-PIN noncore/net/opietooth/blue-pinblue-pin.pro
16 CONFIG_BOUNCE noncore/games/bouncebounce.pro 16 CONFIG_BOUNCE noncore/games/bouncebounce.pro
17 CONFIG_BUTTON-SETTINGS core/settings/buttonbutton.pro 17 CONFIG_BUTTON-SETTINGS core/settings/buttonbutton.pro
18 CONFIG_BUZZWORD noncore/games/buzzwordbuzzword.pro 18 CONFIG_BUZZWORD noncore/games/buzzwordbuzzword.pro
19 CONFIG_CALC2 noncore/tools/calc2calc.pro 19 CONFIG_CALC2 noncore/tools/calc2calc.pro
20 CONFIG_CALCULATOR noncore/tools/calculatorcalculator.pro 20 CONFIG_CALCULATOR noncore/tools/calculatorcalculator.pro
21 CONFIG_CALIBRATE core/apps/calibratecalibrate.pro 21 CONFIG_CALIBRATE core/apps/calibratecalibrate.pro
22 CONFIG_CAMERA noncore/multimedia/cameracamera.pro 22 CONFIG_CAMERA noncore/multimedia/cameracamera.pro
23 CONFIG_CARDMON core/applets/cardmoncardmon.pro 23 CONFIG_CARDMON core/applets/cardmoncardmon.pro
24 CONFIG_CHECKBOOK noncore/apps/checkbookcheckbook.pro 24 CONFIG_CHECKBOOK noncore/apps/checkbookcheckbook.pro
25 CONFIG_CITYTIME core/settings/citytimecitytime.pro 25 CONFIG_CITYTIME core/settings/citytimecitytime.pro
26 CONFIG_CLIPBOARDAPPLET core/applets/clipboardappletclipboardapplet.pro 26 CONFIG_CLIPBOARDAPPLET core/applets/clipboardappletclipboardapplet.pro
27 CONFIG_CLOCKAPPLET core/applets/clockappletclockapplet.pro 27 CONFIG_CLOCKAPPLET core/applets/clockappletclockapplet.pro
28 CONFIG_CLOCK noncore/tools/clockclock.pro 28 CONFIG_CLOCK noncore/tools/clockclock.pro
29 CONFIG_CONFEDIT noncore/apps/confeditconfedit.pro 29 CONFIG_CONFEDIT noncore/apps/confeditconfedit.pro
30 CONFIG_DASHER inputmethods/dasherdasher.pro 30 CONFIG_DASHER inputmethods/dasherdasher.pro
31 CONFIG_DATEBOOK core/pim/datebookdatebook.pro 31 CONFIG_DATEBOOK core/pim/datebookdatebook.pro
32 CONFIG_DECO_FLAT noncore/decorations/flatflat.pro 32 CONFIG_DECO_FLAT noncore/decorations/flatflat.pro
33 CONFIG_DECO_LIQUID noncore/decorations/liquidliquid.pro 33 CONFIG_DECO_LIQUID noncore/decorations/liquidliquid.pro
34 CONFIG_DECO_POLISHED noncore/decorations/polishedpolished.pro 34 CONFIG_DECO_POLISHED noncore/decorations/polishedpolished.pro
35 CONFIG_DICTIONARY noncore/apps/dictionarydictionary.pro 35 CONFIG_DICTIONARY noncore/apps/dictionarydictionary.pro
36CONFIG_DOCTAB noncore/settings/doctab doctab.pro 36CONFIG_DOCTAB noncore/settings/doctab doctab.pro
37 CONFIG_DRAWPAD noncore/graphics/drawpaddrawpad.pro 37 CONFIG_DRAWPAD noncore/graphics/drawpaddrawpad.pro
38 CONFIG_DVORAK inputmethods/dvorakdvorak.pro 38 CONFIG_DVORAK inputmethods/dvorakdvorak.pro
39 CONFIG_EMBEDDEDKONSOLE core/apps/embeddedkonsoleembeddedkonsole.pro 39 CONFIG_EMBEDDEDKONSOLE core/apps/embeddedkonsoleembeddedkonsole.pro
40 CONFIG_EUROCONV noncore/tools/euroconv/ euroconv.pro 40 CONFIG_EUROCONV noncore/tools/euroconv/ euroconv.pro
41CONFIG_EXAMPLE_BOARD examples/inputmethod example.pro 41CONFIG_EXAMPLE_BOARD examples/inputmethod example.pro
42CONFIG_EXAMPLE_MENU examples/menuapplet menuapplet.pro 42CONFIG_EXAMPLE_MENU examples/menuapplet menuapplet.pro
43CONFIG_EXAMPLE_VPN examples/networksettings example.pro 43CONFIG_EXAMPLE_VPN examples/networksettings example.pro
44 CONFIG_FIFTEEN noncore/games/fifteenfifteen.pro 44 CONFIG_FIFTEEN noncore/games/fifteenfifteen.pro
45 CONFIG_FILEBROWSER noncore/unsupported/filebrowserfilebrowser.pro 45 CONFIG_FILEBROWSER noncore/unsupported/filebrowserfilebrowser.pro
46 CONFIG_FLAT noncore/styles/flatflat.pro 46 CONFIG_FLAT noncore/styles/flatflat.pro
47 CONFIG_FORMATTER noncore/tools/formatterformatter.pro 47 CONFIG_FORMATTER noncore/tools/formatterformatter.pro
48 CONFIG_FREETYPE freetypefreetype.pro 48 CONFIG_FREETYPE freetypefreetype.pro
49 CONFIG_FRESH noncore/styles/freshfresh.pro 49 CONFIG_FRESH noncore/styles/freshfresh.pro
50 CONFIG_FTPLIB noncore/net/ftplibftplib.pro 50 CONFIG_FTPLIB noncore/net/ftplibftplib.pro
51 CONFIG_GO noncore/games/gogo.pro 51 CONFIG_GO noncore/games/gogo.pro
52 CONFIG_GSMTOOL noncore/unsupported/gsmtoolgsmtool.pro 52 CONFIG_GSMTOOL noncore/unsupported/gsmtoolgsmtool.pro
53 CONFIG_HANDWRITING inputmethods/handwritinghandwriting.pro 53 CONFIG_HANDWRITING inputmethods/handwritinghandwriting.pro
54 CONFIG_HELPBROWSER core/apps/helpbrowserhelpbrowser.pro 54 CONFIG_HELPBROWSER core/apps/helpbrowserhelpbrowser.pro
55 CONFIG_HOMEAPPLET core/applets/homeapplethomeapplet.pro 55 CONFIG_HOMEAPPLET core/applets/homeapplethomeapplet.pro
56 CONFIG_INTERFACES noncore/settings/networksettings/interfacesinterfaces.pro 56 CONFIG_INTERFACES noncore/settings/networksettings/interfacesinterfaces.pro
57 CONFIG_IRDAAPPLET core/applets/irdaappletirdaapplet.pro 57 CONFIG_IRDAAPPLET core/applets/irdaappletirdaapplet.pro
58 CONFIG_JUMPX inputmethods/jumpxjumpx.pro 58 CONFIG_JUMPX inputmethods/jumpxjumpx.pro
59 CONFIG_KBILL noncore/games/kbillkbill.pro 59 CONFIG_KBILL noncore/games/kbillkbill.pro
60 CONFIG_KCHECKERS noncore/games/kcheckerskcheckers.pro 60 CONFIG_KCHECKERS noncore/games/kcheckerskcheckers.pro
61 CONFIG_KEYBOARD inputmethods/keyboardkeyboard.pro 61 CONFIG_KEYBOARD inputmethods/keyboardkeyboard.pro
62 CONFIG_KEYPEBBLE noncore/comm/keypebblekeypebble.pro 62 CONFIG_KEYPEBBLE noncore/comm/keypebblekeypebble.pro
63 CONFIG_KEYVIEW development/keyviewkeyview.pro 63 CONFIG_KEYVIEW development/keyviewkeyview.pro
64CONFIG_KEYZCFG noncore/apps/keyz-cfg keyz-cfg.pro
64 CONFIG_KJUMPX inputmethods/kjumpxkjumpx.pro 65 CONFIG_KJUMPX inputmethods/kjumpxkjumpx.pro
65 CONFIG_KPACMAN noncore/games/kpacmankpacman.pro 66 CONFIG_KPACMAN noncore/games/kpacmankpacman.pro
66 CONFIG_LANGUAGE noncore/settings/languagelanguage.pro 67 CONFIG_LANGUAGE noncore/settings/languagelanguage.pro
67 CONFIG_LAUNCHER_CORE core/launcherserver.pro 68 CONFIG_LAUNCHER_CORE core/launcherserver.pro
68 CONFIG_LAUNCHER-SETTINGS core/settings/launcherlauncher.pro 69 CONFIG_LAUNCHER-SETTINGS core/settings/launcherlauncher.pro
69 CONFIG_LIBFFMPEG core/multimedia/opieplayer/libffmpeglibffmpeg.pro 70 CONFIG_LIBFFMPEG core/multimedia/opieplayer/libffmpeglibffmpeg.pro
70 CONFIG_LIBFLASH core/multimedia/opieplayer/libflashlibflash.pro 71 CONFIG_LIBFLASH core/multimedia/opieplayer/libflashlibflash.pro
71CONFIG_LIBKATE noncore/apps/tinykate/libkate libkate.pro 72CONFIG_LIBKATE noncore/apps/tinykate/libkate libkate.pro
72 CONFIG_LIBMAD core/multimedia/opieplayer/libmadlibmad.pro 73 CONFIG_LIBMAD core/multimedia/opieplayer/libmadlibmad.pro
73 CONFIG_LIBMAIL noncore/unsupported/mail2/libmaillibmail.pro 74 CONFIG_LIBMAIL noncore/unsupported/mail2/libmaillibmail.pro
74CONFIG_LIBMAILWRAPPER noncore/net/mail/libmailwrapper libmailwrapper.pro 75CONFIG_LIBMAILWRAPPER noncore/net/mail/libmailwrapper libmailwrapper.pro
75 CONFIG_LIBMPEG3 core/multimedia/opieplayer/libmpeg3libmpeg3.pro 76 CONFIG_LIBMPEG3 core/multimedia/opieplayer/libmpeg3libmpeg3.pro
76 CONFIG_LIBOPIE2CORE libopie2/opiecoreopiecore.pro 77 CONFIG_LIBOPIE2CORE libopie2/opiecoreopiecore.pro
77 CONFIG_LIBOPIE2DB libopie2/opiedbopiedb.pro 78 CONFIG_LIBOPIE2DB libopie2/opiedbopiedb.pro
78 CONFIG_LIBOPIE2EXAMPLES libopie2/examplesexamples.pro 79 CONFIG_LIBOPIE2EXAMPLES libopie2/examplesexamples.pro
79 CONFIG_LIBOPIE2MM libopie2/opiemmopiemm.pro 80 CONFIG_LIBOPIE2MM libopie2/opiemmopiemm.pro
80 CONFIG_LIBOPIE2NET libopie2/opienetopienet.pro 81 CONFIG_LIBOPIE2NET libopie2/opienetopienet.pro
81 CONFIG_LIBOPIE2PIM libopie2/opiepimopiepim.pro 82 CONFIG_LIBOPIE2PIM libopie2/opiepimopiepim.pro
82 CONFIG_LIBOPIE2UI libopie2/opieuiopieui.pro 83 CONFIG_LIBOPIE2UI libopie2/opieuiopieui.pro
83 CONFIG_LIBOPIE libopielibopie.pro 84 CONFIG_LIBOPIE libopielibopie.pro
84 CONFIG_LIBOPIE_PIM libopie/pimpim.pro 85 CONFIG_LIBOPIE_PIM libopie/pimpim.pro
85 CONFIG_LIBOPIETOOTH noncore/net/opietooth/liblib.pro 86 CONFIG_LIBOPIETOOTH noncore/net/opietooth/liblib.pro
86 CONFIG_LIBQPE librarylibrary.pro 87 CONFIG_LIBQPE librarylibrary.pro
87 CONFIG_LIBQPE-X11 x11/libqpe-x11libqpe-x11.pro 88 CONFIG_LIBQPE-X11 x11/libqpe-x11libqpe-x11.pro
88 CONFIG_LIBQTAUX libqtauxlibqtaux.pro 89 CONFIG_LIBQTAUX libqtauxlibqtaux.pro
89 CONFIG_LIBSQL libsqllibsql.pro 90 CONFIG_LIBSQL libsqllibsql.pro
90CONFIG_LIBTREMOR core/multimedia/opieplayer/vorbis/tremor tremor.pro 91CONFIG_LIBTREMOR core/multimedia/opieplayer/vorbis/tremor tremor.pro
91CONFIG_LIBTREMORPLUGIN core/multimedia/opieplayer/vorbis libtremor.pro 92CONFIG_LIBTREMORPLUGIN core/multimedia/opieplayer/vorbis libtremor.pro
92 CONFIG_LIGHT-AND-POWER core/settings/light-and-powerlight-and-power.pro 93 CONFIG_LIGHT-AND-POWER core/settings/light-and-powerlight-and-power.pro
93 CONFIG_LIQUID noncore/styles/liquidliquid.pro 94 CONFIG_LIQUID noncore/styles/liquidliquid.pro
94 CONFIG_LOGOUTAPPLET core/applets/logoutappletlogoutapplet.pro 95 CONFIG_LOGOUTAPPLET core/applets/logoutappletlogoutapplet.pro
95 CONFIG_MAIL3 noncore/net/mail mail.pro 96 CONFIG_MAIL3 noncore/net/mail mail.pro
96CONFIG_MAILAPPLET noncore/net/mail/taskbarapplet taskbarapplet.pro 97CONFIG_MAILAPPLET noncore/net/mail/taskbarapplet taskbarapplet.pro
97 CONFIG_MAILIT noncore/unsupported/mailit mailit.pro 98 CONFIG_MAILIT noncore/unsupported/mailit mailit.pro
98CONFIG_MAIN_TAB_EXAMPLE examples/main-tab example.pro 99CONFIG_MAIN_TAB_EXAMPLE examples/main-tab example.pro
99 CONFIG_MEDIUMMOUNT noncore/settings/mediummountmediummount.pro 100 CONFIG_MEDIUMMOUNT noncore/settings/mediummountmediummount.pro
100 CONFIG_MEMORYAPPLET noncore/applets/memoryappletmemoryapplet.pro 101 CONFIG_MEMORYAPPLET noncore/applets/memoryappletmemoryapplet.pro
101 CONFIG_METAL noncore/styles/metalmetal.pro 102 CONFIG_METAL noncore/styles/metalmetal.pro
102 CONFIG_MINDBREAKER noncore/games/mindbreakermindbreaker.pro 103 CONFIG_MINDBREAKER noncore/games/mindbreakermindbreaker.pro
103 CONFIG_MINESWEEP noncore/games/minesweepminesweep.pro 104 CONFIG_MINESWEEP noncore/games/minesweepminesweep.pro
104 CONFIG_MOBILEMSG noncore/comm/mobilemsgmobilemsg.pro 105 CONFIG_MOBILEMSG noncore/comm/mobilemsgmobilemsg.pro
105 CONFIG_MODPLUG core/multimedia/opieplayer/modplugmodplug.pro 106 CONFIG_MODPLUG core/multimedia/opieplayer/modplugmodplug.pro
106 CONFIG_MULTIKEYAPPLET core/applets/multikeyappletmultikeyapplet.pro 107 CONFIG_MULTIKEYAPPLET core/applets/multikeyappletmultikeyapplet.pro
107 CONFIG_MULTIKEY inputmethods/multikeymultikey.pro 108 CONFIG_MULTIKEY inputmethods/multikeymultikey.pro
108 CONFIG_NETSYSTEMTIME noncore/settings/netsystemtimenetsystemtime.pro 109 CONFIG_NETSYSTEMTIME noncore/settings/netsystemtimenetsystemtime.pro
109 CONFIG_NETWORKAPPLET noncore/applets/networkappletnetworkapplet.pro 110 CONFIG_NETWORKAPPLET noncore/applets/networkappletnetworkapplet.pro
110 CONFIG_NETWORKSETUP noncore/settings/networksettingsnetworksettings.pro 111 CONFIG_NETWORKSETUP noncore/settings/networksettingsnetworksettings.pro
111 CONFIG_NOTESAPPLET noncore/applets/notesappletnotesapplet.pro 112 CONFIG_NOTESAPPLET noncore/applets/notesappletnotesapplet.pro
112 CONFIG_OAPP core/apps/oappoapp.pro 113 CONFIG_OAPP core/apps/oappoapp.pro
113 CONFIG_OBEX core/applets/obex2obex.pro 114 CONFIG_OBEX core/applets/obex2obex.pro
114 CONFIG_ODICT noncore/apps/odictodict.pro 115 CONFIG_ODICT noncore/apps/odictodict.pro
115 CONFIG_OIPKG noncore/unsupported/oipkgoipkg.pro 116 CONFIG_OIPKG noncore/unsupported/oipkgoipkg.pro
116 CONFIG_OPIEALARMcore/opiealarm 117 CONFIG_OPIEALARMcore/opiealarm
117 CONFIG_OPIE-CONSOLE noncore/apps/opie-consoleopie-console.pro 118 CONFIG_OPIE-CONSOLE noncore/apps/opie-consoleopie-console.pro
118 CONFIG_OPIEFTP noncore/net/opieftpopieftp.pro 119 CONFIG_OPIEFTP noncore/net/opieftpopieftp.pro
119 CONFIG_OPIEIRC noncore/net/opieircopieirc.pro 120 CONFIG_OPIEIRC noncore/net/opieircopieirc.pro
120 CONFIG_OPIE-LOGIN core/opie-loginopie-login.pro 121 CONFIG_OPIE-LOGIN core/opie-loginopie-login.pro
121 CONFIG_OPIEMAIL2noncore/unsupported/mail2 mail.pro 122 CONFIG_OPIEMAIL2noncore/unsupported/mail2 mail.pro
122 CONFIG_OPIEPLAYER2 noncore/multimedia/opieplayer2opieplayer2.pro 123 CONFIG_OPIEPLAYER2 noncore/multimedia/opieplayer2opieplayer2.pro
123 CONFIG_OPIEPLAYER core/multimedia/opieplayeropieplayer.pro 124 CONFIG_OPIEPLAYER core/multimedia/opieplayeropieplayer.pro
124 CONFIG_OPIE-RDESKTOP noncore/net/opierdesktopopierdesktop.pro 125 CONFIG_OPIE-RDESKTOP noncore/net/opierdesktopopierdesktop.pro
125 CONFIG_OPIE-READER noncore/apps/opie-readeropie-reader.pro 126 CONFIG_OPIE-READER noncore/apps/opie-readeropie-reader.pro
126 CONFIG_OPIEREC noncore/multimedia/opierecopierec.pro 127 CONFIG_OPIEREC noncore/multimedia/opierecopierec.pro
127 CONFIG_OPIE-SHEET noncore/apps/opie-sheetopie-sheet.pro 128 CONFIG_OPIE-SHEET noncore/apps/opie-sheetopie-sheet.pro
128 CONFIG_OPIE-SH noncore/tools/opie-shopie-sh.pro 129 CONFIG_OPIE-SH noncore/tools/opie-shopie-sh.pro
129 CONFIG_OPIETOOTH-APPLET noncore/net/opietooth/appletapplet.pro 130 CONFIG_OPIETOOTH-APPLET noncore/net/opietooth/appletapplet.pro
130 CONFIG_OPIETOOTH-MANAGER noncore/net/opietooth/managermanager.pro 131 CONFIG_OPIETOOTH-MANAGER noncore/net/opietooth/managermanager.pro
131 CONFIG_OPIE-WRITE noncore/apps/opie-writeopie-write.pro 132 CONFIG_OPIE-WRITE noncore/apps/opie-writeopie-write.pro
132 CONFIG_OSEARCH core/pim/osearchosearch.pro 133 CONFIG_OSEARCH core/pim/osearchosearch.pro
133 CONFIG_OXYGEN noncore/apps/oxygenoxygen.pro 134 CONFIG_OXYGEN noncore/apps/oxygenoxygen.pro
134 CONFIG_PACKAGEMANAGER noncore/settings/packagemanagerpackagemanager.pro 135 CONFIG_PACKAGEMANAGER noncore/settings/packagemanagerpackagemanager.pro
135 CONFIG_PARASHOOT noncore/games/parashootparashoot.pro 136 CONFIG_PARASHOOT noncore/games/parashootparashoot.pro
136 CONFIG_PICKBOARD inputmethods/pickboardpickboard.pro 137 CONFIG_PICKBOARD inputmethods/pickboardpickboard.pro
137 CONFIG_POWERCHORD noncore/multimedia/powerchordpowerchord.pro 138 CONFIG_POWERCHORD noncore/multimedia/powerchordpowerchord.pro
138CONFIG_PPP noncore/settings/networksettings/ppp ppp.pro 139CONFIG_PPP noncore/settings/networksettings/ppp ppp.pro
139 CONFIG_QASHMONEY noncore/apps/qashmoneyqashmoney.pro 140 CONFIG_QASHMONEY noncore/apps/qashmoneyqashmoney.pro
140 CONFIG_QASTEROIDS noncore/games/qasteroidsqasteroids.pro 141 CONFIG_QASTEROIDS noncore/games/qasteroidsqasteroids.pro
141 CONFIG_QCOP core/apps/qcopqcop.pro 142 CONFIG_QCOP core/apps/qcopqcop.pro
142 CONFIG_QPDF noncore/unsupported/qpdfqpdf.pro 143 CONFIG_QPDF noncore/unsupported/qpdfqpdf.pro
143CONFIG_QUICKLAUNCHER core/tools/quicklauncher quicklauncher.pro 144CONFIG_QUICKLAUNCHER core/tools/quicklauncher quicklauncher.pro
144 CONFIG_QWS core/qwsqws.pro 145 CONFIG_QWS core/qwsqws.pro
145 CONFIG_REMOTE noncore/tools/remoteremote.pro 146 CONFIG_REMOTE noncore/tools/remoteremote.pro
146 CONFIG_RESTARTAPPLET2 core/applets/restartapplet2restartapplet2.pro 147 CONFIG_RESTARTAPPLET2 core/applets/restartapplet2restartapplet2.pro
147 CONFIG_RESTARTAPPLET core/applets/restartappletrestartapplet.pro 148 CONFIG_RESTARTAPPLET core/applets/restartappletrestartapplet.pro
148 CONFIG_ROTATEAPPLET core/applets/rotateappletrotateapplet.pro 149 CONFIG_ROTATEAPPLET core/applets/rotateappletrotateapplet.pro
149 CONFIG_ROTATION noncore/settings/rotationrotation.pro 150 CONFIG_ROTATION noncore/settings/rotationrotation.pro
150 CONFIG_RUNAPPLET core/applets/runappletrunapplet.pro 151 CONFIG_RUNAPPLET core/applets/runappletrunapplet.pro
151 CONFIG_SCREENSHOTAPPLET core/applets/screenshotappletscreenshotapplet.pro 152 CONFIG_SCREENSHOTAPPLET core/applets/screenshotappletscreenshotapplet.pro
152 CONFIG_SECURITY core/settings/securitysecurity.pro 153 CONFIG_SECURITY core/settings/securitysecurity.pro
153 CONFIG_SFCAVE noncore/games/sfcavesfcave.pro 154 CONFIG_SFCAVE noncore/games/sfcavesfcave.pro
154 CONFIG_SFCAVE-SDL noncore/games/sfcave-sdlsfcave-sdl.pro 155 CONFIG_SFCAVE-SDL noncore/games/sfcave-sdlsfcave-sdl.pro
155 CONFIG_SHOWIMG noncore/multimedia/showimgshowimg.pro 156 CONFIG_SHOWIMG noncore/multimedia/showimgshowimg.pro
156CONFIG_SIMPLE_EXAMPLE examples/simple example.pro 157CONFIG_SIMPLE_EXAMPLE examples/simple example.pro
157CONFIG_SIMPLE_ICON examples/simple-icon example.pro 158CONFIG_SIMPLE_ICON examples/simple-icon example.pro
158CONFIG_SIMPLE_MAIN examples/simple-main example.pro 159CONFIG_SIMPLE_MAIN examples/simple-main example.pro
159 CONFIG_SIMPLE noncore/tools/calc2/simplesimple.pro 160 CONFIG_SIMPLE noncore/tools/calc2/simplesimple.pro
160CONFIG_SIMPLE_PIM examples/simple-pim example.pro 161CONFIG_SIMPLE_PIM examples/simple-pim example.pro
161 CONFIG_SINGLE singlesingle.pro 162 CONFIG_SINGLE singlesingle.pro
162 CONFIG_SNAKE noncore/games/snakesnake.pro 163 CONFIG_SNAKE noncore/games/snakesnake.pro
163 CONFIG_SOLITAIRE noncore/games/solitairesolitaire.pro 164 CONFIG_SOLITAIRE noncore/games/solitairesolitaire.pro
164 CONFIG_SOUND noncore/settings/soundsound.pro 165 CONFIG_SOUND noncore/settings/soundsound.pro
165 CONFIG_SSHKEYS noncore/settings/sshkeyssshkeys.pro 166 CONFIG_SSHKEYS noncore/settings/sshkeyssshkeys.pro
166 CONFIG_SUSPENDAPPLET core/applets/suspendappletsuspendapplet.pro 167 CONFIG_SUSPENDAPPLET core/applets/suspendappletsuspendapplet.pro
167 CONFIG_SYSINFO noncore/settings/sysinfosysinfo.pro 168 CONFIG_SYSINFO noncore/settings/sysinfosysinfo.pro
168 CONFIG_TABLEVIEWER noncore/apps/tableviewertableviewer.pro 169 CONFIG_TABLEVIEWER noncore/apps/tableviewertableviewer.pro
169 CONFIG_TABMANAGER noncore/settings/tabmanagertabmanager.pro 170 CONFIG_TABMANAGER noncore/settings/tabmanagertabmanager.pro
170 CONFIG_TABOAPP core/apps/taboapptaboapp.pro 171 CONFIG_TABOAPP core/apps/taboapptaboapp.pro
171 CONFIG_TEST libsql/testtest.pro 172 CONFIG_TEST libsql/testtest.pro
172 CONFIG_TEST noncore/apps/opie-console/testtest.pro 173 CONFIG_TEST noncore/apps/opie-console/testtest.pro
173 CONFIG_TETRIX noncore/games/tetrixtetrix.pro 174 CONFIG_TETRIX noncore/games/tetrixtetrix.pro
174 CONFIG_TEXTEDIT core/apps/textedittextedit.pro 175 CONFIG_TEXTEDIT core/apps/textedittextedit.pro
175 CONFIG_THEME noncore/styles/themetheme.pro 176 CONFIG_THEME noncore/styles/themetheme.pro
176 CONFIG_TICTAC noncore/games/tictactictac.pro 177 CONFIG_TICTAC noncore/games/tictactictac.pro
177 CONFIG_TINYKATE noncore/apps/tinykatetinykate.pro 178 CONFIG_TINYKATE noncore/apps/tinykatetinykate.pro
178CONFIG_TODAY_ADDRESSBOOK core/pim/today/plugins/addressbook addressbook.pro 179CONFIG_TODAY_ADDRESSBOOK core/pim/today/plugins/addressbook addressbook.pro
179 CONFIG_TODAY core/pim/todaytoday.pro 180 CONFIG_TODAY core/pim/todaytoday.pro
180 CONFIG_TODAY_DATEBOOK core/pim/today/plugins/datebookdatebook.pro 181 CONFIG_TODAY_DATEBOOK core/pim/today/plugins/datebookdatebook.pro
181CONFIG_TODAY_EXAMPLE examples/todayplugin example.pro 182CONFIG_TODAY_EXAMPLE examples/todayplugin example.pro
182 CONFIG_TODAY_FORTUNE noncore/todayplugins/fortunefortune.pro 183 CONFIG_TODAY_FORTUNE noncore/todayplugins/fortunefortune.pro
183 CONFIG_TODAY_MAIL core/pim/today/plugins/mailmail.pro 184 CONFIG_TODAY_MAIL core/pim/today/plugins/mailmail.pro
184 CONFIG_TODAY_STOCKTICKERLIB noncore/todayplugins/stockticker/stocktickerlibstocktickerlib.pro 185 CONFIG_TODAY_STOCKTICKERLIB noncore/todayplugins/stockticker/stocktickerlibstocktickerlib.pro
185 CONFIG_TODAY_STOCKTICKER noncore/todayplugins/stockticker/stocktickerstockticker.pro 186 CONFIG_TODAY_STOCKTICKER noncore/todayplugins/stockticker/stocktickerstockticker.pro
186 CONFIG_TODAY_TODOLIST core/pim/today/plugins/todolisttodolist.pro 187 CONFIG_TODAY_TODOLIST core/pim/today/plugins/todolisttodolist.pro
187 CONFIG_TODAY_WEATHERnoncore/todayplugins/weather weather.pro 188 CONFIG_TODAY_WEATHERnoncore/todayplugins/weather weather.pro
188 CONFIG_TODO core/pim/todotodo.pro 189 CONFIG_TODO core/pim/todotodo.pro
189 CONFIG_TONLEITER noncore/multimedia/tonleitertonleiter.pro 190 CONFIG_TONLEITER noncore/multimedia/tonleitertonleiter.pro
190 CONFIG_TRACKER noncore/multimedia/trackertracker.pro 191 CONFIG_TRACKER noncore/multimedia/trackertracker.pro
191 CONFIG_UBROWSER noncore/net/ubrowserubrowser.pro 192 CONFIG_UBROWSER noncore/net/ubrowserubrowser.pro
192 CONFIG_UNIKEYBOARD inputmethods/unikeyboardunikeyboard.pro 193 CONFIG_UNIKEYBOARD inputmethods/unikeyboardunikeyboard.pro
193 CONFIG_USERMANAGER noncore/settings/usermanagerusermanager.pro 194 CONFIG_USERMANAGER noncore/settings/usermanagerusermanager.pro
194 CONFIG_VMEMO core/applets/vmemovmemo.pro 195 CONFIG_VMEMO core/applets/vmemovmemo.pro
195 CONFIG_VOLUMEAPPLET core/applets/volumeappletvolumeapplet.pro 196 CONFIG_VOLUMEAPPLET core/applets/volumeappletvolumeapplet.pro
196 CONFIG_VTAPPLET core/applets/vtappletvtapplet.pro 197 CONFIG_VTAPPLET core/applets/vtappletvtapplet.pro
197 CONFIG_WAVPLUGIN core/multimedia/opieplayer/wavpluginwavplugin.pro 198 CONFIG_WAVPLUGIN core/multimedia/opieplayer/wavpluginwavplugin.pro
198 CONFIG_WELLENREITER noncore/net/wellenreiterwellenreiter.pro 199 CONFIG_WELLENREITER noncore/net/wellenreiterwellenreiter.pro
199 CONFIG_WIRELESSAPPLET noncore/applets/wirelessappletwirelessapplet.pro 200 CONFIG_WIRELESSAPPLET noncore/applets/wirelessappletwirelessapplet.pro
200 CONFIG_WLAN noncore/settings/networksettings/wlanwlan.pro 201 CONFIG_WLAN noncore/settings/networksettings/wlanwlan.pro
201 CONFIG_WORDGAME noncore/games/wordgamewordgame.pro 202 CONFIG_WORDGAME noncore/games/wordgamewordgame.pro
202 CONFIG_YATZEE noncore/games/oyatzeeoyatzee.pro 203 CONFIG_YATZEE noncore/games/oyatzeeoyatzee.pro
204CONFIG_ZKBAPPLET noncore/applets/zkbapplet zkbapplet.pro
203 CONFIG_ZLINES noncore/games/zlines zlines.pro 205 CONFIG_ZLINES noncore/games/zlines zlines.pro
204 CONFIG_ZSAFEnoncore/apps/zsafe zsafe.pro 206 CONFIG_ZSAFEnoncore/apps/zsafe zsafe.pro
205 CONFIG_ZSAME noncore/games/zsame zsame.pro 207 CONFIG_ZSAME noncore/games/zsame zsame.pro
diff --git a/pics/keyz-cfg.png b/pics/keyz-cfg.png
new file mode 100644
index 0000000..2855f5f
--- a/dev/null
+++ b/pics/keyz-cfg.png
Binary files differ
diff --git a/pics/zkb-disabled.png b/pics/zkb-disabled.png
new file mode 100644
index 0000000..f64a4cd
--- a/dev/null
+++ b/pics/zkb-disabled.png
Binary files differ
diff --git a/share/zkb/bg.xml b/share/zkb/bg.xml
new file mode 100644
index 0000000..b2c0b06
--- a/dev/null
+++ b/share/zkb/bg.xml
@@ -0,0 +1,494 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="LShift-RShift" parent="common"/>
6<state name="LShift-RShift-Caps" parent="common"/>
7
8<state name="LShift">
9 <map keycode="Right Shift" pressed="true">
10 <event keycode="Meta" unicode="-1" pressed="false"/>
11 <next-state name="LShift-RShift"/>
12 </map>
13</state>
14
15<state name="RShift">
16 <map keycode="L" pressed="true">
17 <event keycode="L" unicode="1096" pressed="true" autorepeat="true"/>
18 </map>
19
20 <map keycode="Comma" pressed="true">
21 <event keycode="Comma" unicode="1097" pressed="true" autorepeat="true"/>
22 </map>
23 <map keycode="L" pressed="false">
24 <event keycode="L" unicode="1096" pressed="false"/>
25 </map>
26
27 <map keycode="Comma" pressed="false">
28 <event keycode="Comma" unicode="1097" pressed="false"/>
29 </map>
30 <map keycode="Left Shift" pressed="false">
31 <event keycode="Shift" unicode="-1" pressed="false"/>
32 <next-state name="LShift-RShift"/>
33 </map>
34</state>
35
36<state name="LShift-Caps">
37 <map keycode="Right Shift" pressed="true">
38 <event keycode="Meta" unicode="-1" pressed="false"/>
39 <next-state name="LShift-RShift-Caps"/>
40 </map>
41</state>
42
43<state name="LShift-Num">
44 <map keycode="Left Shift" pressed="false">
45 <event keycode="Shift" unicode="-1" pressed="false"/>
46 <next-state name="Num"/>
47 </map>
48
49 <map keycode="Fn" pressed="true">
50 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
51 <next-state name="LShift-Fn-Num"/>
52 </map>
53</state>
54
55<state name="RShift-Caps">
56 <map keycode="L" pressed="true">
57 <event keycode="L" unicode="1064" pressed="true" autorepeat="true"/>
58 </map>
59
60 <map keycode="Comma" pressed="true">
61 <event keycode="Comma" unicode="1065" pressed="true" autorepeat="true"/>
62 </map>
63 <map keycode="L" pressed="false">
64 <event keycode="L" unicode="1064" pressed="false"/>
65 </map>
66
67 <map keycode="Comma" pressed="false">
68 <event keycode="Comma" unicode="1065" pressed="false"/>
69 </map>
70 <map keycode="Left Shift" pressed="true">
71 <event keycode="Shift" unicode="-1" pressed="false"/>
72 <next-state name="LShift-RShift-Caps"/>
73 </map>
74</state>
75
76<state name="LShift-RShift">
77 <map keycode="L" pressed="true">
78 <event keycode="L" unicode="1064" pressed="true" autorepeat="true"/>
79 </map>
80
81 <map keycode="Comma" pressed="true">
82 <event keycode="Comma" unicode="1065" pressed="true" autorepeat="true"/>
83 </map>
84 <map keycode="L" pressed="false">
85 <event keycode="L" unicode="1064" pressed="false"/>
86 </map>
87
88 <map keycode="Comma" pressed="false">
89 <event keycode="Comma" unicode="1065" pressed="false"/>
90 </map>
91 <map keycode="Left Shift" pressed="false">
92 <event keycode="Shift" unicode="-1" pressed="false"/>
93 <next-state name="RShift"/>
94 </map>
95
96 <map keycode="Right Shift" pressed="false">
97 <event keycode="Meta" unicode="-1" pressed="false"/>
98 <next-state name="LShift"/>
99 </map>
100</state>
101
102<state name="LShift-RShift-Caps">
103 <map keycode="L" pressed="true">
104 <event keycode="L" unicode="1096" pressed="true" autorepeat="true"/>
105 </map>
106
107 <map keycode="Comma" pressed="true">
108 <event keycode="Comma" unicode="1097" pressed="true" autorepeat="true"/>
109 </map>
110 <map keycode="L" pressed="false">
111 <event keycode="L" unicode="1096" pressed="false"/>
112 </map>
113
114 <map keycode="Comma" pressed="false">
115 <event keycode="Comma" unicode="1097" pressed="false"/>
116 </map>
117 <map keycode="Left Shift" pressed="false">
118 <event keycode="Shift" unicode="-1" pressed="false"/>
119 <next-state name="RShift-Caps"/>
120 </map>
121
122 <map keycode="Right Shift" pressed="false">
123 <event keycode="Meta" unicode="-1" pressed="false"/>
124 <next-state name="LShift-Caps"/>
125 </map>
126</state>
127
128<state name="upper-case">
129 <map keycode="Apostrophe" pressed="true">
130 <event keycode="QuoteDbl" unicode="1068" pressed="true" autorepeat="true"/>
131 </map>
132 <map keycode="Comma" pressed="true">
133 <event keycode="Semicolon" unicode="59" pressed="true" autorepeat="true"/>
134 </map>
135 <map keycode="Period" pressed="true">
136 <event keycode="Colon" unicode="58" pressed="true" autorepeat="true"/>
137 </map>
138 <map keycode="Slash" pressed="true">
139 <event keycode="Question" unicode="1070" pressed="true" autorepeat="true"/>
140 </map>
141 <map keycode="A" pressed="true">
142 <event keycode="A" unicode="1040" pressed="true" autorepeat="true"/>
143 </map>
144 <map keycode="B" pressed="true">
145 <event keycode="B" unicode="1041" pressed="true" autorepeat="true"/>
146 </map>
147 <map keycode="C" pressed="true">
148 <event keycode="C" unicode="1062" pressed="true" autorepeat="true"/>
149 </map>
150 <map keycode="D" pressed="true">
151 <event keycode="D" unicode="1044" pressed="true" autorepeat="true"/>
152 </map>
153 <map keycode="E" pressed="true">
154 <event keycode="E" unicode="1045" pressed="true" autorepeat="true"/>
155 </map>
156 <map keycode="F" pressed="true">
157 <event keycode="F" unicode="1060" pressed="true" autorepeat="true"/>
158 </map>
159 <map keycode="G" pressed="true">
160 <event keycode="G" unicode="1043" pressed="true" autorepeat="true"/>
161 </map>
162 <map keycode="H" pressed="true">
163 <event keycode="H" unicode="1061" pressed="true" autorepeat="true"/>
164 </map>
165 <map keycode="I" pressed="true">
166 <event keycode="I" unicode="1048" pressed="true" autorepeat="true"/>
167 </map>
168 <map keycode="J" pressed="true">
169 <event keycode="J" unicode="1049" pressed="true" autorepeat="true"/>
170 </map>
171 <map keycode="K" pressed="true">
172 <event keycode="K" unicode="1050" pressed="true" autorepeat="true"/>
173 </map>
174 <map keycode="L" pressed="true">
175 <event keycode="L" unicode="1051" pressed="true" autorepeat="true"/>
176 </map>
177 <map keycode="M" pressed="true">
178 <event keycode="M" unicode="1052" pressed="true" autorepeat="true"/>
179 </map>
180 <map keycode="N" pressed="true">
181 <event keycode="N" unicode="1053" pressed="true" autorepeat="true"/>
182 </map>
183 <map keycode="O" pressed="true">
184 <event keycode="O" unicode="1054" pressed="true" autorepeat="true"/>
185 </map>
186 <map keycode="P" pressed="true">
187 <event keycode="P" unicode="1055" pressed="true" autorepeat="true"/>
188 </map>
189 <map keycode="Q" pressed="true">
190 <event keycode="Q" unicode="1071" pressed="true" autorepeat="true"/>
191 </map>
192 <map keycode="R" pressed="true">
193 <event keycode="R" unicode="1056" pressed="true" autorepeat="true"/>
194 </map>
195 <map keycode="S" pressed="true">
196 <event keycode="S" unicode="1057" pressed="true" autorepeat="true"/>
197 </map>
198 <map keycode="T" pressed="true">
199 <event keycode="T" unicode="1058" pressed="true" autorepeat="true"/>
200 </map>
201 <map keycode="U" pressed="true">
202 <event keycode="U" unicode="1059" pressed="true" autorepeat="true"/>
203 </map>
204 <map keycode="V" pressed="true">
205 <event keycode="V" unicode="1046" pressed="true" autorepeat="true"/>
206 </map>
207 <map keycode="W" pressed="true">
208 <event keycode="W" unicode="1042" pressed="true" autorepeat="true"/>
209 </map>
210 <map keycode="X" pressed="true">
211 <event keycode="X" unicode="1063" pressed="true" autorepeat="true"/>
212 </map>
213 <map keycode="Y" pressed="true">
214 <event keycode="Y" unicode="1066" pressed="true" autorepeat="true"/>
215 </map>
216 <map keycode="Z" pressed="true">
217 <event keycode="Z" unicode="1047" pressed="true" autorepeat="true"/>
218 </map>
219 <map keycode="Apostrophe" pressed="false">
220 <event keycode="QuoteDbl" unicode="1068" pressed="false"/>
221 </map>
222 <map keycode="Comma" pressed="false">
223 <event keycode="Semicolon" unicode="59" pressed="false"/>
224 </map>
225 <map keycode="Period" pressed="false">
226 <event keycode="Colon" unicode="58" pressed="false"/>
227 </map>
228 <map keycode="Slash" pressed="false">
229 <event keycode="Question" unicode="1070" pressed="false"/>
230 </map>
231 <map keycode="A" pressed="false">
232 <event keycode="A" unicode="1040" pressed="false"/>
233 </map>
234 <map keycode="B" pressed="false">
235 <event keycode="B" unicode="1041" pressed="false"/>
236 </map>
237 <map keycode="C" pressed="false">
238 <event keycode="C" unicode="1062" pressed="false"/>
239 </map>
240 <map keycode="D" pressed="false">
241 <event keycode="D" unicode="1044" pressed="false"/>
242 </map>
243 <map keycode="E" pressed="false">
244 <event keycode="E" unicode="1045" pressed="false"/>
245 </map>
246 <map keycode="F" pressed="false">
247 <event keycode="F" unicode="1060" pressed="false"/>
248 </map>
249 <map keycode="G" pressed="false">
250 <event keycode="G" unicode="1043" pressed="false"/>
251 </map>
252 <map keycode="H" pressed="false">
253 <event keycode="H" unicode="1061" pressed="false"/>
254 </map>
255 <map keycode="I" pressed="false">
256 <event keycode="I" unicode="1048" pressed="false"/>
257 </map>
258 <map keycode="J" pressed="false">
259 <event keycode="J" unicode="1049" pressed="false"/>
260 </map>
261 <map keycode="K" pressed="false">
262 <event keycode="K" unicode="1050" pressed="false"/>
263 </map>
264 <map keycode="L" pressed="false">
265 <event keycode="L" unicode="1051" pressed="false"/>
266 </map>
267 <map keycode="M" pressed="false">
268 <event keycode="M" unicode="1052" pressed="false"/>
269 </map>
270 <map keycode="N" pressed="false">
271 <event keycode="N" unicode="1053" pressed="false"/>
272 </map>
273 <map keycode="O" pressed="false">
274 <event keycode="O" unicode="1054" pressed="false"/>
275 </map>
276 <map keycode="P" pressed="false">
277 <event keycode="P" unicode="1055" pressed="false"/>
278 </map>
279 <map keycode="Q" pressed="false">
280 <event keycode="Q" unicode="1071" pressed="false"/>
281 </map>
282 <map keycode="R" pressed="false">
283 <event keycode="R" unicode="1056" pressed="false"/>
284 </map>
285 <map keycode="S" pressed="false">
286 <event keycode="S" unicode="1057" pressed="false"/>
287 </map>
288 <map keycode="T" pressed="false">
289 <event keycode="T" unicode="1058" pressed="false"/>
290 </map>
291 <map keycode="U" pressed="false">
292 <event keycode="U" unicode="1059" pressed="false"/>
293 </map>
294 <map keycode="V" pressed="false">
295 <event keycode="V" unicode="1046" pressed="false"/>
296 </map>
297 <map keycode="W" pressed="false">
298 <event keycode="W" unicode="1042" pressed="false"/>
299 </map>
300 <map keycode="X" pressed="false">
301 <event keycode="X" unicode="1063" pressed="false"/>
302 </map>
303 <map keycode="Y" pressed="false">
304 <event keycode="Y" unicode="1066" pressed="false"/>
305 </map>
306 <map keycode="Z" pressed="false">
307 <event keycode="Z" unicode="1047" pressed="false"/>
308 </map>
309</state>
310
311<state name="lower-case">
312 <map keycode="Apostrophe" pressed="true">
313 <event keycode="Apostrophe" unicode="1100" modifiers="Shift" pressed="true" autorepeat="true"/>
314 </map>
315 <map keycode="Comma" pressed="true">
316 <event keycode="Comma" unicode="44" modifiers="Shift" pressed="true" autorepeat="true"/>
317 </map>
318 <map keycode="Period" pressed="true">
319 <event keycode="Period" unicode="46" modifiers="Shift" pressed="true" autorepeat="true"/>
320 </map>
321 <map keycode="Slash" pressed="true">
322 <event keycode="Slash" unicode="1102" modifiers="Shift" pressed="true" autorepeat="true"/>
323 </map>
324 <map keycode="A" pressed="true">
325 <event keycode="A" unicode="1072" pressed="true" autorepeat="true"/>
326 </map>
327 <map keycode="B" pressed="true">
328 <event keycode="B" unicode="1073" pressed="true" autorepeat="true"/>
329 </map>
330 <map keycode="C" pressed="true">
331 <event keycode="C" unicode="1094" pressed="true" autorepeat="true"/>
332 </map>
333 <map keycode="D" pressed="true">
334 <event keycode="D" unicode="1076" pressed="true" autorepeat="true"/>
335 </map>
336 <map keycode="E" pressed="true">
337 <event keycode="E" unicode="1077" pressed="true" autorepeat="true"/>
338 </map>
339 <map keycode="F" pressed="true">
340 <event keycode="F" unicode="1092" pressed="true" autorepeat="true"/>
341 </map>
342 <map keycode="G" pressed="true">
343 <event keycode="G" unicode="1075" pressed="true" autorepeat="true"/>
344 </map>
345 <map keycode="H" pressed="true">
346 <event keycode="H" unicode="1093" pressed="true" autorepeat="true"/>
347 </map>
348 <map keycode="I" pressed="true">
349 <event keycode="I" unicode="1080" pressed="true" autorepeat="true"/>
350 </map>
351 <map keycode="J" pressed="true">
352 <event keycode="J" unicode="1081" pressed="true" autorepeat="true"/>
353 </map>
354 <map keycode="K" pressed="true">
355 <event keycode="K" unicode="1082" pressed="true" autorepeat="true"/>
356 </map>
357 <map keycode="L" pressed="true">
358 <event keycode="L" unicode="1083" pressed="true" autorepeat="true"/>
359 </map>
360 <map keycode="M" pressed="true">
361 <event keycode="M" unicode="1084" pressed="true" autorepeat="true"/>
362 </map>
363 <map keycode="N" pressed="true">
364 <event keycode="N" unicode="1085" pressed="true" autorepeat="true"/>
365 </map>
366 <map keycode="O" pressed="true">
367 <event keycode="O" unicode="1086" pressed="true" autorepeat="true"/>
368 </map>
369 <map keycode="P" pressed="true">
370 <event keycode="P" unicode="1087" pressed="true" autorepeat="true"/>
371 </map>
372 <map keycode="Q" pressed="true">
373 <event keycode="Q" unicode="1103" pressed="true" autorepeat="true"/>
374 </map>
375 <map keycode="R" pressed="true">
376 <event keycode="R" unicode="1088" pressed="true" autorepeat="true"/>
377 </map>
378 <map keycode="S" pressed="true">
379 <event keycode="S" unicode="1089" pressed="true" autorepeat="true"/>
380 </map>
381 <map keycode="T" pressed="true">
382 <event keycode="T" unicode="1090" pressed="true" autorepeat="true"/>
383 </map>
384 <map keycode="U" pressed="true">
385 <event keycode="U" unicode="1091" pressed="true" autorepeat="true"/>
386 </map>
387 <map keycode="V" pressed="true">
388 <event keycode="V" unicode="1078" pressed="true" autorepeat="true"/>
389 </map>
390 <map keycode="W" pressed="true">
391 <event keycode="W" unicode="1074" pressed="true" autorepeat="true"/>
392 </map>
393 <map keycode="X" pressed="true">
394 <event keycode="X" unicode="1095" pressed="true" autorepeat="true"/>
395 </map>
396 <map keycode="Y" pressed="true">
397 <event keycode="Y" unicode="1098" pressed="true" autorepeat="true"/>
398 </map>
399 <map keycode="Z" pressed="true">
400 <event keycode="Z" unicode="1079" pressed="true" autorepeat="true"/>
401 </map>
402 <map keycode="Apostrophe" pressed="false">
403 <event keycode="Apostrophe" unicode="1100" modifiers="Shift" pressed="false"/>
404 </map>
405 <map keycode="Comma" pressed="false">
406 <event keycode="Comma" unicode="44" modifiers="Shift" pressed="false"/>
407 </map>
408 <map keycode="Period" pressed="false">
409 <event keycode="Period" unicode="46" modifiers="Shift" pressed="false"/>
410 </map>
411 <map keycode="Slash" pressed="false">
412 <event keycode="Slash" unicode="1102" modifiers="Shift" pressed="false"/>
413 </map>
414 <map keycode="A" pressed="false">
415 <event keycode="A" unicode="1072" pressed="false"/>
416 </map>
417 <map keycode="B" pressed="false">
418 <event keycode="B" unicode="1073" pressed="false"/>
419 </map>
420 <map keycode="C" pressed="false">
421 <event keycode="C" unicode="1094" pressed="false"/>
422 </map>
423 <map keycode="D" pressed="false">
424 <event keycode="D" unicode="1076" pressed="false"/>
425 </map>
426 <map keycode="E" pressed="false">
427 <event keycode="E" unicode="1077" pressed="false"/>
428 </map>
429 <map keycode="F" pressed="false">
430 <event keycode="F" unicode="1092" pressed="false"/>
431 </map>
432 <map keycode="G" pressed="false">
433 <event keycode="G" unicode="1075" pressed="false"/>
434 </map>
435 <map keycode="H" pressed="false">
436 <event keycode="H" unicode="1093" pressed="false"/>
437 </map>
438 <map keycode="I" pressed="false">
439 <event keycode="I" unicode="1080" pressed="false"/>
440 </map>
441 <map keycode="J" pressed="false">
442 <event keycode="J" unicode="1081" pressed="false"/>
443 </map>
444 <map keycode="K" pressed="false">
445 <event keycode="K" unicode="1082" pressed="false"/>
446 </map>
447 <map keycode="L" pressed="false">
448 <event keycode="L" unicode="1083" pressed="false"/>
449 </map>
450 <map keycode="M" pressed="false">
451 <event keycode="M" unicode="1084" pressed="false"/>
452 </map>
453 <map keycode="N" pressed="false">
454 <event keycode="N" unicode="1085" pressed="false"/>
455 </map>
456 <map keycode="O" pressed="false">
457 <event keycode="O" unicode="1086" pressed="false"/>
458 </map>
459 <map keycode="P" pressed="false">
460 <event keycode="P" unicode="1087" pressed="false"/>
461 </map>
462 <map keycode="Q" pressed="false">
463 <event keycode="Q" unicode="1103" pressed="false"/>
464 </map>
465 <map keycode="R" pressed="false">
466 <event keycode="R" unicode="1088" pressed="false"/>
467 </map>
468 <map keycode="S" pressed="false">
469 <event keycode="S" unicode="1089" pressed="false"/>
470 </map>
471 <map keycode="T" pressed="false">
472 <event keycode="T" unicode="1090" pressed="false"/>
473 </map>
474 <map keycode="U" pressed="false">
475 <event keycode="U" unicode="1091" pressed="false"/>
476 </map>
477 <map keycode="V" pressed="false">
478 <event keycode="V" unicode="1078" pressed="false"/>
479 </map>
480 <map keycode="W" pressed="false">
481 <event keycode="W" unicode="1074" pressed="false"/>
482 </map>
483 <map keycode="X" pressed="false">
484 <event keycode="X" unicode="1095" pressed="false"/>
485 </map>
486 <map keycode="Y" pressed="false">
487 <event keycode="Y" unicode="1098" pressed="false"/>
488 </map>
489 <map keycode="Z" pressed="false">
490 <event keycode="Z" unicode="1079" pressed="false"/>
491 </map>
492</state>
493
494</keymap>
diff --git a/share/zkb/bg.xml.num b/share/zkb/bg.xml.num
new file mode 100644
index 0000000..91fe872
--- a/dev/null
+++ b/share/zkb/bg.xml.num
@@ -0,0 +1,506 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="LShift-RShift" parent="common"/>
6<state name="LShift-RShift-Caps" parent="common"/>
7
8<state name="LShift">
9 <map keycode="4130" pressed="true">
10 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
11 <next-state name="LShift-RShift"/>
12 </map>
13</state>
14
15<state name="RShift">
16 <map keycode="76" pressed="true">
17 <event keycode="76" unicode="1096" modifiers="0" pressed="true" autorepeat="true"/>
18 </map>
19
20 <map keycode="44" pressed="true">
21 <event keycode="44" unicode="1097" modifiers="0" pressed="true" autorepeat="true"/>
22 </map>
23 <map keycode="76" pressed="false">
24 <event keycode="76" unicode="1096" modifiers="0" pressed="false" autorepeat="false"/>
25 </map>
26
27 <map keycode="44" pressed="false">
28 <event keycode="44" unicode="1097" modifiers="0" pressed="false" autorepeat="false"/>
29 </map>
30 <map keycode="4128" pressed="false">
31 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
32 <next-state name="LShift-RShift"/>
33 </map>
34</state>
35
36<state name="LShift-Caps">
37 <map keycode="4130" pressed="true">
38 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
39 <next-state name="LShift-RShift-Caps"/>
40 </map>
41</state>
42
43<state name="LShift-Num">
44 <map keycode="4128" pressed="false">
45 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
46 <next-state name="Num"/>
47 </map>
48
49 <map keycode="4165" pressed="true">
50 <event keycode="4165" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
51 <next-state name="LShift-Fn-Num"/>
52 </map>
53</state>
54
55<state name="RShift-Caps">
56 <map keycode="76" pressed="true">
57 <event keycode="76" unicode="1064" modifiers="0" pressed="true" autorepeat="true"/>
58 </map>
59
60 <map keycode="44" pressed="true">
61 <event keycode="44" unicode="1065" modifiers="0" pressed="true" autorepeat="true"/>
62 </map>
63 <map keycode="76" pressed="false">
64 <event keycode="76" unicode="1064" modifiers="0" pressed="false" autorepeat="false"/>
65 </map>
66
67 <map keycode="44" pressed="false">
68 <event keycode="44" unicode="1065" modifiers="0" pressed="false" autorepeat="false"/>
69 </map>
70 <map keycode="4128" pressed="true">
71 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
72 <next-state name="LShift-RShift-Caps"/>
73 </map>
74</state>
75
76<state name="LShift-RShift">
77 <map keycode="76" pressed="true">
78 <event keycode="76" unicode="1064" modifiers="0" pressed="true" autorepeat="true"/>
79 </map>
80
81 <map keycode="44" pressed="true">
82 <event keycode="44" unicode="1065" modifiers="0" pressed="true" autorepeat="true"/>
83 </map>
84 <map keycode="76" pressed="false">
85 <event keycode="76" unicode="1064" modifiers="0" pressed="false" autorepeat="false"/>
86 </map>
87
88 <map keycode="44" pressed="false">
89 <event keycode="44" unicode="1065" modifiers="0" pressed="false" autorepeat="false"/>
90 </map>
91 <map keycode="4128" pressed="false">
92 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
93 <next-state name="RShift"/>
94 </map>
95
96 <map keycode="4130" pressed="false">
97 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
98 <next-state name="LShift"/>
99 </map>
100</state>
101
102<state name="LShift-RShift-Caps">
103 <map keycode="76" pressed="true">
104 <event keycode="76" unicode="1096" modifiers="0" pressed="true" autorepeat="true"/>
105 </map>
106
107 <map keycode="44" pressed="true">
108 <event keycode="44" unicode="1097" modifiers="0" pressed="true" autorepeat="true"/>
109 </map>
110 <map keycode="76" pressed="false">
111 <event keycode="76" unicode="1096" modifiers="0" pressed="false" autorepeat="false"/>
112 </map>
113
114 <map keycode="44" pressed="false">
115 <event keycode="44" unicode="1097" modifiers="0" pressed="false" autorepeat="false"/>
116 </map>
117 <map keycode="4128" pressed="false">
118 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
119 <next-state name="RShift-Caps"/>
120 </map>
121
122 <map keycode="4130" pressed="false">
123 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
124 <next-state name="LShift-Caps"/>
125 </map>
126</state>
127
128<state name="upper-case">
129 <map keycode="32" pressed="true">
130 <event keycode="32" unicode="32" modifiers="0" pressed="true" autorepeat="false"/>
131 </map>
132 <map keycode="39" pressed="true">
133 <event keycode="39" unicode="1068" modifiers="0" pressed="true" autorepeat="false"/>
134 </map>
135 <map keycode="44" pressed="true">
136 <event keycode="44" unicode="44" modifiers="0" pressed="true" autorepeat="false"/>
137 </map>
138 <map keycode="46" pressed="true">
139 <event keycode="46" unicode="46" modifiers="0" pressed="true" autorepeat="false"/>
140 </map>
141 <map keycode="47" pressed="true">
142 <event keycode="47" unicode="1070" modifiers="0" pressed="true" autorepeat="false"/>
143 </map>
144 <map keycode="65" pressed="true">
145 <event keycode="65" unicode="1040" modifiers="0" pressed="true" autorepeat="false"/>
146 </map>
147 <map keycode="66" pressed="true">
148 <event keycode="66" unicode="1041" modifiers="0" pressed="true" autorepeat="false"/>
149 </map>
150 <map keycode="67" pressed="true">
151 <event keycode="67" unicode="1062" modifiers="0" pressed="true" autorepeat="false"/>
152 </map>
153 <map keycode="68" pressed="true">
154 <event keycode="68" unicode="1044" modifiers="0" pressed="true" autorepeat="false"/>
155 </map>
156 <map keycode="69" pressed="true">
157 <event keycode="69" unicode="1045" modifiers="0" pressed="true" autorepeat="false"/>
158 </map>
159 <map keycode="70" pressed="true">
160 <event keycode="70" unicode="1060" modifiers="0" pressed="true" autorepeat="false"/>
161 </map>
162 <map keycode="71" pressed="true">
163 <event keycode="71" unicode="1043" modifiers="0" pressed="true" autorepeat="false"/>
164 </map>
165 <map keycode="72" pressed="true">
166 <event keycode="72" unicode="1061" modifiers="0" pressed="true" autorepeat="false"/>
167 </map>
168 <map keycode="73" pressed="true">
169 <event keycode="73" unicode="1048" modifiers="0" pressed="true" autorepeat="false"/>
170 </map>
171 <map keycode="74" pressed="true">
172 <event keycode="74" unicode="1049" modifiers="0" pressed="true" autorepeat="false"/>
173 </map>
174 <map keycode="75" pressed="true">
175 <event keycode="75" unicode="1050" modifiers="0" pressed="true" autorepeat="false"/>
176 </map>
177 <map keycode="76" pressed="true">
178 <event keycode="76" unicode="1051" modifiers="0" pressed="true" autorepeat="false"/>
179 </map>
180 <map keycode="77" pressed="true">
181 <event keycode="77" unicode="1052" modifiers="0" pressed="true" autorepeat="false"/>
182 </map>
183 <map keycode="78" pressed="true">
184 <event keycode="78" unicode="1053" modifiers="0" pressed="true" autorepeat="false"/>
185 </map>
186 <map keycode="79" pressed="true">
187 <event keycode="79" unicode="1054" modifiers="0" pressed="true" autorepeat="false"/>
188 </map>
189 <map keycode="80" pressed="true">
190 <event keycode="80" unicode="1055" modifiers="0" pressed="true" autorepeat="false"/>
191 </map>
192 <map keycode="81" pressed="true">
193 <event keycode="81" unicode="1071" modifiers="0" pressed="true" autorepeat="false"/>
194 </map>
195 <map keycode="82" pressed="true">
196 <event keycode="82" unicode="1056" modifiers="0" pressed="true" autorepeat="false"/>
197 </map>
198 <map keycode="83" pressed="true">
199 <event keycode="83" unicode="1057" modifiers="0" pressed="true" autorepeat="false"/>
200 </map>
201 <map keycode="84" pressed="true">
202 <event keycode="84" unicode="1058" modifiers="0" pressed="true" autorepeat="false"/>
203 </map>
204 <map keycode="85" pressed="true">
205 <event keycode="85" unicode="1059" modifiers="0" pressed="true" autorepeat="false"/>
206 </map>
207 <map keycode="86" pressed="true">
208 <event keycode="86" unicode="1046" modifiers="0" pressed="true" autorepeat="false"/>
209 </map>
210 <map keycode="87" pressed="true">
211 <event keycode="87" unicode="1042" modifiers="0" pressed="true" autorepeat="false"/>
212 </map>
213 <map keycode="88" pressed="true">
214 <event keycode="88" unicode="1063" modifiers="0" pressed="true" autorepeat="false"/>
215 </map>
216 <map keycode="89" pressed="true">
217 <event keycode="89" unicode="1066" modifiers="0" pressed="true" autorepeat="false"/>
218 </map>
219 <map keycode="90" pressed="true">
220 <event keycode="90" unicode="1047" modifiers="0" pressed="true" autorepeat="false"/>
221 </map>
222 <map keycode="32" pressed="false">
223 <event keycode="32" unicode="32" modifiers="0" pressed="false" autorepeat="false"/>
224 </map>
225 <map keycode="39" pressed="false">
226 <event keycode="39" unicode="1068" modifiers="0" pressed="false" autorepeat="false"/>
227 </map>
228 <map keycode="44" pressed="false">
229 <event keycode="44" unicode="44" modifiers="0" pressed="false" autorepeat="false"/>
230 </map>
231 <map keycode="46" pressed="false">
232 <event keycode="46" unicode="46" modifiers="0" pressed="false" autorepeat="false"/>
233 </map>
234 <map keycode="47" pressed="false">
235 <event keycode="47" unicode="1070" modifiers="0" pressed="false" autorepeat="false"/>
236 </map>
237 <map keycode="65" pressed="false">
238 <event keycode="65" unicode="1040" modifiers="0" pressed="false" autorepeat="false"/>
239 </map>
240 <map keycode="66" pressed="false">
241 <event keycode="66" unicode="1041" modifiers="0" pressed="false" autorepeat="false"/>
242 </map>
243 <map keycode="67" pressed="false">
244 <event keycode="67" unicode="1062" modifiers="0" pressed="false" autorepeat="false"/>
245 </map>
246 <map keycode="68" pressed="false">
247 <event keycode="68" unicode="1044" modifiers="0" pressed="false" autorepeat="false"/>
248 </map>
249 <map keycode="69" pressed="false">
250 <event keycode="69" unicode="1045" modifiers="0" pressed="false" autorepeat="false"/>
251 </map>
252 <map keycode="70" pressed="false">
253 <event keycode="70" unicode="1060" modifiers="0" pressed="false" autorepeat="false"/>
254 </map>
255 <map keycode="71" pressed="false">
256 <event keycode="71" unicode="1043" modifiers="0" pressed="false" autorepeat="false"/>
257 </map>
258 <map keycode="72" pressed="false">
259 <event keycode="72" unicode="1061" modifiers="0" pressed="false" autorepeat="false"/>
260 </map>
261 <map keycode="73" pressed="false">
262 <event keycode="73" unicode="1048" modifiers="0" pressed="false" autorepeat="false"/>
263 </map>
264 <map keycode="74" pressed="false">
265 <event keycode="74" unicode="1049" modifiers="0" pressed="false" autorepeat="false"/>
266 </map>
267 <map keycode="75" pressed="false">
268 <event keycode="75" unicode="1050" modifiers="0" pressed="false" autorepeat="false"/>
269 </map>
270 <map keycode="76" pressed="false">
271 <event keycode="76" unicode="1051" modifiers="0" pressed="false" autorepeat="false"/>
272 </map>
273 <map keycode="77" pressed="false">
274 <event keycode="77" unicode="1052" modifiers="0" pressed="false" autorepeat="false"/>
275 </map>
276 <map keycode="78" pressed="false">
277 <event keycode="78" unicode="1053" modifiers="0" pressed="false" autorepeat="false"/>
278 </map>
279 <map keycode="79" pressed="false">
280 <event keycode="79" unicode="1054" modifiers="0" pressed="false" autorepeat="false"/>
281 </map>
282 <map keycode="80" pressed="false">
283 <event keycode="80" unicode="1055" modifiers="0" pressed="false" autorepeat="false"/>
284 </map>
285 <map keycode="81" pressed="false">
286 <event keycode="81" unicode="1071" modifiers="0" pressed="false" autorepeat="false"/>
287 </map>
288 <map keycode="82" pressed="false">
289 <event keycode="82" unicode="1056" modifiers="0" pressed="false" autorepeat="false"/>
290 </map>
291 <map keycode="83" pressed="false">
292 <event keycode="83" unicode="1057" modifiers="0" pressed="false" autorepeat="false"/>
293 </map>
294 <map keycode="84" pressed="false">
295 <event keycode="84" unicode="1058" modifiers="0" pressed="false" autorepeat="false"/>
296 </map>
297 <map keycode="85" pressed="false">
298 <event keycode="85" unicode="1059" modifiers="0" pressed="false" autorepeat="false"/>
299 </map>
300 <map keycode="86" pressed="false">
301 <event keycode="86" unicode="1046" modifiers="0" pressed="false" autorepeat="false"/>
302 </map>
303 <map keycode="87" pressed="false">
304 <event keycode="87" unicode="1042" modifiers="0" pressed="false" autorepeat="false"/>
305 </map>
306 <map keycode="88" pressed="false">
307 <event keycode="88" unicode="1063" modifiers="0" pressed="false" autorepeat="false"/>
308 </map>
309 <map keycode="89" pressed="false">
310 <event keycode="89" unicode="1066" modifiers="0" pressed="false" autorepeat="false"/>
311 </map>
312 <map keycode="90" pressed="false">
313 <event keycode="90" unicode="1047" modifiers="0" pressed="false" autorepeat="false"/>
314 </map>
315</state>
316
317<state name="lower-case">
318 <map keycode="32" pressed="true">
319 <event keycode="32" unicode="32" modifiers="8" pressed="true" autorepeat="false"/>
320 </map>
321 <map keycode="39" pressed="true">
322 <event keycode="34" unicode="1100" modifiers="8" pressed="true" autorepeat="false"/>
323 </map>
324 <map keycode="44" pressed="true">
325 <event keycode="59" unicode="59" modifiers="8" pressed="true" autorepeat="false"/>
326 </map>
327 <map keycode="46" pressed="true">
328 <event keycode="58" unicode="58" modifiers="8" pressed="true" autorepeat="false"/>
329 </map>
330 <map keycode="47" pressed="true">
331 <event keycode="63" unicode="1102" modifiers="8" pressed="true" autorepeat="false"/>
332 </map>
333 <map keycode="65" pressed="true">
334 <event keycode="65" unicode="1072" modifiers="0" pressed="true" autorepeat="false"/>
335 </map>
336 <map keycode="66" pressed="true">
337 <event keycode="66" unicode="1073" modifiers="0" pressed="true" autorepeat="false"/>
338 </map>
339 <map keycode="67" pressed="true">
340 <event keycode="67" unicode="1094" modifiers="0" pressed="true" autorepeat="false"/>
341 </map>
342 <map keycode="68" pressed="true">
343 <event keycode="68" unicode="1076" modifiers="0" pressed="true" autorepeat="false"/>
344 </map>
345 <map keycode="69" pressed="true">
346 <event keycode="69" unicode="1077" modifiers="0" pressed="true" autorepeat="false"/>
347 </map>
348 <map keycode="70" pressed="true">
349 <event keycode="70" unicode="1092" modifiers="0" pressed="true" autorepeat="false"/>
350 </map>
351 <map keycode="71" pressed="true">
352 <event keycode="71" unicode="1075" modifiers="0" pressed="true" autorepeat="false"/>
353 </map>
354 <map keycode="72" pressed="true">
355 <event keycode="72" unicode="1093" modifiers="0" pressed="true" autorepeat="false"/>
356 </map>
357 <map keycode="73" pressed="true">
358 <event keycode="73" unicode="1080" modifiers="0" pressed="true" autorepeat="false"/>
359 </map>
360 <map keycode="74" pressed="true">
361 <event keycode="74" unicode="1081" modifiers="0" pressed="true" autorepeat="false"/>
362 </map>
363 <map keycode="75" pressed="true">
364 <event keycode="75" unicode="1082" modifiers="0" pressed="true" autorepeat="false"/>
365 </map>
366 <map keycode="76" pressed="true">
367 <event keycode="76" unicode="1083" modifiers="0" pressed="true" autorepeat="false"/>
368 </map>
369 <map keycode="77" pressed="true">
370 <event keycode="77" unicode="1084" modifiers="0" pressed="true" autorepeat="false"/>
371 </map>
372 <map keycode="78" pressed="true">
373 <event keycode="78" unicode="1085" modifiers="0" pressed="true" autorepeat="false"/>
374 </map>
375 <map keycode="79" pressed="true">
376 <event keycode="79" unicode="1086" modifiers="0" pressed="true" autorepeat="false"/>
377 </map>
378 <map keycode="80" pressed="true">
379 <event keycode="80" unicode="1087" modifiers="0" pressed="true" autorepeat="false"/>
380 </map>
381 <map keycode="81" pressed="true">
382 <event keycode="81" unicode="1103" modifiers="0" pressed="true" autorepeat="false"/>
383 </map>
384 <map keycode="82" pressed="true">
385 <event keycode="82" unicode="1088" modifiers="0" pressed="true" autorepeat="false"/>
386 </map>
387 <map keycode="83" pressed="true">
388 <event keycode="83" unicode="1089" modifiers="0" pressed="true" autorepeat="false"/>
389 </map>
390 <map keycode="84" pressed="true">
391 <event keycode="84" unicode="1090" modifiers="0" pressed="true" autorepeat="false"/>
392 </map>
393 <map keycode="85" pressed="true">
394 <event keycode="85" unicode="1091" modifiers="0" pressed="true" autorepeat="false"/>
395 </map>
396 <map keycode="86" pressed="true">
397 <event keycode="86" unicode="1078" modifiers="0" pressed="true" autorepeat="false"/>
398 </map>
399 <map keycode="87" pressed="true">
400 <event keycode="87" unicode="1074" modifiers="0" pressed="true" autorepeat="false"/>
401 </map>
402 <map keycode="88" pressed="true">
403 <event keycode="88" unicode="1095" modifiers="0" pressed="true" autorepeat="false"/>
404 </map>
405 <map keycode="89" pressed="true">
406 <event keycode="89" unicode="1098" modifiers="0" pressed="true" autorepeat="false"/>
407 </map>
408 <map keycode="90" pressed="true">
409 <event keycode="90" unicode="1079" modifiers="0" pressed="true" autorepeat="false"/>
410 </map>
411 <map keycode="32" pressed="false">
412 <event keycode="32" unicode="32" modifiers="8" pressed="false" autorepeat="false"/>
413 </map>
414 <map keycode="39" pressed="false">
415 <event keycode="34" unicode="1100" modifiers="8" pressed="false" autorepeat="false"/>
416 </map>
417 <map keycode="44" pressed="false">
418 <event keycode="59" unicode="59" modifiers="8" pressed="false" autorepeat="false"/>
419 </map>
420 <map keycode="46" pressed="false">
421 <event keycode="58" unicode="58" modifiers="8" pressed="false" autorepeat="false"/>
422 </map>
423 <map keycode="47" pressed="false">
424 <event keycode="63" unicode="1102" modifiers="8" pressed="false" autorepeat="false"/>
425 </map>
426 <map keycode="65" pressed="false">
427 <event keycode="65" unicode="1072" modifiers="0" pressed="false" autorepeat="false"/>
428 </map>
429 <map keycode="66" pressed="false">
430 <event keycode="66" unicode="1073" modifiers="0" pressed="false" autorepeat="false"/>
431 </map>
432 <map keycode="67" pressed="false">
433 <event keycode="67" unicode="1094" modifiers="0" pressed="false" autorepeat="false"/>
434 </map>
435 <map keycode="68" pressed="false">
436 <event keycode="68" unicode="1076" modifiers="0" pressed="false" autorepeat="false"/>
437 </map>
438 <map keycode="69" pressed="false">
439 <event keycode="69" unicode="1077" modifiers="0" pressed="false" autorepeat="false"/>
440 </map>
441 <map keycode="70" pressed="false">
442 <event keycode="70" unicode="1092" modifiers="0" pressed="false" autorepeat="false"/>
443 </map>
444 <map keycode="71" pressed="false">
445 <event keycode="71" unicode="1075" modifiers="0" pressed="false" autorepeat="false"/>
446 </map>
447 <map keycode="72" pressed="false">
448 <event keycode="72" unicode="1093" modifiers="0" pressed="false" autorepeat="false"/>
449 </map>
450 <map keycode="73" pressed="false">
451 <event keycode="73" unicode="1080" modifiers="0" pressed="false" autorepeat="false"/>
452 </map>
453 <map keycode="74" pressed="false">
454 <event keycode="74" unicode="1081" modifiers="0" pressed="false" autorepeat="false"/>
455 </map>
456 <map keycode="75" pressed="false">
457 <event keycode="75" unicode="1082" modifiers="0" pressed="false" autorepeat="false"/>
458 </map>
459 <map keycode="76" pressed="false">
460 <event keycode="76" unicode="1083" modifiers="0" pressed="false" autorepeat="false"/>
461 </map>
462 <map keycode="77" pressed="false">
463 <event keycode="77" unicode="1084" modifiers="0" pressed="false" autorepeat="false"/>
464 </map>
465 <map keycode="78" pressed="false">
466 <event keycode="78" unicode="1085" modifiers="0" pressed="false" autorepeat="false"/>
467 </map>
468 <map keycode="79" pressed="false">
469 <event keycode="79" unicode="1086" modifiers="0" pressed="false" autorepeat="false"/>
470 </map>
471 <map keycode="80" pressed="false">
472 <event keycode="80" unicode="1087" modifiers="0" pressed="false" autorepeat="false"/>
473 </map>
474 <map keycode="81" pressed="false">
475 <event keycode="81" unicode="1103" modifiers="0" pressed="false" autorepeat="false"/>
476 </map>
477 <map keycode="82" pressed="false">
478 <event keycode="82" unicode="1088" modifiers="0" pressed="false" autorepeat="false"/>
479 </map>
480 <map keycode="83" pressed="false">
481 <event keycode="83" unicode="1089" modifiers="0" pressed="false" autorepeat="false"/>
482 </map>
483 <map keycode="84" pressed="false">
484 <event keycode="84" unicode="1090" modifiers="0" pressed="false" autorepeat="false"/>
485 </map>
486 <map keycode="85" pressed="false">
487 <event keycode="85" unicode="1091" modifiers="0" pressed="false" autorepeat="false"/>
488 </map>
489 <map keycode="86" pressed="false">
490 <event keycode="86" unicode="1078" modifiers="0" pressed="false" autorepeat="false"/>
491 </map>
492 <map keycode="87" pressed="false">
493 <event keycode="87" unicode="1074" modifiers="0" pressed="false" autorepeat="false"/>
494 </map>
495 <map keycode="88" pressed="false">
496 <event keycode="88" unicode="1095" modifiers="0" pressed="false" autorepeat="false"/>
497 </map>
498 <map keycode="89" pressed="false">
499 <event keycode="89" unicode="1098" modifiers="0" pressed="false" autorepeat="false"/>
500 </map>
501 <map keycode="90" pressed="false">
502 <event keycode="90" unicode="1079" modifiers="0" pressed="false" autorepeat="false"/>
503 </map>
504</state>
505
506</keymap>
diff --git a/share/zkb/common.xml b/share/zkb/common.xml
new file mode 100644
index 0000000..255e677
--- a/dev/null
+++ b/share/zkb/common.xml
@@ -0,0 +1,2121 @@
1<keymap>
2
3<!-- State Declarations -->
4
5<state name="common"/>
6<state name="lower-case" parent="common"/>
7<state name="upper-case" parent="common"/>
8<state name="number" parent="common"/>
9<state name="control" parent="common"/>
10<state name="alt" parent="common"/>
11
12<state name="Normal" parent="lower-case"/>
13<state name="LShift" parent="upper-case"/>
14<state name="RShift" parent="upper-case"/>
15<state name="Fn" parent="number"/>
16<state name="Num" parent="number"/>
17<state name="Caps" parent="upper-case"/>
18<state name="iFn"/>
19<state name="sFn" parent="number"/>
20
21<state name="LShift-Fn" parent="control"/>
22<state name="RShift-Fn" parent="alt"/>
23<state name="LShift-Caps" parent="lower-case"/>
24<state name="LShift-Num" parent="number"/>
25<state name="RShift-Caps" parent="lower-case"/>
26<state name="RShift-Num" parent="number"/>
27<state name="Fn-Num" parent="number"/>
28<state name="Fn-Caps" parent="number"/>
29<state name="Num-Caps" parent="number"/>
30<state name="Caps-iFn"/>
31<state name="Caps-sFn" parent="sFn"/>
32
33<state name="LShift-Fn-Caps" parent="control"/>
34<state name="LShift-Fn-Num" parent="control"/>
35<state name="LShift-Num-Caps" parent="number"/>
36<state name="RShift-Fn-Caps" parent="control"/>
37<state name="RShift-Fn-Num" parent="control"/>
38<state name="RShift-Num-Caps" parent="number"/>
39<state name="Fn-Num-Caps" parent="number"/>
40<state name="LShift-Fn-Num-Caps" parent="control"/>
41<state name="RShift-Fn-Num-Caps" parent="control"/>
42
43<state name="Normal" default="true">
44 <map keycode="Left Shift" pressed="true">
45 <event keycode="Shift" unicode="-1" modifiers="Shift" pressed="true"/>
46 <next-state name="LShift"/>
47 </map>
48 <map keycode="Right Shift" pressed="true">
49 <event keycode="Meta" unicode="-1" modifiers="Shift" pressed="true"/>
50 <next-state name="RShift"/>
51 </map>
52 <map keycode="Fn" pressed="true">
53 <event keycode="F22" unicode="-1" pressed="true"/>
54 <next-state name="iFn"/>
55 </map>
56</state>
57
58<state name="LShift">
59 <map keycode="Left Shift" pressed="false">
60 <event keycode="Shift" unicode="-1" pressed="false"/>
61 <next-state name="Normal"/>
62 </map>
63 <map keycode="Fn" pressed="true">
64 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
65 <next-state name="LShift-Fn"/>
66 </map>
67</state>
68
69<state name="RShift">
70 <map keycode="Right Shift" pressed="false">
71 <event keycode="Meta" unicode="-1" pressed="false"/>
72 <next-state name="Normal"/>
73 </map>
74 <map keycode="Fn" pressed="true">
75 <event keycode="F22" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
76 <next-state name="RShift-Fn"/>
77 </map>
78</state>
79
80<state name="Fn">
81 <map keycode="Space" pressed="true">
82 <event keycode="Bar" unicode="124" pressed="true"/>
83 </map>
84 <map keycode="Apostrophe" pressed="true">
85 <event keycode="AsciiTilde" unicode="126" pressed="true"/>
86 </map>
87 <map keycode="Comma" pressed="true">
88 <event keycode="ParenRight" unicode="41" pressed="true"/>
89 </map>
90 <map keycode="Period" pressed="true">
91 <event keycode="Less" unicode="60" pressed="true"/>
92 </map>
93 <map keycode="Slash" pressed="true">
94 <event keycode="NumLock" unicode="-1" pressed="true"/>
95 <next-state name="Fn-Num"/>
96 </map>
97 <map keycode="C" pressed="true">
98 <event keycode="C" unicode="3" modifiers="Control" pressed="true"/>
99 </map>
100 <map keycode="V" pressed="true">
101 <event keycode="V" unicode="22" modifiers="Control" pressed="true"/>
102 </map>
103 <map keycode="X" pressed="true">
104 <event keycode="X" unicode="24" modifiers="Control" pressed="true"/>
105 </map>
106 <map keycode="Space" pressed="false">
107 <event keycode="Bar" unicode="124" pressed="false"/>
108 </map>
109 <map keycode="Apostrophe" pressed="false">
110 <event keycode="AsciiTilde" unicode="126" pressed="false"/>
111 </map>
112 <map keycode="Comma" pressed="false">
113 <event keycode="ParenRight" unicode="41" pressed="false"/>
114 </map>
115 <map keycode="Period" pressed="false">
116 <event keycode="Less" unicode="60" pressed="false"/>
117 </map>
118 <map keycode="C" pressed="false">
119 <event keycode="C" unicode="3" modifiers="Control" pressed="false"/>
120 </map>
121 <map keycode="V" pressed="false">
122 <event keycode="V" unicode="22" modifiers="Control" pressed="false"/>
123 </map>
124 <map keycode="X" pressed="false">
125 <event keycode="X" unicode="24" modifiers="Control" pressed="false"/>
126 </map>
127 <map keycode="Tab" pressed="true">
128 <event keycode="CapsLock" unicode="-1" pressed="true"/>
129 <next-state name="Fn-Caps"/>
130 </map>
131 <map keycode="Left Shift" pressed="true">
132 <event keycode="Shift" unicode="-1" modifiers="Control" pressed="true"/>
133 <next-state name="LShift-Fn"/>
134 </map>
135 <map keycode="Right Shift" pressed="true">
136 <event keycode="Meta" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
137 <next-state name="RShift-Fn"/>
138 </map>
139 <map keycode="Fn" pressed="false">
140 <event keycode="F22" unicode="-1" pressed="true"/>
141 <next-state name="Normal"/>
142 </map>
143</state>
144
145<state name="Num">
146 <map keycode="Fn" pressed="true">
147 <event keycode="F22" unicode="-1" pressed="true"/>
148 <next-state name="Fn-Num"/>
149 </map>
150</state>
151
152<state name="Caps">
153 <map keycode="Left Shift" pressed="true">
154 <event keycode="Shift" unicode="-1" modifiers="Shift" pressed="true"/>
155 <next-state name="LShift-Caps"/>
156 </map>
157
158 <map keycode="Right Shift" pressed="true">
159 <event keycode="Meta" unicode="-1" pressed="true"/>
160 <next-state name="RShift-Caps"/>
161 </map>
162
163 <map keycode="Fn" pressed="true">
164 <event keycode="F22" unicode="-1" pressed="true"/>
165 <next-state name="Caps-iFn"/>
166 </map>
167</state>
168
169<state name="LShift-Fn">
170 <map keycode="Left Shift" pressed="false">
171 <event keycode="Shift" unicode="-1" pressed="false"/>
172 <next-state name="Fn"/>
173 </map>
174
175 <map keycode="Fn" pressed="false">
176 <event keycode="F22" unicode="-1" modifiers="Shift" pressed="false"/>
177 <next-state name="LShift"/>
178 </map>
179
180 <map keycode="Tab" pressed="true">
181 <event keycode="CapsLock" unicode="-1" modifiers="Control|Shift" pressed="true"/>
182 <next-state name="LShift-Fn-Caps"/>
183 </map>
184
185 <map keycode="Slash" pressed="true">
186 <event keycode="NumLock" unicode="-1" modifiers="Control" pressed="true"/>
187 <next-state name="LShift-Fn-Num"/>
188 </map>
189</state>
190
191<state name="RShift-Fn">
192 <map keycode="Right Shift" pressed="false">
193 <event keycode="Meta" unicode="-1" pressed="false"/>
194 <next-state name="Fn"/>
195 </map>
196
197 <map keycode="Fn" pressed="false">
198 <event keycode="F22" unicode="-1" modifiers="Shift" pressed="false"/>
199 <next-state name="RShift"/>
200 </map>
201
202 <map keycode="Tab" pressed="true">
203 <event keycode="CapsLock" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
204 <next-state name="RShift-Fn-Caps"/>
205 </map>
206
207 <map keycode="Slash" pressed="true">
208 <event keycode="NumLock" unicode="-1" modifiers="Alt" pressed="true"/>
209 <next-state name="RShift-Fn-Num"/>
210 </map>
211</state>
212
213<state name="LShift-Caps">
214 <map keycode="Left Shift" pressed="false">
215 <event keycode="Shift" unicode="-1" pressed="false"/>
216 <next-state name="Caps"/>
217 </map>
218
219 <map keycode="Fn" pressed="true">
220 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
221 <next-state name="LShift-Fn-Caps"/>
222 </map>
223</state>
224
225<state name="LShift-Num">
226 <map keycode="Left Shift" pressed="false">
227 <event keycode="Shift" unicode="-1" pressed="false"/>
228 <next-state name="Num"/>
229 </map>
230
231 <map keycode="Fn" pressed="true">
232 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
233 <next-state name="LShift-Fn-Num"/>
234 </map>
235</state>
236
237<state name="RShift-Caps">
238 <map keycode="Right Shift" pressed="false">
239 <event keycode="Meta" unicode="-1" pressed="false"/>
240 <next-state name="Caps"/>
241 </map>
242
243 <map keycode="Fn" pressed="true">
244 <event keycode="F22" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
245 <next-state name="RShift-Fn-Caps"/>
246 </map>
247</state>
248
249<state name="RShift-Num">
250 <map keycode="Right Shift" pressed="false">
251 <event keycode="Meta" unicode="-1" pressed="false"/>
252 <next-state name="Num"/>
253 </map>
254
255 <map keycode="Fn" pressed="true">
256 <event keycode="F22" unicode="-1" pressed="true"/>
257 <next-state name="RShift-Fn-Caps"/>
258 </map>
259</state>
260
261<state name="Fn-Num">
262 <map keycode="Slash" pressed="true">
263 <event keycode="NumLock" unicode="-1" pressed="true"/>
264 <next-state name="Fn"/>
265 </map>
266
267 <map keycode="Tab" pressed="true">
268 <event keycode="CapsLock" unicode="-1" pressed="true"/>
269 <next-state name="Fn-Num-Caps"/>
270 </map>
271
272 <map keycode="Fn" pressed="false">
273 <event keycode="F22" unicode="-1" pressed="false"/>
274 <next-state name="Num"/>
275 </map>
276</state>
277
278<state name="Fn-Caps">
279 <map keycode="Slash" pressed="true">
280 <event keycode="NumLock" unicode="-1" pressed="true"/>
281 <next-state name="Fn-Num-Caps"/>
282 </map>
283
284 <map keycode="Tab" pressed="true">
285 <event keycode="CapsLock" unicode="-1" pressed="true"/>
286 <next-state name="Fn"/>
287 </map>
288
289 <map keycode="Fn" pressed="false">
290 <event keycode="F22" unicode="-1" pressed="false"/>
291 <next-state name="Caps"/>
292 </map>
293</state>
294
295<state name="Num-Caps">
296 <map keycode="Fn" pressed="true">
297 <event keycode="F22" unicode="-1" pressed="true"/>
298 <next-state name="Fn-Num-Caps"/>
299 </map>
300</state>
301
302<state name="LShift-Fn-Caps">
303 <map keycode="Left Shift" pressed="false">
304 <event keycode="Shift" unicode="-1" pressed="false"/>
305 <next-state name="Fn-Caps"/>
306 </map>
307
308 <map keycode="Fn" pressed="false">
309 <event keycode="F22" unicode="-1" modifiers="Shift" pressed="false"/>
310 <next-state name="LShift-Caps"/>
311 </map>
312
313 <map keycode="Tab" pressed="true">
314 <event keycode="CapsLock" unicode="-1" modifiers="Control" pressed="true"/>
315 <next-state name="LShift-Fn"/>
316 </map>
317</state>
318
319<state name="LShift-Fn-Num">
320 <map keycode="Left Shift" pressed="false">
321 <event keycode="Shift" unicode="-1" pressed="false"/>
322 <next-state name="Fn-Num"/>
323 </map>
324
325 <map keycode="Fn" pressed="false">
326 <event keycode="F22" unicode="-1" pressed="false"/>
327 <next-state name="LShift-Num"/>
328 </map>
329
330 <map keycode="Slash" pressed="true">
331 <event keycode="NumLock" unicode="-1" modifiers="Control" pressed="true"/>
332 <next-state name="LShift-Fn"/>
333 </map>
334</state>
335
336<state name="LShift-Num-Caps">
337 <map keycode="Fn" pressed="true">
338 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
339 <next-state name="LShift-Fn-Num-Caps"/>
340 </map>
341
342 <map keycode="Left Shift" pressed="false">
343 <event keycode="Shift" unicode="-1" pressed="false"/>
344 <next-state name="Num-Caps"/>
345 </map>
346</state>
347
348<state name="RShift-Fn-Caps">
349 <map keycode="Right Shift" pressed="false">
350 <event keycode="Meta" unicode="-1" pressed="false"/>
351 <next-state name="Fn-Caps"/>
352 </map>
353
354 <map keycode="Fn" pressed="false">
355 <event keycode="F22" unicode="-1" modifiers="Shift" pressed="false"/>
356 <next-state name="RShift-Caps"/>
357 </map>
358
359 <map keycode="Tab" pressed="true">
360 <event keycode="CapsLock" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
361 <next-state name="RShift-Fn"/>
362 </map>
363</state>
364
365<state name="RShift-Fn-Num">
366 <map keycode="Right Shift" pressed="false">
367 <event keycode="Meta" unicode="-1" pressed="false"/>
368 <next-state name="Fn-Num"/>
369 </map>
370
371 <map keycode="Fn" pressed="false">
372 <event keycode="F22" unicode="-1" pressed="false"/>
373 <next-state name="RShift-Num"/>
374 </map>
375
376 <map keycode="Slash" pressed="true">
377 <event keycode="NumLock" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
378 <next-state name="RShift-Fn"/>
379 </map>
380</state>
381
382<state name="RShift-Num-Caps">
383 <map keycode="Fn" pressed="true">
384 <event keycode="F22" unicode="-1" pressed="true"/>
385 <next-state name="RShift-Fn-Num-Caps"/>
386 </map>
387
388 <map keycode="Right Shift" pressed="false">
389 <event keycode="Meta" unicode="-1" pressed="true"/>
390 <next-state name="Num-Caps"/>
391 </map>
392</state>
393
394<state name="Fn-Num-Caps">
395 <map keycode="Fn" pressed="false">
396 <event keycode="F22" unicode="-1" pressed="false"/>
397 <next-state name="Num-Caps"/>
398 </map>
399
400 <map keycode="Tab" pressed="true">
401 <event keycode="CapsLock" unicode="-1" pressed="true"/>
402 <next-state name="Fn-Num"/>
403 </map>
404
405 <map keycode="Slash" pressed="true">
406 <event keycode="NumLock" unicode="-1" pressed="true"/>
407 <next-state name="Fn-Caps"/>
408 </map>
409
410 <map keycode="Left Shift" pressed="true">
411 <event keycode="Shift" unicode="-1" modifiers="Control" pressed="true"/>
412 <next-state name="LShift-Fn-Num-Caps"/>
413 </map>
414
415 <map keycode="Right Shift" pressed="true">
416 <event keycode="Meta" unicode="-1" modifiers="Alt" pressed="true"/>
417 <next-state name="RShift-Fn-Num-Caps"/>
418 </map>
419</state>
420
421<state name="LShift-Fn-Num-Caps">
422 <map keycode="Fn" pressed="false">
423 <event keycode="F22" unicode="-1" pressed="false"/>
424 <next-state name="LShift-Num-Caps"/>
425 </map>
426
427 <map keycode="Tab" pressed="true">
428 <event keycode="CapsLock" unicode="-1" modifiers="Control" pressed="true"/>
429 <next-state name="LShift-Fn-Num"/>
430 </map>
431
432 <map keycode="Slash" pressed="true">
433 <event keycode="NumLock" unicode="-1" modifiers="Control|Shift" pressed="true"/>
434 <next-state name="LShift-Fn-Caps"/>
435 </map>
436
437 <map keycode="Left Shift" pressed="false">
438 <event keycode="Shift" unicode="-1" pressed="false"/>
439 <next-state name="Fn-Num-Caps"/>
440 </map>
441</state>
442
443<state name="RShift-Fn-Num-Caps">
444 <map keycode="Fn" pressed="false">
445 <event keycode="F22" unicode="-1" pressed="false"/>
446 <next-state name="RShift-Num-Caps"/>
447 </map>
448
449 <map keycode="Tab" pressed="true">
450 <event keycode="CapsLock" unicode="-1" modifiers="Alt" pressed="true"/>
451 <next-state name="RShift-Fn-Num"/>
452 </map>
453
454 <map keycode="Slash" pressed="true">
455 <event keycode="NumLock" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
456 <next-state name="RShift-Fn-Caps"/>
457 </map>
458
459 <map keycode="Right Shift" pressed="false">
460 <event keycode="Meta" unicode="-1" pressed="false"/>
461 <next-state name="Fn-Num-Caps"/>
462 </map>
463</state>
464
465<state name="common">
466 <map keycode="Space" pressed="true">
467 <event keycode="Space" unicode="32" pressed="true" autorepeat="true"/>
468 </map>
469 <map keycode="Cancel" pressed="true">
470 <event keycode="Escape" unicode="27" pressed="true" autorepeat="true"/>
471 </map>
472 <map keycode="Tab" pressed="true">
473 <event keycode="Tab" unicode="9" pressed="true" autorepeat="true"/>
474 </map>
475 <map keycode="Backspace" pressed="true">
476 <event keycode="Backspace" unicode="127" pressed="true" autorepeat="true"/>
477 </map>
478 <map keycode="Enter" pressed="true">
479 <event keycode="Return" unicode="13" pressed="true" autorepeat="true"/>
480 </map>
481 <map keycode="Left" pressed="true">
482 <event keycode="Left" unicode="-1" pressed="true" autorepeat="true"/>
483 </map>
484 <map keycode="Up" pressed="true">
485 <event keycode="Up" unicode="-1" pressed="true" autorepeat="true"/>
486 </map>
487 <map keycode="Right" pressed="true">
488 <event keycode="Right" unicode="-1" pressed="true" autorepeat="true"/>
489 </map>
490 <map keycode="Down" pressed="true">
491 <event keycode="Down" unicode="-1" pressed="true" autorepeat="true"/>
492 </map>
493 <map keycode="Calendar" pressed="true">
494 <event keycode="F9" unicode="-1" pressed="true" autorepeat="true"/>
495 </map>
496 <map keycode="Addressbook" pressed="true">
497 <event keycode="F10" unicode="-1" pressed="true" autorepeat="true"/>
498 </map>
499 <map keycode="Menu" pressed="true">
500 <event keycode="F11" unicode="-1" pressed="true" autorepeat="true"/>
501 </map>
502 <map keycode="Home" pressed="true">
503 <event keycode="F12" unicode="-1" pressed="true" autorepeat="true"/>
504 </map>
505 <map keycode="Mail" pressed="true">
506 <event keycode="F13" unicode="-1" pressed="true" autorepeat="true"/>
507 </map>
508 <map keycode="Middle" pressed="true">
509 <event keycode="F30" unicode="-1" pressed="true" autorepeat="true"/>
510 </map>
511 <map keycode="OK" pressed="true">
512 <event keycode="F33" unicode="-1" pressed="true" autorepeat="true"/>
513 </map>
514 <map keycode="Off" pressed="true">
515 <event keycode="F34" unicode="-1" pressed="true"/>
516 </map>
517 <map keycode="Light" pressed="true">
518 <event keycode="F35" unicode="-1" pressed="true" autorepeat="true"/>
519 </map>
520 <map keycode="Space" pressed="false">
521 <event keycode="Space" unicode="32" pressed="false" autorepeat="true"/>
522 </map>
523 <map keycode="Cancel" pressed="false">
524 <event keycode="Escape" unicode="27" pressed="false"/>
525 </map>
526 <map keycode="Tab" pressed="false">
527 <event keycode="Tab" unicode="9" pressed="false"/>
528 </map>
529 <map keycode="Backspace" pressed="false">
530 <event keycode="Backspace" unicode="127" pressed="false"/>
531 </map>
532 <map keycode="Enter" pressed="false">
533 <event keycode="Return" unicode="13" pressed="false"/>
534 </map>
535 <map keycode="Left" pressed="false">
536 <event keycode="Left" unicode="-1" pressed="false"/>
537 </map>
538 <map keycode="Up" pressed="false">
539 <event keycode="Up" unicode="-1" pressed="false"/>
540 </map>
541 <map keycode="Right" pressed="false">
542 <event keycode="Right" unicode="-1" pressed="false"/>
543 </map>
544 <map keycode="Down" pressed="false">
545 <event keycode="Down" unicode="-1" pressed="false"/>
546 </map>
547 <map keycode="Calendar" pressed="false">
548 <event keycode="F9" unicode="-1" pressed="false"/>
549 </map>
550 <map keycode="Addressbook" pressed="false">
551 <event keycode="F10" unicode="-1" pressed="false"/>
552 </map>
553 <map keycode="Menu" pressed="false">
554 <event keycode="F11" unicode="-1" pressed="false"/>
555 </map>
556 <map keycode="Home" pressed="false">
557 <event keycode="F12" unicode="-1" pressed="false"/>
558 </map>
559 <map keycode="Mail" pressed="false">
560 <event keycode="F13" unicode="-1" pressed="false"/>
561 </map>
562 <map keycode="Middle" pressed="false">
563 <event keycode="F30" unicode="-1" pressed="false"/>
564 </map>
565 <map keycode="OK" pressed="false">
566 <event keycode="F33" unicode="-1" pressed="false"/>
567 </map>
568 <map keycode="Off" pressed="false">
569 <event keycode="F34" unicode="-1" pressed="false"/>
570 </map>
571 <map keycode="Light" pressed="false">
572 <event keycode="F35" unicode="-1" pressed="false"/>
573 </map>
574</state>
575
576<state name="number">
577 <map keycode="Space" pressed="true">
578 <event keycode="Space" unicode="32" pressed="true" autorepeat="true"/>
579 </map>
580 <map keycode="Apostrophe" pressed="true">
581 <event keycode="Apostrophe" unicode="39" pressed="true" autorepeat="true"/>
582 </map>
583 <map keycode="Comma" pressed="true">
584 <event keycode="Comma" unicode="44" pressed="true" autorepeat="true"/>
585 </map>
586 <map keycode="Period" pressed="true">
587 <event keycode="Period" unicode="46" pressed="true" autorepeat="true"/>
588 </map>
589 <map keycode="A" pressed="true">
590 <event keycode="Exclam" unicode="33" pressed="true" autorepeat="true"/>
591 </map>
592 <map keycode="B" pressed="true">
593 <event keycode="Minus" unicode="45" pressed="true" autorepeat="true"/>
594 </map>
595 <map keycode="D" pressed="true">
596 <event keycode="NumberSign" unicode="35" pressed="true" autorepeat="true"/>
597 </map>
598 <map keycode="E" pressed="true">
599 <event keycode="3" unicode="51" pressed="true" autorepeat="true"/>
600 </map>
601 <map keycode="F" pressed="true">
602 <event keycode="Dollar" unicode="36" pressed="true" autorepeat="true"/>
603 </map>
604 <map keycode="G" pressed="true">
605 <event keycode="Percent" unicode="37" pressed="true" autorepeat="true"/>
606 </map>
607 <map keycode="H" pressed="true">
608 <event keycode="Underscore" unicode="95" pressed="true" autorepeat="true"/>
609 </map>
610 <map keycode="I" pressed="true">
611 <event keycode="8" unicode="56" pressed="true" autorepeat="true"/>
612 </map>
613 <map keycode="J" pressed="true">
614 <event keycode="Ampersand" unicode="38" pressed="true" autorepeat="true"/>
615 </map>
616 <map keycode="K" pressed="true">
617 <event keycode="Asterisk" unicode="42" pressed="true" autorepeat="true"/>
618 </map>
619 <map keycode="L" pressed="true">
620 <event keycode="ParenLeft" unicode="40" pressed="true" autorepeat="true"/>
621 </map>
622 <map keycode="M" pressed="true">
623 <event keycode="Equal" unicode="61" pressed="true" autorepeat="true"/>
624 </map>
625 <map keycode="N" pressed="true">
626 <event keycode="Plus" unicode="43" pressed="true" autorepeat="true"/>
627 </map>
628 <map keycode="O" pressed="true">
629 <event keycode="9" unicode="57" pressed="true" autorepeat="true"/>
630 </map>
631 <map keycode="P" pressed="true">
632 <event keycode="0" unicode="48" pressed="true" autorepeat="true"/>
633 </map>
634 <map keycode="Q" pressed="true">
635 <event keycode="1" unicode="49" pressed="true" autorepeat="true"/>
636 </map>
637 <map keycode="R" pressed="true">
638 <event keycode="4" unicode="52" pressed="true" autorepeat="true"/>
639 </map>
640 <map keycode="S" pressed="true">
641 <event keycode="At" unicode="64" pressed="true" autorepeat="true"/>
642 </map>
643 <map keycode="T" pressed="true">
644 <event keycode="5" unicode="53" pressed="true" autorepeat="true"/>
645 </map>
646 <map keycode="U" pressed="true">
647 <event keycode="7" unicode="55" pressed="true" autorepeat="true"/>
648 </map>
649 <map keycode="W" pressed="true">
650 <event keycode="2" unicode="50" pressed="true" autorepeat="true"/>
651 </map>
652 <map keycode="Y" pressed="true">
653 <event keycode="6" unicode="54" pressed="true" autorepeat="true"/>
654 </map>
655 <map keycode="Space" pressed="false">
656 <event keycode="Space" unicode="32" pressed="false"/>
657 </map>
658 <map keycode="Apostrophe" pressed="false">
659 <event keycode="Apostrophe" unicode="39" pressed="false"/>
660 </map>
661 <map keycode="Comma" pressed="false">
662 <event keycode="Comma" unicode="44" pressed="false"/>
663 </map>
664 <map keycode="Period" pressed="false">
665 <event keycode="Period" unicode="46" pressed="false"/>
666 </map>
667 <map keycode="A" pressed="false">
668 <event keycode="Exclam" unicode="33" pressed="false"/>
669 </map>
670 <map keycode="B" pressed="false">
671 <event keycode="Minus" unicode="45" pressed="false"/>
672 </map>
673 <map keycode="D" pressed="false">
674 <event keycode="NumberSign" unicode="35" pressed="false"/>
675 </map>
676 <map keycode="E" pressed="false">
677 <event keycode="3" unicode="51" pressed="false"/>
678 </map>
679 <map keycode="F" pressed="false">
680 <event keycode="Dollar" unicode="36" pressed="false"/>
681 </map>
682 <map keycode="G" pressed="false">
683 <event keycode="Percent" unicode="37" pressed="false"/>
684 </map>
685 <map keycode="H" pressed="false">
686 <event keycode="Underscore" unicode="95" pressed="false"/>
687 </map>
688 <map keycode="I" pressed="false">
689 <event keycode="8" unicode="56" pressed="false"/>
690 </map>
691 <map keycode="J" pressed="false">
692 <event keycode="Ampersand" unicode="38" pressed="false"/>
693 </map>
694 <map keycode="K" pressed="false">
695 <event keycode="Asterisk" unicode="42" pressed="false"/>
696 </map>
697 <map keycode="L" pressed="false">
698 <event keycode="ParenLeft" unicode="40" pressed="false"/>
699 </map>
700 <map keycode="M" pressed="false">
701 <event keycode="Equal" unicode="61" pressed="false"/>
702 </map>
703 <map keycode="N" pressed="false">
704 <event keycode="Plus" unicode="43" pressed="false"/>
705 </map>
706 <map keycode="O" pressed="false">
707 <event keycode="9" unicode="57" pressed="false"/>
708 </map>
709 <map keycode="P" pressed="false">
710 <event keycode="0" unicode="48" pressed="false"/>
711 </map>
712 <map keycode="Q" pressed="false">
713 <event keycode="1" unicode="49" pressed="false"/>
714 </map>
715 <map keycode="R" pressed="false">
716 <event keycode="4" unicode="52" pressed="false"/>
717 </map>
718 <map keycode="S" pressed="false">
719 <event keycode="At" unicode="64" pressed="false"/>
720 </map>
721 <map keycode="T" pressed="false">
722 <event keycode="5" unicode="53" pressed="false"/>
723 </map>
724 <map keycode="U" pressed="false">
725 <event keycode="7" unicode="55" pressed="false"/>
726 </map>
727 <map keycode="W" pressed="false">
728 <event keycode="2" unicode="50" pressed="false"/>
729 </map>
730 <map keycode="Y" pressed="false">
731 <event keycode="6" unicode="54" pressed="false"/>
732 </map>
733</state>
734
735<state name="control">
736 <map keycode="Space" pressed="true">
737 <event keycode="QuoteLeft" unicode="96" modifiers="Control" pressed="true"/>
738 </map>
739 <map keycode="Apostrophe" pressed="true">
740 <event keycode="AsciiCircum" unicode="94" modifiers="Control" pressed="true"/>
741 </map>
742 <map keycode="Comma" pressed="true">
743 <event keycode="BraceLeft" unicode="123" modifiers="Control" pressed="true"/>
744 </map>
745 <map keycode="Period" pressed="true">
746 <event keycode="BracketRight" unicode="93" modifiers="Control" pressed="true"/>
747 </map>
748 <map keycode="A" pressed="true">
749 <event keycode="A" unicode="1" modifiers="Control" pressed="true"/>
750 </map>
751 <map keycode="B" pressed="true">
752 <event keycode="B" unicode="2" modifiers="Control" pressed="true"/>
753 </map>
754 <map keycode="C" pressed="true">
755 <event keycode="C" unicode="3" modifiers="Control" pressed="true"/>
756 </map>
757 <map keycode="D" pressed="true">
758 <event keycode="D" unicode="4" modifiers="Control" pressed="true"/>
759 </map>
760 <map keycode="E" pressed="true">
761 <event keycode="E" unicode="5" modifiers="Control" pressed="true"/>
762 </map>
763 <map keycode="F" pressed="true">
764 <event keycode="F" unicode="6" modifiers="Control" pressed="true"/>
765 </map>
766 <map keycode="G" pressed="true">
767 <event keycode="G" unicode="7" modifiers="Control" pressed="true"/>
768 </map>
769 <map keycode="H" pressed="true">
770 <event keycode="H" unicode="8" modifiers="Control" pressed="true"/>
771 </map>
772 <map keycode="I" pressed="true">
773 <event keycode="I" unicode="9" modifiers="Control" pressed="true"/>
774 </map>
775 <map keycode="J" pressed="true">
776 <event keycode="J" unicode="10" modifiers="Control" pressed="true"/>
777 </map>
778 <map keycode="K" pressed="true">
779 <event keycode="K" unicode="11" modifiers="Control" pressed="true"/>
780 </map>
781 <map keycode="L" pressed="true">
782 <event keycode="L" unicode="12" modifiers="Control" pressed="true"/>
783 </map>
784 <map keycode="M" pressed="true">
785 <event keycode="M" unicode="13" modifiers="Control" pressed="true"/>
786 </map>
787 <map keycode="N" pressed="true">
788 <event keycode="N" unicode="14" modifiers="Control" pressed="true"/>
789 </map>
790 <map keycode="O" pressed="true">
791 <event keycode="O" unicode="15" modifiers="Control" pressed="true"/>
792 </map>
793 <map keycode="P" pressed="true">
794 <event keycode="P" unicode="16" modifiers="Control" pressed="true"/>
795 </map>
796 <map keycode="Q" pressed="true">
797 <event keycode="Q" unicode="17" modifiers="Control" pressed="true"/>
798 </map>
799 <map keycode="R" pressed="true">
800 <event keycode="R" unicode="18" modifiers="Control" pressed="true"/>
801 </map>
802 <map keycode="S" pressed="true">
803 <event keycode="S" unicode="19" modifiers="Control" pressed="true"/>
804 </map>
805 <map keycode="T" pressed="true">
806 <event keycode="T" unicode="20" modifiers="Control" pressed="true"/>
807 </map>
808 <map keycode="U" pressed="true">
809 <event keycode="U" unicode="21" modifiers="Control" pressed="true"/>
810 </map>
811 <map keycode="V" pressed="true">
812 <event keycode="V" unicode="22" modifiers="Control" pressed="true"/>
813 </map>
814 <map keycode="W" pressed="true">
815 <event keycode="W" unicode="23" modifiers="Control" pressed="true"/>
816 </map>
817 <map keycode="X" pressed="true">
818 <event keycode="X" unicode="24" modifiers="Control" pressed="true"/>
819 </map>
820 <map keycode="Y" pressed="true">
821 <event keycode="Y" unicode="25" modifiers="Control" pressed="true"/>
822 </map>
823 <map keycode="Z" pressed="true">
824 <event keycode="Z" unicode="26" modifiers="Control" pressed="true"/>
825 </map>
826 <map keycode="Space" pressed="false">
827 <event keycode="QuoteLeft" unicode="96" modifiers="Control" pressed="false"/>
828 </map>
829 <map keycode="Apostrophe" pressed="false">
830 <event keycode="AsciiCircum" unicode="94" modifiers="Control" pressed="false"/>
831 </map>
832 <map keycode="Comma" pressed="false">
833 <event keycode="BraceLeft" unicode="123" modifiers="Control" pressed="false"/>
834 </map>
835 <map keycode="Period" pressed="false">
836 <event keycode="BracketRight" unicode="93" modifiers="Control" pressed="false"/>
837 </map>
838 <map keycode="A" pressed="false">
839 <event keycode="A" unicode="1" modifiers="Control" pressed="false"/>
840 </map>
841 <map keycode="B" pressed="false">
842 <event keycode="B" unicode="2" modifiers="Control" pressed="false"/>
843 </map>
844 <map keycode="C" pressed="false">
845 <event keycode="C" unicode="3" modifiers="Control" pressed="false"/>
846 </map>
847 <map keycode="D" pressed="false">
848 <event keycode="D" unicode="4" modifiers="Control" pressed="false"/>
849 </map>
850 <map keycode="E" pressed="false">
851 <event keycode="E" unicode="5" modifiers="Control" pressed="false"/>
852 </map>
853 <map keycode="F" pressed="false">
854 <event keycode="F" unicode="6" modifiers="Control" pressed="false"/>
855 </map>
856 <map keycode="G" pressed="false">
857 <event keycode="G" unicode="7" modifiers="Control" pressed="false"/>
858 </map>
859 <map keycode="H" pressed="false">
860 <event keycode="H" unicode="8" modifiers="Control" pressed="false"/>
861 </map>
862 <map keycode="I" pressed="false">
863 <event keycode="I" unicode="9" modifiers="Control" pressed="false"/>
864 </map>
865 <map keycode="J" pressed="false">
866 <event keycode="J" unicode="10" modifiers="Control" pressed="false"/>
867 </map>
868 <map keycode="K" pressed="false">
869 <event keycode="K" unicode="11" modifiers="Control" pressed="false"/>
870 </map>
871 <map keycode="L" pressed="false">
872 <event keycode="L" unicode="12" modifiers="Control" pressed="false"/>
873 </map>
874 <map keycode="M" pressed="false">
875 <event keycode="M" unicode="13" modifiers="Control" pressed="false"/>
876 </map>
877 <map keycode="N" pressed="false">
878 <event keycode="N" unicode="14" modifiers="Control" pressed="false"/>
879 </map>
880 <map keycode="O" pressed="false">
881 <event keycode="O" unicode="15" modifiers="Control" pressed="false"/>
882 </map>
883 <map keycode="P" pressed="false">
884 <event keycode="P" unicode="16" modifiers="Control" pressed="false"/>
885 </map>
886 <map keycode="Q" pressed="false">
887 <event keycode="Q" unicode="17" modifiers="Control" pressed="false"/>
888 </map>
889 <map keycode="R" pressed="false">
890 <event keycode="R" unicode="18" modifiers="Control" pressed="false"/>
891 </map>
892 <map keycode="S" pressed="false">
893 <event keycode="S" unicode="19" modifiers="Control" pressed="false"/>
894 </map>
895 <map keycode="T" pressed="false">
896 <event keycode="T" unicode="20" modifiers="Control" pressed="false"/>
897 </map>
898 <map keycode="U" pressed="false">
899 <event keycode="U" unicode="21" modifiers="Control" pressed="false"/>
900 </map>
901 <map keycode="V" pressed="false">
902 <event keycode="V" unicode="22" modifiers="Control" pressed="false"/>
903 </map>
904 <map keycode="W" pressed="false">
905 <event keycode="W" unicode="23" modifiers="Control" pressed="false"/>
906 </map>
907 <map keycode="X" pressed="false">
908 <event keycode="X" unicode="24" modifiers="Control" pressed="false"/>
909 </map>
910 <map keycode="Y" pressed="false">
911 <event keycode="Y" unicode="25" modifiers="Control" pressed="false"/>
912 </map>
913 <map keycode="Z" pressed="false">
914 <event keycode="Z" unicode="26" modifiers="Control" pressed="false"/>
915 </map>
916</state>
917
918<state name="alt">
919 <map keycode="Space" pressed="true">
920 <event keycode="Space" unicode="96" modifiers="Alt|Shift" pressed="true"/>
921 </map>
922 <map keycode="Apostrophe" pressed="true">
923 <event keycode="AsciiCircum" unicode="94" modifiers="Alt|Shift" pressed="true"/>
924 </map>
925 <map keycode="Comma" pressed="true">
926 <event keycode="BraceLeft" unicode="123" modifiers="Alt|Shift" pressed="true"/>
927 </map>
928 <map keycode="Period" pressed="true">
929 <event keycode="BracketRight" unicode="93" modifiers="Alt|Shift" pressed="true"/>
930 </map>
931 <map keycode="A" pressed="true">
932 <event keycode="Exclam" unicode="65" modifiers="Alt|Shift" pressed="true"/>
933 </map>
934 <map keycode="B" pressed="true">
935 <event keycode="Minus" unicode="66" modifiers="Alt|Shift" pressed="true"/>
936 </map>
937 <map keycode="C" pressed="true">
938 <event keycode="NumberSign" unicode="67" modifiers="Alt|Shift" pressed="true"/>
939 </map>
940 <map keycode="D" pressed="true">
941 <event keycode="3" unicode="68" modifiers="Alt|Shift" pressed="true"/>
942 </map>
943 <map keycode="E" pressed="true">
944 <event keycode="Dollar" unicode="69" modifiers="Alt|Shift" pressed="true"/>
945 </map>
946 <map keycode="F" pressed="true">
947 <event keycode="Percent" unicode="70" modifiers="Alt|Shift" pressed="true"/>
948 </map>
949 <map keycode="G" pressed="true">
950 <event keycode="Underscore" unicode="71" modifiers="Alt|Shift" pressed="true"/>
951 </map>
952 <map keycode="H" pressed="true">
953 <event keycode="8" unicode="72" modifiers="Alt|Shift" pressed="true"/>
954 </map>
955 <map keycode="I" pressed="true">
956 <event keycode="8" unicode="73" modifiers="Alt|Shift" pressed="true"/>
957 </map>
958 <map keycode="J" pressed="true">
959 <event keycode="Ampersand" unicode="74" modifiers="Alt|Shift" pressed="true"/>
960 </map>
961 <map keycode="K" pressed="true">
962 <event keycode="Asterisk" unicode="75" modifiers="Alt|Shift" pressed="true"/>
963 </map>
964 <map keycode="L" pressed="true">
965 <event keycode="ParenLeft" unicode="76" modifiers="Alt|Shift" pressed="true"/>
966 </map>
967 <map keycode="M" pressed="true">
968 <event keycode="Equal" unicode="77" modifiers="Alt|Shift" pressed="true"/>
969 </map>
970 <map keycode="N" pressed="true">
971 <event keycode="Plus" unicode="78" modifiers="Alt|Shift" pressed="true"/>
972 </map>
973 <map keycode="O" pressed="true">
974 <event keycode="9" unicode="79" modifiers="Alt|Shift" pressed="true"/>
975 </map>
976 <map keycode="P" pressed="true">
977 <event keycode="0" unicode="80" modifiers="Alt|Shift" pressed="true"/>
978 </map>
979 <map keycode="Q" pressed="true">
980 <event keycode="1" unicode="81" modifiers="Alt|Shift" pressed="true"/>
981 </map>
982 <map keycode="R" pressed="true">
983 <event keycode="4" unicode="82" modifiers="Alt|Shift" pressed="true"/>
984 </map>
985 <map keycode="S" pressed="true">
986 <event keycode="At" unicode="83" modifiers="Alt|Shift" pressed="true"/>
987 </map>
988 <map keycode="T" pressed="true">
989 <event keycode="5" unicode="84" modifiers="Alt|Shift" pressed="true"/>
990 </map>
991 <map keycode="U" pressed="true">
992 <event keycode="7" unicode="85" modifiers="Alt|Shift" pressed="true"/>
993 </map>
994 <map keycode="V" pressed="true">
995 <event keycode="2" unicode="86" modifiers="Alt|Shift" pressed="true"/>
996 </map>
997 <map keycode="W" pressed="true">
998 <event keycode="6" unicode="87" modifiers="Alt|Shift" pressed="true"/>
999 </map>
1000 <map keycode="X" pressed="true">
1001 <event keycode="Bar" unicode="88" modifiers="Alt|Shift" pressed="true"/>
1002 </map>
1003 <map keycode="Y" pressed="true">
1004 <event keycode="AsciiTilde" unicode="89" modifiers="Alt|Shift" pressed="true"/>
1005 </map>
1006 <map keycode="Z" pressed="true">
1007 <event keycode="Z" unicode="90" modifiers="Alt|Shift" pressed="true"/>
1008 </map>
1009 <map keycode="Space" pressed="false">
1010 <event keycode="Space" unicode="96" modifiers="Alt|Shift" pressed="false"/>
1011 </map>
1012 <map keycode="Apostrophe" pressed="false">
1013 <event keycode="AsciiCircum" unicode="94" modifiers="Alt|Shift" pressed="false"/>
1014 </map>
1015 <map keycode="Comma" pressed="false">
1016 <event keycode="BraceLeft" unicode="123" modifiers="Alt|Shift" pressed="false"/>
1017 </map>
1018 <map keycode="Period" pressed="false">
1019 <event keycode="BracketRight" unicode="93" modifiers="Alt|Shift" pressed="false"/>
1020 </map>
1021 <map keycode="A" pressed="false">
1022 <event keycode="Exclam" unicode="65" modifiers="Alt|Shift" pressed="false"/>
1023 </map>
1024 <map keycode="B" pressed="false">
1025 <event keycode="Minus" unicode="66" modifiers="Alt|Shift" pressed="false"/>
1026 </map>
1027 <map keycode="C" pressed="false">
1028 <event keycode="NumberSign" unicode="67" modifiers="Alt|Shift" pressed="false"/>
1029 </map>
1030 <map keycode="D" pressed="false">
1031 <event keycode="3" unicode="68" modifiers="Alt|Shift" pressed="false"/>
1032 </map>
1033 <map keycode="E" pressed="false">
1034 <event keycode="Dollar" unicode="69" modifiers="Alt|Shift" pressed="false"/>
1035 </map>
1036 <map keycode="F" pressed="false">
1037 <event keycode="Percent" unicode="70" modifiers="Alt|Shift" pressed="false"/>
1038 </map>
1039 <map keycode="G" pressed="false">
1040 <event keycode="Underscore" unicode="71" modifiers="Alt|Shift" pressed="false"/>
1041 </map>
1042 <map keycode="H" pressed="false">
1043 <event keycode="8" unicode="72" modifiers="Alt|Shift" pressed="false"/>
1044 </map>
1045 <map keycode="I" pressed="false">
1046 <event keycode="8" unicode="73" modifiers="Alt|Shift" pressed="false"/>
1047 </map>
1048 <map keycode="J" pressed="false">
1049 <event keycode="Ampersand" unicode="74" modifiers="Alt|Shift" pressed="false"/>
1050 </map>
1051 <map keycode="K" pressed="false">
1052 <event keycode="Asterisk" unicode="75" modifiers="Alt|Shift" pressed="false"/>
1053 </map>
1054 <map keycode="L" pressed="false">
1055 <event keycode="ParenLeft" unicode="76" modifiers="Alt|Shift" pressed="false"/>
1056 </map>
1057 <map keycode="M" pressed="false">
1058 <event keycode="Equal" unicode="77" modifiers="Alt|Shift" pressed="false"/>
1059 </map>
1060 <map keycode="N" pressed="false">
1061 <event keycode="Plus" unicode="78" modifiers="Alt|Shift" pressed="false"/>
1062 </map>
1063 <map keycode="O" pressed="false">
1064 <event keycode="9" unicode="79" modifiers="Alt|Shift" pressed="false"/>
1065 </map>
1066 <map keycode="P" pressed="false">
1067 <event keycode="0" unicode="80" modifiers="Alt|Shift" pressed="false"/>
1068 </map>
1069 <map keycode="Q" pressed="false">
1070 <event keycode="1" unicode="81" modifiers="Alt|Shift" pressed="false"/>
1071 </map>
1072 <map keycode="R" pressed="false">
1073 <event keycode="4" unicode="82" modifiers="Alt|Shift" pressed="false"/>
1074 </map>
1075 <map keycode="S" pressed="false">
1076 <event keycode="At" unicode="83" modifiers="Alt|Shift" pressed="false"/>
1077 </map>
1078 <map keycode="T" pressed="false">
1079 <event keycode="5" unicode="84" modifiers="Alt|Shift" pressed="false"/>
1080 </map>
1081 <map keycode="U" pressed="false">
1082 <event keycode="7" unicode="85" modifiers="Alt|Shift" pressed="false"/>
1083 </map>
1084 <map keycode="V" pressed="false">
1085 <event keycode="2" unicode="86" modifiers="Alt|Shift" pressed="false"/>
1086 </map>
1087 <map keycode="W" pressed="false">
1088 <event keycode="6" unicode="87" modifiers="Alt|Shift" pressed="false"/>
1089 </map>
1090 <map keycode="X" pressed="false">
1091 <event keycode="Bar" unicode="88" modifiers="Alt|Shift" pressed="false"/>
1092 </map>
1093 <map keycode="Y" pressed="false">
1094 <event keycode="AsciiTilde" unicode="89" modifiers="Alt|Shift" pressed="false"/>
1095 </map>
1096 <map keycode="Z" pressed="false">
1097 <event keycode="Z" unicode="90" modifiers="Alt|Shift" pressed="false"/>
1098 </map>
1099</state>
1100
1101<state name="iFn">
1102 <map keycode="Space" pressed="true">
1103 <event keycode="Bar" unicode="124" pressed="true" autorepeat="true"/>
1104 <next-state name="Fn"/>
1105 </map>
1106 <map keycode="Apostrophe" pressed="true">
1107 <event keycode="AsciiTilde" unicode="126" pressed="true" autorepeat="true"/>
1108 <next-state name="Fn"/>
1109 </map>
1110 <map keycode="Comma" pressed="true">
1111 <event keycode="ParenRight" unicode="41" pressed="true" autorepeat="true"/>
1112 <next-state name="Fn"/>
1113 </map>
1114 <map keycode="Period" pressed="true">
1115 <event keycode="Less" unicode="60" pressed="true" autorepeat="true"/>
1116 <next-state name="Fn"/>
1117 </map>
1118 <map keycode="Slash" pressed="true">
1119 <event keycode="NumLock" unicode="-1" pressed="true"/>
1120 <next-state name="Fn-Num"/>
1121 </map>
1122 <map keycode="A" pressed="true">
1123 <event keycode="Exclam" unicode="33" pressed="true" autorepeat="true"/>
1124 <next-state name="Fn"/>
1125 </map>
1126 <map keycode="B" pressed="true">
1127 <event keycode="Minus" unicode="45" pressed="true" autorepeat="true"/>
1128 <next-state name="Fn"/>
1129 </map>
1130 <map keycode="C" pressed="true">
1131 <event keycode="C" unicode="3" modifiers="Control" pressed="true"/>
1132 <next-state name="Fn"/>
1133 </map>
1134 <map keycode="D" pressed="true">
1135 <event keycode="NumberSign" unicode="35" pressed="true" autorepeat="true"/>
1136 <next-state name="Fn"/>
1137 </map>
1138 <map keycode="E" pressed="true">
1139 <event keycode="3" unicode="51" pressed="true" autorepeat="true"/>
1140 <next-state name="Fn"/>
1141 </map>
1142 <map keycode="F" pressed="true">
1143 <event keycode="Dollar" unicode="36" pressed="true" autorepeat="true"/>
1144 <next-state name="Fn"/>
1145 </map>
1146 <map keycode="G" pressed="true">
1147 <event keycode="Percent" unicode="37" pressed="true" autorepeat="true"/>
1148 <next-state name="Fn"/>
1149 </map>
1150 <map keycode="H" pressed="true">
1151 <event keycode="Underscore" unicode="95" pressed="true" autorepeat="true"/>
1152 <next-state name="Fn"/>
1153 </map>
1154 <map keycode="I" pressed="true">
1155 <event keycode="8" unicode="56" pressed="true" autorepeat="true"/>
1156 <next-state name="Fn"/>
1157 </map>
1158 <map keycode="J" pressed="true">
1159 <event keycode="Ampersand" unicode="38" pressed="true" autorepeat="true"/>
1160 <next-state name="Fn"/>
1161 </map>
1162 <map keycode="K" pressed="true">
1163 <event keycode="Asterisk" unicode="42" pressed="true" autorepeat="true"/>
1164 <next-state name="Fn"/>
1165 </map>
1166 <map keycode="L" pressed="true">
1167 <event keycode="ParenLeft" unicode="40" pressed="true" autorepeat="true"/>
1168 <next-state name="Fn"/>
1169 </map>
1170 <map keycode="M" pressed="true">
1171 <event keycode="Equal" unicode="61" pressed="true" autorepeat="true"/>
1172 <next-state name="Fn"/>
1173 </map>
1174 <map keycode="N" pressed="true">
1175 <event keycode="Plus" unicode="43" pressed="true" autorepeat="true"/>
1176 <next-state name="Fn"/>
1177 </map>
1178 <map keycode="O" pressed="true">
1179 <event keycode="9" unicode="57" pressed="true" autorepeat="true"/>
1180 <next-state name="Fn"/>
1181 </map>
1182 <map keycode="P" pressed="true">
1183 <event keycode="0" unicode="48" pressed="true" autorepeat="true"/>
1184 <next-state name="Fn"/>
1185 </map>
1186 <map keycode="Q" pressed="true">
1187 <event keycode="1" unicode="49" pressed="true" autorepeat="true"/>
1188 <next-state name="Fn"/>
1189 </map>
1190 <map keycode="R" pressed="true">
1191 <event keycode="4" unicode="52" pressed="true" autorepeat="true"/>
1192 <next-state name="Fn"/>
1193 </map>
1194 <map keycode="S" pressed="true">
1195 <event keycode="At" unicode="64" pressed="true" autorepeat="true"/>
1196 <next-state name="Fn"/>
1197 </map>
1198 <map keycode="T" pressed="true">
1199 <event keycode="5" unicode="53" pressed="true" autorepeat="true"/>
1200 <next-state name="Fn"/>
1201 </map>
1202 <map keycode="U" pressed="true">
1203 <event keycode="7" unicode="55" pressed="true" autorepeat="true"/>
1204 <next-state name="Fn"/>
1205 </map>
1206 <map keycode="V" pressed="true">
1207 <event keycode="V" unicode="22" modifiers="Control" pressed="true"/>
1208 <next-state name="Fn"/>
1209 </map>
1210 <map keycode="W" pressed="true">
1211 <event keycode="2" unicode="50" pressed="true" autorepeat="true"/>
1212 <next-state name="Fn"/>
1213 </map>
1214 <map keycode="X" pressed="true">
1215 <event keycode="X" unicode="24" modifiers="Control" pressed="true"/>
1216 <next-state name="Fn"/>
1217 </map>
1218 <map keycode="Y" pressed="true">
1219 <event keycode="6" unicode="54" pressed="true" autorepeat="true"/>
1220 <next-state name="Fn"/>
1221 </map>
1222 <map keycode="Tab" pressed="true">
1223 <event keycode="CapsLock" unicode="-1" pressed="true"/>
1224 <next-state name="Fn-Caps"/>
1225 </map>
1226 <map keycode="Left Shift" pressed="true">
1227 <event keycode="Shift" unicode="-1" modifiers="Control" pressed="true"/>
1228 <next-state name="LShift-Fn"/>
1229 </map>
1230 <map keycode="Right Shift" pressed="true">
1231 <event keycode="Meta" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
1232 <next-state name="RShift-Fn"/>
1233 </map>
1234 <map keycode="Space" pressed="false">
1235 <event keycode="Bar" unicode="124" pressed="false"/>
1236 <next-state name="Fn"/>
1237 </map>
1238 <map keycode="Apostrophe" pressed="false">
1239 <event keycode="AsciiTilde" unicode="126" pressed="false"/>
1240 <next-state name="Fn"/>
1241 </map>
1242 <map keycode="Comma" pressed="false">
1243 <event keycode="ParenRight" unicode="41" pressed="false"/>
1244 <next-state name="Fn"/>
1245 </map>
1246 <map keycode="Period" pressed="false">
1247 <event keycode="Less" unicode="60" pressed="false"/>
1248 <next-state name="Fn"/>
1249 </map>
1250 <map keycode="A" pressed="false">
1251 <event keycode="Exclam" unicode="33" pressed="false"/>
1252 <next-state name="Fn"/>
1253 </map>
1254 <map keycode="B" pressed="false">
1255 <event keycode="Minus" unicode="45" pressed="false"/>
1256 <next-state name="Fn"/>
1257 </map>
1258 <map keycode="C" pressed="false">
1259 <event keycode="C" unicode="3" modifiers="Control" pressed="false"/>
1260 <next-state name="Fn"/>
1261 </map>
1262 <map keycode="D" pressed="false">
1263 <event keycode="NumberSign" unicode="35" pressed="false"/>
1264 <next-state name="Fn"/>
1265 </map>
1266 <map keycode="E" pressed="false">
1267 <event keycode="3" unicode="51" pressed="false"/>
1268 <next-state name="Fn"/>
1269 </map>
1270 <map keycode="F" pressed="false">
1271 <event keycode="Dollar" unicode="36" pressed="false"/>
1272 <next-state name="Fn"/>
1273 </map>
1274 <map keycode="G" pressed="false">
1275 <event keycode="Percent" unicode="37" pressed="false"/>
1276 <next-state name="Fn"/>
1277 </map>
1278 <map keycode="H" pressed="false">
1279 <event keycode="Underscore" unicode="95" pressed="false"/>
1280 <next-state name="Fn"/>
1281 </map>
1282 <map keycode="I" pressed="false">
1283 <event keycode="8" unicode="56" pressed="false"/>
1284 <next-state name="Fn"/>
1285 </map>
1286 <map keycode="J" pressed="false">
1287 <event keycode="Ampersand" unicode="38" pressed="false"/>
1288 <next-state name="Fn"/>
1289 </map>
1290 <map keycode="K" pressed="false">
1291 <event keycode="Asterisk" unicode="42" pressed="false"/>
1292 <next-state name="Fn"/>
1293 </map>
1294 <map keycode="L" pressed="false">
1295 <event keycode="ParenLeft" unicode="40" pressed="false"/>
1296 <next-state name="Fn"/>
1297 </map>
1298 <map keycode="M" pressed="false">
1299 <event keycode="Equal" unicode="61" pressed="false"/>
1300 <next-state name="Fn"/>
1301 </map>
1302 <map keycode="N" pressed="false">
1303 <event keycode="Plus" unicode="43" pressed="false"/>
1304 <next-state name="Fn"/>
1305 </map>
1306 <map keycode="O" pressed="false">
1307 <event keycode="9" unicode="57" pressed="false"/>
1308 <next-state name="Fn"/>
1309 </map>
1310 <map keycode="P" pressed="false">
1311 <event keycode="0" unicode="48" pressed="false"/>
1312 <next-state name="Fn"/>
1313 </map>
1314 <map keycode="Q" pressed="false">
1315 <event keycode="1" unicode="49" pressed="false"/>
1316 <next-state name="Fn"/>
1317 </map>
1318 <map keycode="R" pressed="false">
1319 <event keycode="4" unicode="52" pressed="false"/>
1320 <next-state name="Fn"/>
1321 </map>
1322 <map keycode="S" pressed="false">
1323 <event keycode="At" unicode="64" pressed="false"/>
1324 <next-state name="Fn"/>
1325 </map>
1326 <map keycode="T" pressed="false">
1327 <event keycode="5" unicode="53" pressed="false"/>
1328 <next-state name="Fn"/>
1329 </map>
1330 <map keycode="U" pressed="false">
1331 <event keycode="7" unicode="55" pressed="false"/>
1332 <next-state name="Fn"/>
1333 </map>
1334 <map keycode="V" pressed="false">
1335 <event keycode="V" unicode="22" modifiers="Control" pressed="false"/>
1336 <next-state name="Fn"/>
1337 </map>
1338 <map keycode="W" pressed="false">
1339 <event keycode="2" unicode="50" pressed="false"/>
1340 <next-state name="Fn"/>
1341 </map>
1342 <map keycode="X" pressed="false">
1343 <event keycode="X" unicode="24" modifiers="Control" pressed="false"/>
1344 <next-state name="Fn"/>
1345 </map>
1346 <map keycode="Y" pressed="false">
1347 <event keycode="6" unicode="54" pressed="false"/>
1348 <next-state name="Fn"/>
1349 </map>
1350 <map keycode="Fn" pressed="false">
1351 <event keycode="F22" unicode="-1" pressed="true"/>
1352 <next-state name="sFn"/>
1353 </map>
1354</state>
1355
1356<state name="sFn">
1357 <map keycode="Space" pressed="true">
1358 <event keycode="Bar" unicode="124" pressed="true" autorepeat="true"/>
1359 <next-state name="Normal"/>
1360 </map>
1361 <map keycode="Apostrophe" pressed="true">
1362 <event keycode="AsciiTilde" unicode="126" pressed="true" autorepeat="true"/>
1363 <next-state name="Normal"/>
1364 </map>
1365 <map keycode="Comma" pressed="true">
1366 <event keycode="ParenRight" unicode="41" pressed="true" autorepeat="true"/>
1367 <next-state name="Normal"/>
1368 </map>
1369 <map keycode="Period" pressed="true">
1370 <event keycode="Less" unicode="60" pressed="true" autorepeat="true"/>
1371 <next-state name="Normal"/>
1372 </map>
1373 <map keycode="Slash" pressed="true">
1374 <event keycode="NumLock" unicode="-1" pressed="true"/>
1375 <next-state name="Num"/>
1376 </map>
1377 <map keycode="A" pressed="true">
1378 <event keycode="Exclam" unicode="33" pressed="true" autorepeat="true"/>
1379 <next-state name="Normal"/>
1380 </map>
1381 <map keycode="B" pressed="true">
1382 <event keycode="Minus" unicode="45" pressed="true" autorepeat="true"/>
1383 <next-state name="Normal"/>
1384 </map>
1385 <map keycode="C" pressed="true">
1386 <event keycode="C" unicode="3" modifiers="Control" pressed="true"/>
1387 <next-state name="Normal"/>
1388 </map>
1389 <map keycode="D" pressed="true">
1390 <event keycode="NumberSign" unicode="35" pressed="true" autorepeat="true"/>
1391 <next-state name="Normal"/>
1392 </map>
1393 <map keycode="E" pressed="true">
1394 <event keycode="3" unicode="51" pressed="true" autorepeat="true"/>
1395 <next-state name="Normal"/>
1396 </map>
1397 <map keycode="F" pressed="true">
1398 <event keycode="Dollar" unicode="36" pressed="true" autorepeat="true"/>
1399 <next-state name="Normal"/>
1400 </map>
1401 <map keycode="G" pressed="true">
1402 <event keycode="Percent" unicode="37" pressed="true" autorepeat="true"/>
1403 <next-state name="Normal"/>
1404 </map>
1405 <map keycode="H" pressed="true">
1406 <event keycode="Underscore" unicode="95" pressed="true" autorepeat="true"/>
1407 <next-state name="Normal"/>
1408 </map>
1409 <map keycode="I" pressed="true">
1410 <event keycode="8" unicode="56" pressed="true" autorepeat="true"/>
1411 <next-state name="Normal"/>
1412 </map>
1413 <map keycode="J" pressed="true">
1414 <event keycode="Ampersand" unicode="38" pressed="true" autorepeat="true"/>
1415 <next-state name="Normal"/>
1416 </map>
1417 <map keycode="K" pressed="true">
1418 <event keycode="Asterisk" unicode="42" pressed="true" autorepeat="true"/>
1419 <next-state name="Normal"/>
1420 </map>
1421 <map keycode="L" pressed="true">
1422 <event keycode="ParenLeft" unicode="40" pressed="true" autorepeat="true"/>
1423 <next-state name="Normal"/>
1424 </map>
1425 <map keycode="M" pressed="true">
1426 <event keycode="Equal" unicode="61" pressed="true" autorepeat="true"/>
1427 <next-state name="Normal"/>
1428 </map>
1429 <map keycode="N" pressed="true">
1430 <event keycode="Plus" unicode="43" pressed="true" autorepeat="true"/>
1431 <next-state name="Normal"/>
1432 </map>
1433 <map keycode="O" pressed="true">
1434 <event keycode="9" unicode="57" pressed="true" autorepeat="true"/>
1435 <next-state name="Normal"/>
1436 </map>
1437 <map keycode="P" pressed="true">
1438 <event keycode="0" unicode="48" pressed="true" autorepeat="true"/>
1439 <next-state name="Normal"/>
1440 </map>
1441 <map keycode="Q" pressed="true">
1442 <event keycode="1" unicode="49" pressed="true" autorepeat="true"/>
1443 <next-state name="Normal"/>
1444 </map>
1445 <map keycode="R" pressed="true">
1446 <event keycode="4" unicode="52" pressed="true" autorepeat="true"/>
1447 <next-state name="Normal"/>
1448 </map>
1449 <map keycode="S" pressed="true">
1450 <event keycode="At" unicode="64" pressed="true" autorepeat="true"/>
1451 <next-state name="Normal"/>
1452 </map>
1453 <map keycode="T" pressed="true">
1454 <event keycode="5" unicode="53" pressed="true" autorepeat="true"/>
1455 <next-state name="Normal"/>
1456 </map>
1457 <map keycode="U" pressed="true">
1458 <event keycode="7" unicode="55" pressed="true" autorepeat="true"/>
1459 <next-state name="Normal"/>
1460 </map>
1461 <map keycode="V" pressed="true">
1462 <event keycode="V" unicode="22" modifiers="Control" pressed="true"/>
1463 <next-state name="Normal"/>
1464 </map>
1465 <map keycode="W" pressed="true">
1466 <event keycode="2" unicode="50" pressed="true" autorepeat="true"/>
1467 <next-state name="Normal"/>
1468 </map>
1469 <map keycode="X" pressed="true">
1470 <event keycode="X" unicode="24" modifiers="Control" pressed="true"/>
1471 <next-state name="Normal"/>
1472 </map>
1473 <map keycode="Y" pressed="true">
1474 <event keycode="6" unicode="54" pressed="true" autorepeat="true"/>
1475 <next-state name="Normal"/>
1476 </map>
1477 <map keycode="Tab" pressed="true">
1478 <event keycode="CapsLock" unicode="-1" pressed="true"/>
1479 <next-state name="Caps"/>
1480 </map>
1481 <map keycode="Left Shift" pressed="true">
1482 <event keycode="Shift" unicode="-1" modifiers="Control" pressed="true"/>
1483 <next-state name="LShift"/>
1484 </map>
1485 <map keycode="Right Shift" pressed="true">
1486 <event keycode="Meta" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
1487 <next-state name="RShift"/>
1488 </map>
1489 <map keycode="Space" pressed="false">
1490 <event keycode="Bar" unicode="124" pressed="false"/>
1491 <next-state name="Normal"/>
1492 </map>
1493 <map keycode="Apostrophe" pressed="false">
1494 <event keycode="AsciiTilde" unicode="126" pressed="false"/>
1495 <next-state name="Normal"/>
1496 </map>
1497 <map keycode="Comma" pressed="false">
1498 <event keycode="ParenRight" unicode="41" pressed="false"/>
1499 <next-state name="Normal"/>
1500 </map>
1501 <map keycode="Period" pressed="false">
1502 <event keycode="Less" unicode="60" pressed="false"/>
1503 <next-state name="Normal"/>
1504 </map>
1505 <map keycode="A" pressed="false">
1506 <event keycode="Exclam" unicode="33" pressed="false"/>
1507 <next-state name="Normal"/>
1508 </map>
1509 <map keycode="B" pressed="false">
1510 <event keycode="Minus" unicode="45" pressed="false"/>
1511 <next-state name="Normal"/>
1512 </map>
1513 <map keycode="C" pressed="false">
1514 <event keycode="C" unicode="3" modifiers="Control" pressed="false"/>
1515 <next-state name="Normal"/>
1516 </map>
1517 <map keycode="D" pressed="false">
1518 <event keycode="NumberSign" unicode="35" pressed="false"/>
1519 <next-state name="Normal"/>
1520 </map>
1521 <map keycode="E" pressed="false">
1522 <event keycode="3" unicode="51" pressed="false"/>
1523 <next-state name="Normal"/>
1524 </map>
1525 <map keycode="F" pressed="false">
1526 <event keycode="Dollar" unicode="36" pressed="false"/>
1527 <next-state name="Normal"/>
1528 </map>
1529 <map keycode="G" pressed="false">
1530 <event keycode="Percent" unicode="37" pressed="false"/>
1531 <next-state name="Normal"/>
1532 </map>
1533 <map keycode="H" pressed="false">
1534 <event keycode="Underscore" unicode="95" pressed="false"/>
1535 <next-state name="Normal"/>
1536 </map>
1537 <map keycode="I" pressed="false">
1538 <event keycode="8" unicode="56" pressed="false"/>
1539 <next-state name="Normal"/>
1540 </map>
1541 <map keycode="J" pressed="false">
1542 <event keycode="Ampersand" unicode="38" pressed="false"/>
1543 <next-state name="Normal"/>
1544 </map>
1545 <map keycode="K" pressed="false">
1546 <event keycode="Asterisk" unicode="42" pressed="false"/>
1547 <next-state name="Normal"/>
1548 </map>
1549 <map keycode="L" pressed="false">
1550 <event keycode="ParenLeft" unicode="40" pressed="false"/>
1551 <next-state name="Normal"/>
1552 </map>
1553 <map keycode="M" pressed="false">
1554 <event keycode="Equal" unicode="61" pressed="false"/>
1555 <next-state name="Normal"/>
1556 </map>
1557 <map keycode="N" pressed="false">
1558 <event keycode="Plus" unicode="43" pressed="false"/>
1559 <next-state name="Normal"/>
1560 </map>
1561 <map keycode="O" pressed="false">
1562 <event keycode="9" unicode="57" pressed="false"/>
1563 <next-state name="Normal"/>
1564 </map>
1565 <map keycode="P" pressed="false">
1566 <event keycode="0" unicode="48" pressed="false"/>
1567 <next-state name="Normal"/>
1568 </map>
1569 <map keycode="Q" pressed="false">
1570 <event keycode="1" unicode="49" pressed="false"/>
1571 <next-state name="Normal"/>
1572 </map>
1573 <map keycode="R" pressed="false">
1574 <event keycode="4" unicode="52" pressed="false"/>
1575 <next-state name="Normal"/>
1576 </map>
1577 <map keycode="S" pressed="false">
1578 <event keycode="At" unicode="64" pressed="false"/>
1579 <next-state name="Normal"/>
1580 </map>
1581 <map keycode="T" pressed="false">
1582 <event keycode="5" unicode="53" pressed="false"/>
1583 <next-state name="Normal"/>
1584 </map>
1585 <map keycode="U" pressed="false">
1586 <event keycode="7" unicode="55" pressed="false"/>
1587 <next-state name="Normal"/>
1588 </map>
1589 <map keycode="V" pressed="false">
1590 <event keycode="V" unicode="22" modifiers="Control" pressed="false"/>
1591 <next-state name="Normal"/>
1592 </map>
1593 <map keycode="W" pressed="false">
1594 <event keycode="2" unicode="50" pressed="false"/>
1595 <next-state name="Normal"/>
1596 </map>
1597 <map keycode="X" pressed="false">
1598 <event keycode="X" unicode="24" modifiers="Control" pressed="false"/>
1599 <next-state name="Normal"/>
1600 </map>
1601 <map keycode="Y" pressed="false">
1602 <event keycode="6" unicode="54" pressed="false"/>
1603 <next-state name="Normal"/>
1604 </map>
1605 <map keycode="Fn" pressed="false">
1606 <event keycode="F22" unicode="-1" pressed="true"/>
1607 <next-state name="iFn"/>
1608 </map>
1609</state>
1610
1611<state name="Caps-iFn">
1612 <map keycode="Space" pressed="true">
1613 <event keycode="Bar" unicode="124" pressed="true" autorepeat="true"/>
1614 <next-state name="Fn-Caps"/>
1615 </map>
1616 <map keycode="Apostrophe" pressed="true">
1617 <event keycode="AsciiTilde" unicode="126" pressed="true" autorepeat="true"/>
1618 <next-state name="Fn-Caps"/>
1619 </map>
1620 <map keycode="Comma" pressed="true">
1621 <event keycode="ParenRight" unicode="41" pressed="true" autorepeat="true"/>
1622 <next-state name="Fn-Caps"/>
1623 </map>
1624 <map keycode="Period" pressed="true">
1625 <event keycode="Less" unicode="60" pressed="true" autorepeat="true"/>
1626 <next-state name="Fn-Caps"/>
1627 </map>
1628 <map keycode="Slash" pressed="true">
1629 <event keycode="NumLock" unicode="-1" pressed="true"/>
1630 <next-state name="Fn-Num"/>
1631 </map>
1632 <map keycode="A" pressed="true">
1633 <event keycode="Exclam" unicode="33" pressed="true" autorepeat="true"/>
1634 <next-state name="Fn-Caps"/>
1635 </map>
1636 <map keycode="B" pressed="true">
1637 <event keycode="Minus" unicode="45" pressed="true" autorepeat="true"/>
1638 <next-state name="Fn-Caps"/>
1639 </map>
1640 <map keycode="C" pressed="true">
1641 <event keycode="C" unicode="3" modifiers="Control" pressed="true"/>
1642 <next-state name="Fn-Caps"/>
1643 </map>
1644 <map keycode="D" pressed="true">
1645 <event keycode="NumberSign" unicode="35" pressed="true" autorepeat="true"/>
1646 <next-state name="Fn-Caps"/>
1647 </map>
1648 <map keycode="E" pressed="true">
1649 <event keycode="3" unicode="51" pressed="true" autorepeat="true"/>
1650 <next-state name="Fn-Caps"/>
1651 </map>
1652 <map keycode="F" pressed="true">
1653 <event keycode="Dollar" unicode="36" pressed="true" autorepeat="true"/>
1654 <next-state name="Fn-Caps"/>
1655 </map>
1656 <map keycode="G" pressed="true">
1657 <event keycode="Percent" unicode="37" pressed="true" autorepeat="true"/>
1658 <next-state name="Fn-Caps"/>
1659 </map>
1660 <map keycode="H" pressed="true">
1661 <event keycode="Underscore" unicode="95" pressed="true" autorepeat="true"/>
1662 <next-state name="Fn-Caps"/>
1663 </map>
1664 <map keycode="I" pressed="true">
1665 <event keycode="8" unicode="56" pressed="true" autorepeat="true"/>
1666 <next-state name="Fn-Caps"/>
1667 </map>
1668 <map keycode="J" pressed="true">
1669 <event keycode="Ampersand" unicode="38" pressed="true" autorepeat="true"/>
1670 <next-state name="Fn-Caps"/>
1671 </map>
1672 <map keycode="K" pressed="true">
1673 <event keycode="Asterisk" unicode="42" pressed="true" autorepeat="true"/>
1674 <next-state name="Fn-Caps"/>
1675 </map>
1676 <map keycode="L" pressed="true">
1677 <event keycode="ParenLeft" unicode="40" pressed="true" autorepeat="true"/>
1678 <next-state name="Fn-Caps"/>
1679 </map>
1680 <map keycode="M" pressed="true">
1681 <event keycode="Equal" unicode="61" pressed="true" autorepeat="true"/>
1682 <next-state name="Fn-Caps"/>
1683 </map>
1684 <map keycode="N" pressed="true">
1685 <event keycode="Plus" unicode="43" pressed="true" autorepeat="true"/>
1686 <next-state name="Fn-Caps"/>
1687 </map>
1688 <map keycode="O" pressed="true">
1689 <event keycode="9" unicode="57" pressed="true" autorepeat="true"/>
1690 <next-state name="Fn-Caps"/>
1691 </map>
1692 <map keycode="P" pressed="true">
1693 <event keycode="0" unicode="48" pressed="true" autorepeat="true"/>
1694 <next-state name="Fn-Caps"/>
1695 </map>
1696 <map keycode="Q" pressed="true">
1697 <event keycode="1" unicode="49" pressed="true" autorepeat="true"/>
1698 <next-state name="Fn-Caps"/>
1699 </map>
1700 <map keycode="R" pressed="true">
1701 <event keycode="4" unicode="52" pressed="true" autorepeat="true"/>
1702 <next-state name="Fn-Caps"/>
1703 </map>
1704 <map keycode="S" pressed="true">
1705 <event keycode="At" unicode="64" pressed="true" autorepeat="true"/>
1706 <next-state name="Fn-Caps"/>
1707 </map>
1708 <map keycode="T" pressed="true">
1709 <event keycode="5" unicode="53" pressed="true" autorepeat="true"/>
1710 <next-state name="Fn-Caps"/>
1711 </map>
1712 <map keycode="U" pressed="true">
1713 <event keycode="7" unicode="55" pressed="true" autorepeat="true"/>
1714 <next-state name="Fn-Caps"/>
1715 </map>
1716 <map keycode="V" pressed="true">
1717 <event keycode="V" unicode="22" modifiers="Control" pressed="true"/>
1718 <next-state name="Fn-Caps"/>
1719 </map>
1720 <map keycode="W" pressed="true">
1721 <event keycode="2" unicode="50" pressed="true" autorepeat="true"/>
1722 <next-state name="Fn-Caps"/>
1723 </map>
1724 <map keycode="X" pressed="true">
1725 <event keycode="X" unicode="24" modifiers="Control" pressed="true"/>
1726 <next-state name="Fn-Caps"/>
1727 </map>
1728 <map keycode="Y" pressed="true">
1729 <event keycode="6" unicode="54" pressed="true" autorepeat="true"/>
1730 <next-state name="Fn-Caps"/>
1731 </map>
1732 <map keycode="Tab" pressed="true">
1733 <event keycode="CapsLock" unicode="-1" pressed="true"/>
1734 <next-state name="Fn"/>
1735 </map>
1736 <map keycode="Left Shift" pressed="true">
1737 <event keycode="Shift" unicode="-1" modifiers="Control" pressed="true"/>
1738 <next-state name="LShift-Fn-Caps"/>
1739 </map>
1740 <map keycode="Right Shift" pressed="true">
1741 <event keycode="Meta" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
1742 <next-state name="RShift-Fn-Caps"/>
1743 </map>
1744 <map keycode="Space" pressed="false">
1745 <event keycode="Bar" unicode="124" pressed="false"/>
1746 <next-state name="Fn-Caps"/>
1747 </map>
1748 <map keycode="Apostrophe" pressed="false">
1749 <event keycode="AsciiTilde" unicode="126" pressed="false"/>
1750 <next-state name="Fn-Caps"/>
1751 </map>
1752 <map keycode="Comma" pressed="false">
1753 <event keycode="ParenRight" unicode="41" pressed="false"/>
1754 <next-state name="Fn-Caps"/>
1755 </map>
1756 <map keycode="Period" pressed="false">
1757 <event keycode="Less" unicode="60" pressed="false"/>
1758 <next-state name="Fn-Caps"/>
1759 </map>
1760 <map keycode="A" pressed="false">
1761 <event keycode="Exclam" unicode="33" pressed="false"/>
1762 <next-state name="Fn-Caps"/>
1763 </map>
1764 <map keycode="B" pressed="false">
1765 <event keycode="Minus" unicode="45" pressed="false"/>
1766 <next-state name="Fn-Caps"/>
1767 </map>
1768 <map keycode="C" pressed="false">
1769 <event keycode="C" unicode="3" modifiers="Control" pressed="false"/>
1770 <next-state name="Fn-Caps"/>
1771 </map>
1772 <map keycode="D" pressed="false">
1773 <event keycode="NumberSign" unicode="35" pressed="false"/>
1774 <next-state name="Fn-Caps"/>
1775 </map>
1776 <map keycode="E" pressed="false">
1777 <event keycode="3" unicode="51" pressed="false"/>
1778 <next-state name="Fn-Caps"/>
1779 </map>
1780 <map keycode="F" pressed="false">
1781 <event keycode="Dollar" unicode="36" pressed="false"/>
1782 <next-state name="Fn-Caps"/>
1783 </map>
1784 <map keycode="G" pressed="false">
1785 <event keycode="Percent" unicode="37" pressed="false"/>
1786 <next-state name="Fn-Caps"/>
1787 </map>
1788 <map keycode="H" pressed="false">
1789 <event keycode="Underscore" unicode="95" pressed="false"/>
1790 <next-state name="Fn-Caps"/>
1791 </map>
1792 <map keycode="I" pressed="false">
1793 <event keycode="8" unicode="56" pressed="false"/>
1794 <next-state name="Fn-Caps"/>
1795 </map>
1796 <map keycode="J" pressed="false">
1797 <event keycode="Ampersand" unicode="38" pressed="false"/>
1798 <next-state name="Fn-Caps"/>
1799 </map>
1800 <map keycode="K" pressed="false">
1801 <event keycode="Asterisk" unicode="42" pressed="false"/>
1802 <next-state name="Fn-Caps"/>
1803 </map>
1804 <map keycode="L" pressed="false">
1805 <event keycode="ParenLeft" unicode="40" pressed="false"/>
1806 <next-state name="Fn-Caps"/>
1807 </map>
1808 <map keycode="M" pressed="false">
1809 <event keycode="Equal" unicode="61" pressed="false"/>
1810 <next-state name="Fn-Caps"/>
1811 </map>
1812 <map keycode="N" pressed="false">
1813 <event keycode="Plus" unicode="43" pressed="false"/>
1814 <next-state name="Fn-Caps"/>
1815 </map>
1816 <map keycode="O" pressed="false">
1817 <event keycode="9" unicode="57" pressed="false"/>
1818 <next-state name="Fn-Caps"/>
1819 </map>
1820 <map keycode="P" pressed="false">
1821 <event keycode="0" unicode="48" pressed="false"/>
1822 <next-state name="Fn-Caps"/>
1823 </map>
1824 <map keycode="Q" pressed="false">
1825 <event keycode="1" unicode="49" pressed="false"/>
1826 <next-state name="Fn-Caps"/>
1827 </map>
1828 <map keycode="R" pressed="false">
1829 <event keycode="4" unicode="52" pressed="false"/>
1830 <next-state name="Fn-Caps"/>
1831 </map>
1832 <map keycode="S" pressed="false">
1833 <event keycode="At" unicode="64" pressed="false"/>
1834 <next-state name="Fn-Caps"/>
1835 </map>
1836 <map keycode="T" pressed="false">
1837 <event keycode="5" unicode="53" pressed="false"/>
1838 <next-state name="Fn-Caps"/>
1839 </map>
1840 <map keycode="U" pressed="false">
1841 <event keycode="7" unicode="55" pressed="false"/>
1842 <next-state name="Fn-Caps"/>
1843 </map>
1844 <map keycode="V" pressed="false">
1845 <event keycode="V" unicode="22" modifiers="Control" pressed="false"/>
1846 <next-state name="Fn-Caps"/>
1847 </map>
1848 <map keycode="W" pressed="false">
1849 <event keycode="2" unicode="50" pressed="false"/>
1850 <next-state name="Fn-Caps"/>
1851 </map>
1852 <map keycode="X" pressed="false">
1853 <event keycode="X" unicode="24" modifiers="Control" pressed="false"/>
1854 <next-state name="Fn-Caps"/>
1855 </map>
1856 <map keycode="Y" pressed="false">
1857 <event keycode="6" unicode="54" pressed="false"/>
1858 <next-state name="Fn-Caps"/>
1859 </map>
1860 <map keycode="Fn" pressed="false">
1861 <event keycode="F22" unicode="-1" pressed="true"/>
1862 <next-state name="Caps-sFn"/>
1863 </map>
1864</state>
1865
1866<state name="Caps-sFn">
1867 <map keycode="Space" pressed="true">
1868 <event keycode="Bar" unicode="124" pressed="true" autorepeat="true"/>
1869 <next-state name="Caps"/>
1870 </map>
1871 <map keycode="Apostrophe" pressed="true">
1872 <event keycode="AsciiTilde" unicode="126" pressed="true" autorepeat="true"/>
1873 <next-state name="Caps"/>
1874 </map>
1875 <map keycode="Comma" pressed="true">
1876 <event keycode="ParenRight" unicode="41" pressed="true" autorepeat="true"/>
1877 <next-state name="Caps"/>
1878 </map>
1879 <map keycode="Period" pressed="true">
1880 <event keycode="Less" unicode="60" pressed="true" autorepeat="true"/>
1881 <next-state name="Caps"/>
1882 </map>
1883 <map keycode="Slash" pressed="true">
1884 <event keycode="NumLock" unicode="-1" pressed="true"/>
1885 <next-state name="Num"/>
1886 </map>
1887 <map keycode="A" pressed="true">
1888 <event keycode="Exclam" unicode="33" pressed="true" autorepeat="true"/>
1889 <next-state name="Caps"/>
1890 </map>
1891 <map keycode="B" pressed="true">
1892 <event keycode="Minus" unicode="45" pressed="true" autorepeat="true"/>
1893 <next-state name="Caps"/>
1894 </map>
1895 <map keycode="C" pressed="true">
1896 <event keycode="C" unicode="3" modifiers="Control" pressed="true"/>
1897 <next-state name="Caps"/>
1898 </map>
1899 <map keycode="D" pressed="true">
1900 <event keycode="NumberSign" unicode="35" pressed="true" autorepeat="true"/>
1901 <next-state name="Caps"/>
1902 </map>
1903 <map keycode="E" pressed="true">
1904 <event keycode="3" unicode="51" pressed="true" autorepeat="true"/>
1905 <next-state name="Caps"/>
1906 </map>
1907 <map keycode="F" pressed="true">
1908 <event keycode="Dollar" unicode="36" pressed="true" autorepeat="true"/>
1909 <next-state name="Caps"/>
1910 </map>
1911 <map keycode="G" pressed="true">
1912 <event keycode="Percent" unicode="37" pressed="true" autorepeat="true"/>
1913 <next-state name="Caps"/>
1914 </map>
1915 <map keycode="H" pressed="true">
1916 <event keycode="Underscore" unicode="95" pressed="true" autorepeat="true"/>
1917 <next-state name="Caps"/>
1918 </map>
1919 <map keycode="I" pressed="true">
1920 <event keycode="8" unicode="56" pressed="true" autorepeat="true"/>
1921 <next-state name="Caps"/>
1922 </map>
1923 <map keycode="J" pressed="true">
1924 <event keycode="Ampersand" unicode="38" pressed="true" autorepeat="true"/>
1925 <next-state name="Caps"/>
1926 </map>
1927 <map keycode="K" pressed="true">
1928 <event keycode="Asterisk" unicode="42" pressed="true" autorepeat="true"/>
1929 <next-state name="Caps"/>
1930 </map>
1931 <map keycode="L" pressed="true">
1932 <event keycode="ParenLeft" unicode="40" pressed="true" autorepeat="true"/>
1933 <next-state name="Caps"/>
1934 </map>
1935 <map keycode="M" pressed="true">
1936 <event keycode="Equal" unicode="61" pressed="true" autorepeat="true"/>
1937 <next-state name="Caps"/>
1938 </map>
1939 <map keycode="N" pressed="true">
1940 <event keycode="Plus" unicode="43" pressed="true" autorepeat="true"/>
1941 <next-state name="Caps"/>
1942 </map>
1943 <map keycode="O" pressed="true">
1944 <event keycode="9" unicode="57" pressed="true" autorepeat="true"/>
1945 <next-state name="Caps"/>
1946 </map>
1947 <map keycode="P" pressed="true">
1948 <event keycode="0" unicode="48" pressed="true" autorepeat="true"/>
1949 <next-state name="Caps"/>
1950 </map>
1951 <map keycode="Q" pressed="true">
1952 <event keycode="1" unicode="49" pressed="true" autorepeat="true"/>
1953 <next-state name="Caps"/>
1954 </map>
1955 <map keycode="R" pressed="true">
1956 <event keycode="4" unicode="52" pressed="true" autorepeat="true"/>
1957 <next-state name="Caps"/>
1958 </map>
1959 <map keycode="S" pressed="true">
1960 <event keycode="At" unicode="64" pressed="true" autorepeat="true"/>
1961 <next-state name="Caps"/>
1962 </map>
1963 <map keycode="T" pressed="true">
1964 <event keycode="5" unicode="53" pressed="true" autorepeat="true"/>
1965 <next-state name="Caps"/>
1966 </map>
1967 <map keycode="U" pressed="true">
1968 <event keycode="7" unicode="55" pressed="true" autorepeat="true"/>
1969 <next-state name="Caps"/>
1970 </map>
1971 <map keycode="V" pressed="true">
1972 <event keycode="V" unicode="22" modifiers="Control" pressed="true"/>
1973 <next-state name="Caps"/>
1974 </map>
1975 <map keycode="W" pressed="true">
1976 <event keycode="2" unicode="50" pressed="true" autorepeat="true"/>
1977 <next-state name="Caps"/>
1978 </map>
1979 <map keycode="X" pressed="true">
1980 <event keycode="X" unicode="24" modifiers="Control" pressed="true"/>
1981 <next-state name="Caps"/>
1982 </map>
1983 <map keycode="Y" pressed="true">
1984 <event keycode="6" unicode="54" pressed="true" autorepeat="true"/>
1985 <next-state name="Caps"/>
1986 </map>
1987 <map keycode="Tab" pressed="true">
1988 <event keycode="CapsLock" unicode="-1" pressed="true"/>
1989 <next-state name="Normal"/>
1990 </map>
1991 <map keycode="Left Shift" pressed="true">
1992 <event keycode="Shift" unicode="-1" modifiers="Control" pressed="true"/>
1993 <next-state name="LShift-Caps"/>
1994 </map>
1995 <map keycode="Right Shift" pressed="true">
1996 <event keycode="Meta" unicode="-1" modifiers="Alt|Shift" pressed="true"/>
1997 <next-state name="RShift-Caps"/>
1998 </map>
1999 <map keycode="Space" pressed="false">
2000 <event keycode="Bar" unicode="124" pressed="false"/>
2001 <next-state name="Caps"/>
2002 </map>
2003 <map keycode="Apostrophe" pressed="false">
2004 <event keycode="AsciiTilde" unicode="126" pressed="false"/>
2005 <next-state name="Caps"/>
2006 </map>
2007 <map keycode="Comma" pressed="false">
2008 <event keycode="ParenRight" unicode="41" pressed="false"/>
2009 <next-state name="Caps"/>
2010 </map>
2011 <map keycode="Period" pressed="false">
2012 <event keycode="Less" unicode="60" pressed="false"/>
2013 <next-state name="Caps"/>
2014 </map>
2015 <map keycode="A" pressed="false">
2016 <event keycode="Exclam" unicode="33" pressed="false"/>
2017 <next-state name="Caps"/>
2018 </map>
2019 <map keycode="B" pressed="false">
2020 <event keycode="Minus" unicode="45" pressed="false"/>
2021 <next-state name="Caps"/>
2022 </map>
2023 <map keycode="C" pressed="false">
2024 <event keycode="C" unicode="3" modifiers="Control" pressed="false"/>
2025 <next-state name="Caps"/>
2026 </map>
2027 <map keycode="D" pressed="false">
2028 <event keycode="NumberSign" unicode="35" pressed="false"/>
2029 <next-state name="Caps"/>
2030 </map>
2031 <map keycode="E" pressed="false">
2032 <event keycode="3" unicode="51" pressed="false"/>
2033 <next-state name="Caps"/>
2034 </map>
2035 <map keycode="F" pressed="false">
2036 <event keycode="Dollar" unicode="36" pressed="false"/>
2037 <next-state name="Caps"/>
2038 </map>
2039 <map keycode="G" pressed="false">
2040 <event keycode="Percent" unicode="37" pressed="false"/>
2041 <next-state name="Caps"/>
2042 </map>
2043 <map keycode="H" pressed="false">
2044 <event keycode="Underscore" unicode="95" pressed="false"/>
2045 <next-state name="Caps"/>
2046 </map>
2047 <map keycode="I" pressed="false">
2048 <event keycode="8" unicode="56" pressed="false"/>
2049 <next-state name="Caps"/>
2050 </map>
2051 <map keycode="J" pressed="false">
2052 <event keycode="Ampersand" unicode="38" pressed="false"/>
2053 <next-state name="Caps"/>
2054 </map>
2055 <map keycode="K" pressed="false">
2056 <event keycode="Asterisk" unicode="42" pressed="false"/>
2057 <next-state name="Caps"/>
2058 </map>
2059 <map keycode="L" pressed="false">
2060 <event keycode="ParenLeft" unicode="40" pressed="false"/>
2061 <next-state name="Caps"/>
2062 </map>
2063 <map keycode="M" pressed="false">
2064 <event keycode="Equal" unicode="61" pressed="false"/>
2065 <next-state name="Caps"/>
2066 </map>
2067 <map keycode="N" pressed="false">
2068 <event keycode="Plus" unicode="43" pressed="false"/>
2069 <next-state name="Caps"/>
2070 </map>
2071 <map keycode="O" pressed="false">
2072 <event keycode="9" unicode="57" pressed="false"/>
2073 <next-state name="Caps"/>
2074 </map>
2075 <map keycode="P" pressed="false">
2076 <event keycode="0" unicode="48" pressed="false"/>
2077 <next-state name="Caps"/>
2078 </map>
2079 <map keycode="Q" pressed="false">
2080 <event keycode="1" unicode="49" pressed="false"/>
2081 <next-state name="Caps"/>
2082 </map>
2083 <map keycode="R" pressed="false">
2084 <event keycode="4" unicode="52" pressed="false"/>
2085 <next-state name="Caps"/>
2086 </map>
2087 <map keycode="S" pressed="false">
2088 <event keycode="At" unicode="64" pressed="false"/>
2089 <next-state name="Caps"/>
2090 </map>
2091 <map keycode="T" pressed="false">
2092 <event keycode="5" unicode="53" pressed="false"/>
2093 <next-state name="Caps"/>
2094 </map>
2095 <map keycode="U" pressed="false">
2096 <event keycode="7" unicode="55" pressed="false"/>
2097 <next-state name="Caps"/>
2098 </map>
2099 <map keycode="V" pressed="false">
2100 <event keycode="V" unicode="22" modifiers="Control" pressed="false"/>
2101 <next-state name="Caps"/>
2102 </map>
2103 <map keycode="W" pressed="false">
2104 <event keycode="2" unicode="50" pressed="false"/>
2105 <next-state name="Caps"/>
2106 </map>
2107 <map keycode="X" pressed="false">
2108 <event keycode="X" unicode="24" modifiers="Control" pressed="false"/>
2109 <next-state name="Caps"/>
2110 </map>
2111 <map keycode="Y" pressed="false">
2112 <event keycode="6" unicode="54" pressed="false"/>
2113 <next-state name="Caps"/>
2114 </map>
2115 <map keycode="Fn" pressed="false">
2116 <event keycode="F22" unicode="-1" pressed="true"/>
2117 <next-state name="Caps-iFn"/>
2118 </map>
2119</state>
2120
2121</keymap>
diff --git a/share/zkb/common.xml.num b/share/zkb/common.xml.num
new file mode 100644
index 0000000..ff4c450
--- a/dev/null
+++ b/share/zkb/common.xml.num
@@ -0,0 +1,2115 @@
1<keymap>
2
3<!-- State Declarations -->
4
5<state name="common"/>
6<state name="lower-case" parent="common"/>
7<state name="upper-case" parent="common"/>
8<state name="number" parent="common"/>
9<state name="control" parent="common"/>
10<state name="alt" parent="common"/>
11
12<state name="Normal" parent="lower-case"/>
13<state name="LShift" parent="upper-case"/>
14<state name="RShift" parent="upper-case"/>
15<state name="Fn" parent="number"/>
16<state name="Num" parent="number"/>
17<state name="Caps" parent="upper-case"/>
18<state name="iFn"/>
19<state name="sFn" parent="number"/>
20
21<state name="LShift-Fn" parent="control"/>
22<state name="RShift-Fn" parent="alt"/>
23<state name="LShift-Caps" parent="lower-case"/>
24<state name="LShift-Num" parent="number"/>
25<state name="RShift-Caps" parent="lower-case"/>
26<state name="RShift-Num" parent="number"/>
27<state name="Fn-Num" parent="number"/>
28<state name="Fn-Caps" parent="number"/>
29<state name="Num-Caps" parent="number"/>
30<state name="Caps-iFn"/>
31<state name="Caps-sFn" parent="sFn"/>
32
33<state name="LShift-Fn-Caps" parent="control"/>
34<state name="LShift-Fn-Num" parent="control"/>
35<state name="LShift-Num-Caps" parent="number"/>
36<state name="RShift-Fn-Caps" parent="control"/>
37<state name="RShift-Fn-Num" parent="control"/>
38<state name="RShift-Num-Caps" parent="number"/>
39<state name="Fn-Num-Caps" parent="number"/>
40<state name="LShift-Fn-Num-Caps" parent="control"/>
41<state name="RShift-Fn-Num-Caps" parent="control"/>
42
43<state name="Normal" default="true">
44 <map keycode="4128" pressed="true">
45 <event keycode="4128" unicode="-1" modifiers="8" pressed="true" autorepeat="false"/>
46 <next-state name="LShift"/>
47 </map>
48 <map keycode="4130" pressed="true">
49 <event keycode="4130" unicode="-1" modifiers="8" pressed="true" autorepeat="false"/>
50 <next-state name="RShift"/>
51 </map>
52 <map keycode="4165" pressed="true">
53 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
54 <next-state name="iFn"/>
55 </map>
56</state>
57
58<state name="LShift">
59 <map keycode="4128" pressed="false">
60 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
61 <next-state name="Normal"/>
62 </map>
63 <map keycode="4165" pressed="true">
64 <event keycode="4165" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
65 <next-state name="LShift-Fn"/>
66 </map>
67</state>
68
69<state name="RShift">
70 <map keycode="4130" pressed="false">
71 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
72 <next-state name="Normal"/>
73 </map>
74 <map keycode="4165" pressed="true">
75 <event keycode="4165" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
76 <next-state name="RShift-Fn"/>
77 </map>
78</state>
79
80<state name="Fn">
81 <map keycode="32" pressed="true">
82 <event keycode="124" unicode="124" modifiers="0" pressed="true" autorepeat="false"/>
83 </map>
84 <map keycode="39" pressed="true">
85 <event keycode="126" unicode="126" modifiers="0" pressed="true" autorepeat="false"/>
86 </map>
87 <map keycode="44" pressed="true">
88 <event keycode="41" unicode="41" modifiers="0" pressed="true" autorepeat="false"/>
89 </map>
90 <map keycode="46" pressed="true">
91 <event keycode="60" unicode="60" modifiers="0" pressed="true" autorepeat="false"/>
92 </map>
93 <map keycode="47" pressed="true">
94 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
95 <next-state name="Fn-Num"/>
96 </map>
97 <map keycode="67" pressed="true">
98 <event keycode="67" unicode="3" modifiers="16" pressed="true" autorepeat="false"/>
99 </map>
100 <map keycode="86" pressed="true">
101 <event keycode="22" unicode="22" modifiers="16" pressed="true" autorepeat="false"/>
102 </map>
103 <map keycode="88" pressed="true">
104 <event keycode="24" unicode="24" modifiers="16" pressed="true" autorepeat="false"/>
105 </map>
106 <map keycode="32" pressed="false">
107 <event keycode="124" unicode="124" modifiers="0" pressed="false" autorepeat="false"/>
108 </map>
109 <map keycode="39" pressed="false">
110 <event keycode="126" unicode="126" modifiers="0" pressed="false" autorepeat="false"/>
111 </map>
112 <map keycode="44" pressed="false">
113 <event keycode="41" unicode="41" modifiers="0" pressed="false" autorepeat="false"/>
114 </map>
115 <map keycode="46" pressed="false">
116 <event keycode="60" unicode="60" modifiers="0" pressed="false" autorepeat="false"/>
117 </map>
118 <map keycode="67" pressed="false">
119 <event keycode="67" unicode="3" modifiers="16" pressed="false" autorepeat="false"/>
120 </map>
121 <map keycode="86" pressed="false">
122 <event keycode="22" unicode="22" modifiers="16" pressed="false" autorepeat="false"/>
123 </map>
124 <map keycode="88" pressed="false">
125 <event keycode="24" unicode="24" modifiers="16" pressed="false" autorepeat="false"/>
126 </map>
127 <map keycode="4097" pressed="true">
128 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
129 <next-state name="Fn-Caps"/>
130 </map>
131 <map keycode="4128" pressed="true">
132 <event keycode="4128" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
133 <next-state name="LShift-Fn"/>
134 </map>
135 <map keycode="4130" pressed="true">
136 <event keycode="4130" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
137 <next-state name="RShift-Fn"/>
138 </map>
139 <map keycode="4165" pressed="false">
140 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
141 <next-state name="Normal"/>
142 </map>
143</state>
144
145<state name="Num">
146 <map keycode="4165" pressed="true">
147 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
148 <next-state name="Fn-Num"/>
149 </map>
150</state>
151
152<state name="Caps">
153 <map keycode="4128" pressed="true">
154 <event keycode="4128" unicode="-1" modifiers="8" pressed="true" autorepeat="false"/>
155 <next-state name="LShift-Caps"/>
156 </map>
157
158 <map keycode="4130" pressed="true">
159 <event keycode="4130" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
160 <next-state name="RShift-Caps"/>
161 </map>
162
163 <map keycode="4165" pressed="true">
164 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
165 <next-state name="Caps-iFn"/>
166 </map>
167</state>
168
169<state name="LShift-Fn">
170 <map keycode="4128" pressed="false">
171 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
172 <next-state name="Fn"/>
173 </map>
174
175 <map keycode="4165" pressed="false">
176 <event keycode="4165" unicode="-1" modifiers="8" pressed="false" autorepeat="false"/>
177 <next-state name="LShift"/>
178 </map>
179
180 <map keycode="4097" pressed="true">
181 <event keycode="4132" unicode="-1" modifiers="24" pressed="true" autorepeat="false"/>
182 <next-state name="LShift-Fn-Caps"/>
183 </map>
184
185 <map keycode="47" pressed="true">
186 <event keycode="4133" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
187 <next-state name="LShift-Fn-Num"/>
188 </map>
189</state>
190
191<state name="RShift-Fn">
192 <map keycode="4130" pressed="false">
193 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
194 <next-state name="Fn"/>
195 </map>
196
197 <map keycode="4165" pressed="false">
198 <event keycode="4165" unicode="-1" modifiers="8" pressed="false" autorepeat="false"/>
199 <next-state name="RShift"/>
200 </map>
201
202 <map keycode="4097" pressed="true">
203 <event keycode="4132" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
204 <next-state name="RShift-Fn-Caps"/>
205 </map>
206
207 <map keycode="47" pressed="true">
208 <event keycode="4133" unicode="-1" modifiers="32" pressed="true" autorepeat="false"/>
209 <next-state name="RShift-Fn-Num"/>
210 </map>
211</state>
212
213<state name="LShift-Caps">
214 <map keycode="4128" pressed="false">
215 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
216 <next-state name="Caps"/>
217 </map>
218
219 <map keycode="4165" pressed="true">
220 <event keycode="4165" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
221 <next-state name="LShift-Fn-Caps"/>
222 </map>
223</state>
224
225<state name="LShift-Num">
226 <map keycode="4128" pressed="false">
227 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
228 <next-state name="Num"/>
229 </map>
230
231 <map keycode="4165" pressed="true">
232 <event keycode="4165" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
233 <next-state name="LShift-Fn-Num"/>
234 </map>
235</state>
236
237<state name="RShift-Caps">
238 <map keycode="4130" pressed="false">
239 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
240 <next-state name="Caps"/>
241 </map>
242
243 <map keycode="4165" pressed="true">
244 <event keycode="4165" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
245 <next-state name="RShift-Fn-Caps"/>
246 </map>
247</state>
248
249<state name="RShift-Num">
250 <map keycode="4130" pressed="false">
251 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
252 <next-state name="Num"/>
253 </map>
254
255 <map keycode="4165" pressed="true">
256 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
257 <next-state name="RShift-Fn-Caps"/>
258 </map>
259</state>
260
261<state name="Fn-Num">
262 <map keycode="47" pressed="true">
263 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
264 <next-state name="Fn"/>
265 </map>
266
267 <map keycode="4097" pressed="true">
268 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
269 <next-state name="Fn-Num-Caps"/>
270 </map>
271
272 <map keycode="4165" pressed="false">
273 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
274 <next-state name="Num"/>
275 </map>
276</state>
277
278<state name="Fn-Caps">
279 <map keycode="47" pressed="true">
280 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
281 <next-state name="Fn-Num-Caps"/>
282 </map>
283
284 <map keycode="4097" pressed="true">
285 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
286 <next-state name="Fn"/>
287 </map>
288
289 <map keycode="4165" pressed="false">
290 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
291 <next-state name="Caps"/>
292 </map>
293</state>
294
295<state name="Num-Caps">
296 <map keycode="4165" pressed="true">
297 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
298 <next-state name="Fn-Num-Caps"/>
299 </map>
300</state>
301
302<state name="LShift-Fn-Caps">
303 <map keycode="4128" pressed="false">
304 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
305 <next-state name="Fn-Caps"/>
306 </map>
307
308 <map keycode="4165" pressed="false">
309 <event keycode="4165" unicode="-1" modifiers="8" pressed="false" autorepeat="false"/>
310 <next-state name="LShift-Caps"/>
311 </map>
312
313 <map keycode="4097" pressed="true">
314 <event keycode="4132" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
315 <next-state name="LShift-Fn"/>
316 </map>
317</state>
318
319<state name="LShift-Fn-Num">
320 <map keycode="4128" pressed="false">
321 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
322 <next-state name="Fn-Num"/>
323 </map>
324
325 <map keycode="4165" pressed="false">
326 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
327 <next-state name="LShift-Num"/>
328 </map>
329
330 <map keycode="47" pressed="true">
331 <event keycode="4133" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
332 <next-state name="LShift-Fn"/>
333 </map>
334</state>
335
336<state name="LShift-Num-Caps">
337 <map keycode="4165" pressed="true">
338 <event keycode="4165" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
339 <next-state name="LShift-Fn-Num-Caps"/>
340 </map>
341
342 <map keycode="4128" pressed="false">
343 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
344 <next-state name="Num-Caps"/>
345 </map>
346</state>
347
348<state name="RShift-Fn-Caps">
349 <map keycode="4130" pressed="false">
350 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
351 <next-state name="Fn-Caps"/>
352 </map>
353
354 <map keycode="4165" pressed="false">
355 <event keycode="4165" unicode="-1" modifiers="8" pressed="false" autorepeat="false"/>
356 <next-state name="RShift-Caps"/>
357 </map>
358
359 <map keycode="4097" pressed="true">
360 <event keycode="4132" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
361 <next-state name="RShift-Fn"/>
362 </map>
363</state>
364
365<state name="RShift-Fn-Num">
366 <map keycode="4130" pressed="false">
367 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
368 <next-state name="Fn-Num"/>
369 </map>
370
371 <map keycode="4165" pressed="false">
372 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
373 <next-state name="RShift-Num"/>
374 </map>
375
376 <map keycode="47" pressed="true">
377 <event keycode="4133" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
378 <next-state name="RShift-Fn"/>
379 </map>
380</state>
381
382<state name="RShift-Num-Caps">
383 <map keycode="4165" pressed="true">
384 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
385 <next-state name="RShift-Fn-Num-Caps"/>
386 </map>
387
388 <map keycode="4130" pressed="false">
389 <event keycode="4130" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
390 <next-state name="Num-Caps"/>
391 </map>
392</state>
393
394<state name="Fn-Num-Caps">
395 <map keycode="4165" pressed="false">
396 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
397 <next-state name="Num-Caps"/>
398 </map>
399
400 <map keycode="4097" pressed="true">
401 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
402 <next-state name="Fn-Num"/>
403 </map>
404
405 <map keycode="47" pressed="true">
406 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
407 <next-state name="Fn-Caps"/>
408 </map>
409
410 <map keycode="4128" pressed="true">
411 <event keycode="4128" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
412 <next-state name="LShift-Fn-Num-Caps"/>
413 </map>
414
415 <map keycode="4130" pressed="true">
416 <event keycode="4130" unicode="-1" modifiers="32" pressed="true" autorepeat="false"/>
417 <next-state name="RShift-Fn-Num-Caps"/>
418 </map>
419</state>
420
421<state name="LShift-Fn-Num-Caps">
422 <map keycode="4165" pressed="false">
423 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
424 <next-state name="LShift-Num-Caps"/>
425 </map>
426
427 <map keycode="4097" pressed="true">
428 <event keycode="4132" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
429 <next-state name="LShift-Fn-Num"/>
430 </map>
431
432 <map keycode="47" pressed="true">
433 <event keycode="4133" unicode="-1" modifiers="24" pressed="true" autorepeat="false"/>
434 <next-state name="LShift-Fn-Caps"/>
435 </map>
436
437 <map keycode="4128" pressed="false">
438 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
439 <next-state name="Fn-Num-Caps"/>
440 </map>
441</state>
442
443<state name="RShift-Fn-Num-Caps">
444 <map keycode="4165" pressed="false">
445 <event keycode="4165" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
446 <next-state name="RShift-Num-Caps"/>
447 </map>
448
449 <map keycode="4097" pressed="true">
450 <event keycode="4132" unicode="-1" modifiers="32" pressed="true" autorepeat="false"/>
451 <next-state name="RShift-Fn-Num"/>
452 </map>
453
454 <map keycode="47" pressed="true">
455 <event keycode="4133" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
456 <next-state name="RShift-Fn-Caps"/>
457 </map>
458
459 <map keycode="4130" pressed="false">
460 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
461 <next-state name="Fn-Num-Caps"/>
462 </map>
463</state>
464
465<state name="common">
466 <map keycode="4096" pressed="true">
467 <event keycode="4096" unicode="27" modifiers="0" pressed="true" autorepeat="true"/>
468 </map>
469 <map keycode="4097" pressed="true">
470 <event keycode="4097" unicode="9" modifiers="0" pressed="true" autorepeat="true"/>
471 </map>
472 <map keycode="4099" pressed="true">
473 <event keycode="4099" unicode="127" modifiers="0" pressed="true" autorepeat="true"/>
474 </map>
475 <map keycode="4100" pressed="true">
476 <event keycode="4100" unicode="13" modifiers="0" pressed="true" autorepeat="true"/>
477 </map>
478 <map keycode="4114" pressed="true">
479 <event keycode="4114" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
480 </map>
481 <map keycode="4115" pressed="true">
482 <event keycode="4115" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
483 </map>
484 <map keycode="4116" pressed="true">
485 <event keycode="4116" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
486 </map>
487 <map keycode="4117" pressed="true">
488 <event keycode="4117" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
489 </map>
490 <map keycode="4152" pressed="true">
491 <event keycode="4152" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
492 </map>
493 <map keycode="4153" pressed="true">
494 <event keycode="4153" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
495 </map>
496 <map keycode="4154" pressed="true">
497 <event keycode="4154" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
498 </map>
499 <map keycode="4155" pressed="true">
500 <event keycode="4155" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
501 </map>
502 <map keycode="4156" pressed="true">
503 <event keycode="4156" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
504 </map>
505 <map keycode="4173" pressed="true">
506 <event keycode="4173" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
507 </map>
508 <map keycode="4176" pressed="true">
509 <event keycode="4176" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
510 </map>
511 <map keycode="4177" pressed="true">
512 <event keycode="4177" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
513 </map>
514 <map keycode="4178" pressed="true">
515 <event keycode="4178" unicode="-1" modifiers="0" pressed="true" autorepeat="true"/>
516 </map>
517 <map keycode="4096" pressed="false">
518 <event keycode="4096" unicode="27" modifiers="0" pressed="false" autorepeat="false"/>
519 </map>
520 <map keycode="4097" pressed="false">
521 <event keycode="4097" unicode="9" modifiers="0" pressed="false" autorepeat="false"/>
522 </map>
523 <map keycode="4099" pressed="false">
524 <event keycode="4099" unicode="127" modifiers="0" pressed="false" autorepeat="false"/>
525 </map>
526 <map keycode="4100" pressed="false">
527 <event keycode="4100" unicode="13" modifiers="0" pressed="false" autorepeat="false"/>
528 </map>
529 <map keycode="4114" pressed="false">
530 <event keycode="4114" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
531 </map>
532 <map keycode="4115" pressed="false">
533 <event keycode="4115" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
534 </map>
535 <map keycode="4116" pressed="false">
536 <event keycode="4116" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
537 </map>
538 <map keycode="4117" pressed="false">
539 <event keycode="4117" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
540 </map>
541 <map keycode="4152" pressed="false">
542 <event keycode="4152" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
543 </map>
544 <map keycode="4153" pressed="false">
545 <event keycode="4153" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
546 </map>
547 <map keycode="4154" pressed="false">
548 <event keycode="4154" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
549 </map>
550 <map keycode="4155" pressed="false">
551 <event keycode="4155" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
552 </map>
553 <map keycode="4156" pressed="false">
554 <event keycode="4156" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
555 </map>
556 <map keycode="4173" pressed="false">
557 <event keycode="4173" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
558 </map>
559 <map keycode="4176" pressed="false">
560 <event keycode="4176" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
561 </map>
562 <map keycode="4177" pressed="false">
563 <event keycode="4177" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
564 </map>
565 <map keycode="4178" pressed="false">
566 <event keycode="4178" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
567 </map>
568</state>
569
570<state name="number">
571 <map keycode="32" pressed="true">
572 <event keycode="32" unicode="32" modifiers="0" pressed="true" autorepeat="true"/>
573 </map>
574 <map keycode="39" pressed="true">
575 <event keycode="39" unicode="39" modifiers="0" pressed="true" autorepeat="true"/>
576 </map>
577 <map keycode="44" pressed="true">
578 <event keycode="44" unicode="44" modifiers="0" pressed="true" autorepeat="true"/>
579 </map>
580 <map keycode="46" pressed="true">
581 <event keycode="46" unicode="46" modifiers="0" pressed="true" autorepeat="true"/>
582 </map>
583 <map keycode="65" pressed="true">
584 <event keycode="33" unicode="33" modifiers="0" pressed="true" autorepeat="true"/>
585 </map>
586 <map keycode="66" pressed="true">
587 <event keycode="45" unicode="45" modifiers="0" pressed="true" autorepeat="true"/>
588 </map>
589 <map keycode="68" pressed="true">
590 <event keycode="35" unicode="35" modifiers="0" pressed="true" autorepeat="true"/>
591 </map>
592 <map keycode="69" pressed="true">
593 <event keycode="51" unicode="51" modifiers="0" pressed="true" autorepeat="true"/>
594 </map>
595 <map keycode="70" pressed="true">
596 <event keycode="36" unicode="36" modifiers="0" pressed="true" autorepeat="true"/>
597 </map>
598 <map keycode="71" pressed="true">
599 <event keycode="37" unicode="37" modifiers="0" pressed="true" autorepeat="true"/>
600 </map>
601 <map keycode="72" pressed="true">
602 <event keycode="95" unicode="95" modifiers="0" pressed="true" autorepeat="true"/>
603 </map>
604 <map keycode="73" pressed="true">
605 <event keycode="56" unicode="56" modifiers="0" pressed="true" autorepeat="true"/>
606 </map>
607 <map keycode="74" pressed="true">
608 <event keycode="38" unicode="38" modifiers="0" pressed="true" autorepeat="true"/>
609 </map>
610 <map keycode="75" pressed="true">
611 <event keycode="42" unicode="42" modifiers="0" pressed="true" autorepeat="true"/>
612 </map>
613 <map keycode="76" pressed="true">
614 <event keycode="40" unicode="40" modifiers="0" pressed="true" autorepeat="true"/>
615 </map>
616 <map keycode="77" pressed="true">
617 <event keycode="61" unicode="61" modifiers="0" pressed="true" autorepeat="true"/>
618 </map>
619 <map keycode="78" pressed="true">
620 <event keycode="43" unicode="43" modifiers="0" pressed="true" autorepeat="true"/>
621 </map>
622 <map keycode="79" pressed="true">
623 <event keycode="57" unicode="57" modifiers="0" pressed="true" autorepeat="true"/>
624 </map>
625 <map keycode="80" pressed="true">
626 <event keycode="48" unicode="48" modifiers="0" pressed="true" autorepeat="true"/>
627 </map>
628 <map keycode="81" pressed="true">
629 <event keycode="49" unicode="49" modifiers="0" pressed="true" autorepeat="true"/>
630 </map>
631 <map keycode="82" pressed="true">
632 <event keycode="52" unicode="52" modifiers="0" pressed="true" autorepeat="true"/>
633 </map>
634 <map keycode="83" pressed="true">
635 <event keycode="64" unicode="64" modifiers="0" pressed="true" autorepeat="true"/>
636 </map>
637 <map keycode="84" pressed="true">
638 <event keycode="53" unicode="53" modifiers="0" pressed="true" autorepeat="true"/>
639 </map>
640 <map keycode="85" pressed="true">
641 <event keycode="55" unicode="55" modifiers="0" pressed="true" autorepeat="true"/>
642 </map>
643 <map keycode="87" pressed="true">
644 <event keycode="50" unicode="50" modifiers="0" pressed="true" autorepeat="true"/>
645 </map>
646 <map keycode="89" pressed="true">
647 <event keycode="54" unicode="54" modifiers="0" pressed="true" autorepeat="true"/>
648 </map>
649 <map keycode="32" pressed="false">
650 <event keycode="32" unicode="32" modifiers="0" pressed="false" autorepeat="false"/>
651 </map>
652 <map keycode="39" pressed="false">
653 <event keycode="39" unicode="39" modifiers="0" pressed="false" autorepeat="false"/>
654 </map>
655 <map keycode="44" pressed="false">
656 <event keycode="44" unicode="44" modifiers="0" pressed="false" autorepeat="false"/>
657 </map>
658 <map keycode="46" pressed="false">
659 <event keycode="46" unicode="46" modifiers="0" pressed="false" autorepeat="false"/>
660 </map>
661 <map keycode="65" pressed="false">
662 <event keycode="33" unicode="33" modifiers="0" pressed="false" autorepeat="false"/>
663 </map>
664 <map keycode="66" pressed="false">
665 <event keycode="45" unicode="45" modifiers="0" pressed="false" autorepeat="false"/>
666 </map>
667 <map keycode="68" pressed="false">
668 <event keycode="35" unicode="35" modifiers="0" pressed="false" autorepeat="false"/>
669 </map>
670 <map keycode="69" pressed="false">
671 <event keycode="51" unicode="51" modifiers="0" pressed="false" autorepeat="false"/>
672 </map>
673 <map keycode="70" pressed="false">
674 <event keycode="36" unicode="36" modifiers="0" pressed="false" autorepeat="false"/>
675 </map>
676 <map keycode="71" pressed="false">
677 <event keycode="37" unicode="37" modifiers="0" pressed="false" autorepeat="false"/>
678 </map>
679 <map keycode="72" pressed="false">
680 <event keycode="95" unicode="95" modifiers="0" pressed="false" autorepeat="false"/>
681 </map>
682 <map keycode="73" pressed="false">
683 <event keycode="56" unicode="56" modifiers="0" pressed="false" autorepeat="false"/>
684 </map>
685 <map keycode="74" pressed="false">
686 <event keycode="38" unicode="38" modifiers="0" pressed="false" autorepeat="false"/>
687 </map>
688 <map keycode="75" pressed="false">
689 <event keycode="42" unicode="42" modifiers="0" pressed="false" autorepeat="false"/>
690 </map>
691 <map keycode="76" pressed="false">
692 <event keycode="40" unicode="40" modifiers="0" pressed="false" autorepeat="false"/>
693 </map>
694 <map keycode="77" pressed="false">
695 <event keycode="61" unicode="61" modifiers="0" pressed="false" autorepeat="false"/>
696 </map>
697 <map keycode="78" pressed="false">
698 <event keycode="43" unicode="43" modifiers="0" pressed="false" autorepeat="false"/>
699 </map>
700 <map keycode="79" pressed="false">
701 <event keycode="57" unicode="57" modifiers="0" pressed="false" autorepeat="false"/>
702 </map>
703 <map keycode="80" pressed="false">
704 <event keycode="48" unicode="48" modifiers="0" pressed="false" autorepeat="false"/>
705 </map>
706 <map keycode="81" pressed="false">
707 <event keycode="49" unicode="49" modifiers="0" pressed="false" autorepeat="false"/>
708 </map>
709 <map keycode="82" pressed="false">
710 <event keycode="52" unicode="52" modifiers="0" pressed="false" autorepeat="false"/>
711 </map>
712 <map keycode="83" pressed="false">
713 <event keycode="64" unicode="64" modifiers="0" pressed="false" autorepeat="false"/>
714 </map>
715 <map keycode="84" pressed="false">
716 <event keycode="53" unicode="53" modifiers="0" pressed="false" autorepeat="false"/>
717 </map>
718 <map keycode="85" pressed="false">
719 <event keycode="55" unicode="55" modifiers="0" pressed="false" autorepeat="false"/>
720 </map>
721 <map keycode="87" pressed="false">
722 <event keycode="50" unicode="50" modifiers="0" pressed="false" autorepeat="false"/>
723 </map>
724 <map keycode="89" pressed="false">
725 <event keycode="54" unicode="54" modifiers="0" pressed="false" autorepeat="false"/>
726 </map>
727</state>
728
729<state name="control">
730 <map keycode="32" pressed="true">
731 <event keycode="96" unicode="96" modifiers="16" pressed="true" autorepeat="false"/>
732 </map>
733 <map keycode="39" pressed="true">
734 <event keycode="94" unicode="94" modifiers="16" pressed="true" autorepeat="false"/>
735 </map>
736 <map keycode="44" pressed="true">
737 <event keycode="123" unicode="123" modifiers="16" pressed="true" autorepeat="false"/>
738 </map>
739 <map keycode="46" pressed="true">
740 <event keycode="93" unicode="93" modifiers="16" pressed="true" autorepeat="false"/>
741 </map>
742 <map keycode="65" pressed="true">
743 <event keycode="65" unicode="1" modifiers="16" pressed="true" autorepeat="false"/>
744 </map>
745 <map keycode="66" pressed="true">
746 <event keycode="66" unicode="2" modifiers="16" pressed="true" autorepeat="false"/>
747 </map>
748 <map keycode="67" pressed="true">
749 <event keycode="67" unicode="3" modifiers="16" pressed="true" autorepeat="false"/>
750 </map>
751 <map keycode="68" pressed="true">
752 <event keycode="68" unicode="4" modifiers="16" pressed="true" autorepeat="false"/>
753 </map>
754 <map keycode="69" pressed="true">
755 <event keycode="69" unicode="5" modifiers="16" pressed="true" autorepeat="false"/>
756 </map>
757 <map keycode="70" pressed="true">
758 <event keycode="70" unicode="6" modifiers="16" pressed="true" autorepeat="false"/>
759 </map>
760 <map keycode="71" pressed="true">
761 <event keycode="71" unicode="7" modifiers="16" pressed="true" autorepeat="false"/>
762 </map>
763 <map keycode="72" pressed="true">
764 <event keycode="72" unicode="8" modifiers="16" pressed="true" autorepeat="false"/>
765 </map>
766 <map keycode="73" pressed="true">
767 <event keycode="73" unicode="9" modifiers="16" pressed="true" autorepeat="false"/>
768 </map>
769 <map keycode="74" pressed="true">
770 <event keycode="74" unicode="10" modifiers="16" pressed="true" autorepeat="false"/>
771 </map>
772 <map keycode="75" pressed="true">
773 <event keycode="75" unicode="11" modifiers="16" pressed="true" autorepeat="false"/>
774 </map>
775 <map keycode="76" pressed="true">
776 <event keycode="76" unicode="12" modifiers="16" pressed="true" autorepeat="false"/>
777 </map>
778 <map keycode="77" pressed="true">
779 <event keycode="77" unicode="13" modifiers="16" pressed="true" autorepeat="false"/>
780 </map>
781 <map keycode="78" pressed="true">
782 <event keycode="78" unicode="14" modifiers="16" pressed="true" autorepeat="false"/>
783 </map>
784 <map keycode="79" pressed="true">
785 <event keycode="79" unicode="15" modifiers="16" pressed="true" autorepeat="false"/>
786 </map>
787 <map keycode="80" pressed="true">
788 <event keycode="80" unicode="16" modifiers="16" pressed="true" autorepeat="false"/>
789 </map>
790 <map keycode="81" pressed="true">
791 <event keycode="81" unicode="17" modifiers="16" pressed="true" autorepeat="false"/>
792 </map>
793 <map keycode="82" pressed="true">
794 <event keycode="82" unicode="18" modifiers="16" pressed="true" autorepeat="false"/>
795 </map>
796 <map keycode="83" pressed="true">
797 <event keycode="83" unicode="19" modifiers="16" pressed="true" autorepeat="false"/>
798 </map>
799 <map keycode="84" pressed="true">
800 <event keycode="84" unicode="20" modifiers="16" pressed="true" autorepeat="false"/>
801 </map>
802 <map keycode="85" pressed="true">
803 <event keycode="85" unicode="21" modifiers="16" pressed="true" autorepeat="false"/>
804 </map>
805 <map keycode="86" pressed="true">
806 <event keycode="86" unicode="22" modifiers="16" pressed="true" autorepeat="false"/>
807 </map>
808 <map keycode="87" pressed="true">
809 <event keycode="87" unicode="23" modifiers="16" pressed="true" autorepeat="false"/>
810 </map>
811 <map keycode="88" pressed="true">
812 <event keycode="88" unicode="24" modifiers="16" pressed="true" autorepeat="false"/>
813 </map>
814 <map keycode="89" pressed="true">
815 <event keycode="89" unicode="25" modifiers="16" pressed="true" autorepeat="false"/>
816 </map>
817 <map keycode="90" pressed="true">
818 <event keycode="90" unicode="26" modifiers="16" pressed="true" autorepeat="false"/>
819 </map>
820 <map keycode="32" pressed="false">
821 <event keycode="96" unicode="96" modifiers="16" pressed="false" autorepeat="false"/>
822 </map>
823 <map keycode="39" pressed="false">
824 <event keycode="94" unicode="94" modifiers="16" pressed="false" autorepeat="false"/>
825 </map>
826 <map keycode="44" pressed="false">
827 <event keycode="123" unicode="123" modifiers="16" pressed="false" autorepeat="false"/>
828 </map>
829 <map keycode="46" pressed="false">
830 <event keycode="93" unicode="93" modifiers="16" pressed="false" autorepeat="false"/>
831 </map>
832 <map keycode="65" pressed="false">
833 <event keycode="65" unicode="1" modifiers="16" pressed="false" autorepeat="false"/>
834 </map>
835 <map keycode="66" pressed="false">
836 <event keycode="66" unicode="2" modifiers="16" pressed="false" autorepeat="false"/>
837 </map>
838 <map keycode="67" pressed="false">
839 <event keycode="67" unicode="3" modifiers="16" pressed="false" autorepeat="false"/>
840 </map>
841 <map keycode="68" pressed="false">
842 <event keycode="68" unicode="4" modifiers="16" pressed="false" autorepeat="false"/>
843 </map>
844 <map keycode="69" pressed="false">
845 <event keycode="69" unicode="5" modifiers="16" pressed="false" autorepeat="false"/>
846 </map>
847 <map keycode="70" pressed="false">
848 <event keycode="70" unicode="6" modifiers="16" pressed="false" autorepeat="false"/>
849 </map>
850 <map keycode="71" pressed="false">
851 <event keycode="71" unicode="7" modifiers="16" pressed="false" autorepeat="false"/>
852 </map>
853 <map keycode="72" pressed="false">
854 <event keycode="72" unicode="8" modifiers="16" pressed="false" autorepeat="false"/>
855 </map>
856 <map keycode="73" pressed="false">
857 <event keycode="73" unicode="9" modifiers="16" pressed="false" autorepeat="false"/>
858 </map>
859 <map keycode="74" pressed="false">
860 <event keycode="74" unicode="10" modifiers="16" pressed="false" autorepeat="false"/>
861 </map>
862 <map keycode="75" pressed="false">
863 <event keycode="75" unicode="11" modifiers="16" pressed="false" autorepeat="false"/>
864 </map>
865 <map keycode="76" pressed="false">
866 <event keycode="76" unicode="12" modifiers="16" pressed="false" autorepeat="false"/>
867 </map>
868 <map keycode="77" pressed="false">
869 <event keycode="77" unicode="13" modifiers="16" pressed="false" autorepeat="false"/>
870 </map>
871 <map keycode="78" pressed="false">
872 <event keycode="78" unicode="14" modifiers="16" pressed="false" autorepeat="false"/>
873 </map>
874 <map keycode="79" pressed="false">
875 <event keycode="79" unicode="15" modifiers="16" pressed="false" autorepeat="false"/>
876 </map>
877 <map keycode="80" pressed="false">
878 <event keycode="80" unicode="16" modifiers="16" pressed="false" autorepeat="false"/>
879 </map>
880 <map keycode="81" pressed="false">
881 <event keycode="81" unicode="17" modifiers="16" pressed="false" autorepeat="false"/>
882 </map>
883 <map keycode="82" pressed="false">
884 <event keycode="82" unicode="18" modifiers="16" pressed="false" autorepeat="false"/>
885 </map>
886 <map keycode="83" pressed="false">
887 <event keycode="83" unicode="19" modifiers="16" pressed="false" autorepeat="false"/>
888 </map>
889 <map keycode="84" pressed="false">
890 <event keycode="84" unicode="20" modifiers="16" pressed="false" autorepeat="false"/>
891 </map>
892 <map keycode="85" pressed="false">
893 <event keycode="85" unicode="21" modifiers="16" pressed="false" autorepeat="false"/>
894 </map>
895 <map keycode="86" pressed="false">
896 <event keycode="86" unicode="22" modifiers="16" pressed="false" autorepeat="false"/>
897 </map>
898 <map keycode="87" pressed="false">
899 <event keycode="87" unicode="23" modifiers="16" pressed="false" autorepeat="false"/>
900 </map>
901 <map keycode="88" pressed="false">
902 <event keycode="88" unicode="24" modifiers="16" pressed="false" autorepeat="false"/>
903 </map>
904 <map keycode="89" pressed="false">
905 <event keycode="89" unicode="25" modifiers="16" pressed="false" autorepeat="false"/>
906 </map>
907 <map keycode="90" pressed="false">
908 <event keycode="90" unicode="26" modifiers="16" pressed="false" autorepeat="false"/>
909 </map>
910</state>
911
912<state name="alt">
913 <map keycode="32" pressed="true">
914 <event keycode="32" unicode="96" modifiers="40" pressed="true" autorepeat="false"/>
915 </map>
916 <map keycode="39" pressed="true">
917 <event keycode="94" unicode="94" modifiers="40" pressed="true" autorepeat="false"/>
918 </map>
919 <map keycode="44" pressed="true">
920 <event keycode="123" unicode="123" modifiers="40" pressed="true" autorepeat="false"/>
921 </map>
922 <map keycode="46" pressed="true">
923 <event keycode="93" unicode="93" modifiers="40" pressed="true" autorepeat="false"/>
924 </map>
925 <map keycode="65" pressed="true">
926 <event keycode="33" unicode="65" modifiers="40" pressed="true" autorepeat="false"/>
927 </map>
928 <map keycode="66" pressed="true">
929 <event keycode="45" unicode="66" modifiers="40" pressed="true" autorepeat="false"/>
930 </map>
931 <map keycode="67" pressed="true">
932 <event keycode="35" unicode="67" modifiers="40" pressed="true" autorepeat="false"/>
933 </map>
934 <map keycode="68" pressed="true">
935 <event keycode="51" unicode="68" modifiers="40" pressed="true" autorepeat="false"/>
936 </map>
937 <map keycode="69" pressed="true">
938 <event keycode="36" unicode="69" modifiers="40" pressed="true" autorepeat="false"/>
939 </map>
940 <map keycode="70" pressed="true">
941 <event keycode="37" unicode="70" modifiers="40" pressed="true" autorepeat="false"/>
942 </map>
943 <map keycode="71" pressed="true">
944 <event keycode="95" unicode="71" modifiers="40" pressed="true" autorepeat="false"/>
945 </map>
946 <map keycode="72" pressed="true">
947 <event keycode="56" unicode="72" modifiers="40" pressed="true" autorepeat="false"/>
948 </map>
949 <map keycode="73" pressed="true">
950 <event keycode="56" unicode="73" modifiers="40" pressed="true" autorepeat="false"/>
951 </map>
952 <map keycode="74" pressed="true">
953 <event keycode="38" unicode="74" modifiers="40" pressed="true" autorepeat="false"/>
954 </map>
955 <map keycode="75" pressed="true">
956 <event keycode="42" unicode="75" modifiers="40" pressed="true" autorepeat="false"/>
957 </map>
958 <map keycode="76" pressed="true">
959 <event keycode="40" unicode="76" modifiers="40" pressed="true" autorepeat="false"/>
960 </map>
961 <map keycode="77" pressed="true">
962 <event keycode="61" unicode="77" modifiers="40" pressed="true" autorepeat="false"/>
963 </map>
964 <map keycode="78" pressed="true">
965 <event keycode="43" unicode="78" modifiers="40" pressed="true" autorepeat="false"/>
966 </map>
967 <map keycode="79" pressed="true">
968 <event keycode="57" unicode="79" modifiers="40" pressed="true" autorepeat="false"/>
969 </map>
970 <map keycode="80" pressed="true">
971 <event keycode="48" unicode="80" modifiers="40" pressed="true" autorepeat="false"/>
972 </map>
973 <map keycode="81" pressed="true">
974 <event keycode="49" unicode="81" modifiers="40" pressed="true" autorepeat="false"/>
975 </map>
976 <map keycode="82" pressed="true">
977 <event keycode="52" unicode="82" modifiers="40" pressed="true" autorepeat="false"/>
978 </map>
979 <map keycode="83" pressed="true">
980 <event keycode="64" unicode="83" modifiers="40" pressed="true" autorepeat="false"/>
981 </map>
982 <map keycode="84" pressed="true">
983 <event keycode="53" unicode="84" modifiers="40" pressed="true" autorepeat="false"/>
984 </map>
985 <map keycode="85" pressed="true">
986 <event keycode="55" unicode="85" modifiers="40" pressed="true" autorepeat="false"/>
987 </map>
988 <map keycode="86" pressed="true">
989 <event keycode="50" unicode="86" modifiers="40" pressed="true" autorepeat="false"/>
990 </map>
991 <map keycode="87" pressed="true">
992 <event keycode="54" unicode="87" modifiers="40" pressed="true" autorepeat="false"/>
993 </map>
994 <map keycode="88" pressed="true">
995 <event keycode="124" unicode="88" modifiers="40" pressed="true" autorepeat="false"/>
996 </map>
997 <map keycode="89" pressed="true">
998 <event keycode="126" unicode="89" modifiers="40" pressed="true" autorepeat="false"/>
999 </map>
1000 <map keycode="90" pressed="true">
1001 <event keycode="90" unicode="90" modifiers="40" pressed="true" autorepeat="false"/>
1002 </map>
1003 <map keycode="32" pressed="false">
1004 <event keycode="32" unicode="96" modifiers="40" pressed="false" autorepeat="false"/>
1005 </map>
1006 <map keycode="39" pressed="false">
1007 <event keycode="94" unicode="94" modifiers="40" pressed="false" autorepeat="false"/>
1008 </map>
1009 <map keycode="44" pressed="false">
1010 <event keycode="123" unicode="123" modifiers="40" pressed="false" autorepeat="false"/>
1011 </map>
1012 <map keycode="46" pressed="false">
1013 <event keycode="93" unicode="93" modifiers="40" pressed="false" autorepeat="false"/>
1014 </map>
1015 <map keycode="65" pressed="false">
1016 <event keycode="33" unicode="65" modifiers="40" pressed="false" autorepeat="false"/>
1017 </map>
1018 <map keycode="66" pressed="false">
1019 <event keycode="45" unicode="66" modifiers="40" pressed="false" autorepeat="false"/>
1020 </map>
1021 <map keycode="67" pressed="false">
1022 <event keycode="35" unicode="67" modifiers="40" pressed="false" autorepeat="false"/>
1023 </map>
1024 <map keycode="68" pressed="false">
1025 <event keycode="51" unicode="68" modifiers="40" pressed="false" autorepeat="false"/>
1026 </map>
1027 <map keycode="69" pressed="false">
1028 <event keycode="36" unicode="69" modifiers="40" pressed="false" autorepeat="false"/>
1029 </map>
1030 <map keycode="70" pressed="false">
1031 <event keycode="37" unicode="70" modifiers="40" pressed="false" autorepeat="false"/>
1032 </map>
1033 <map keycode="71" pressed="false">
1034 <event keycode="95" unicode="71" modifiers="40" pressed="false" autorepeat="false"/>
1035 </map>
1036 <map keycode="72" pressed="false">
1037 <event keycode="56" unicode="72" modifiers="40" pressed="false" autorepeat="false"/>
1038 </map>
1039 <map keycode="73" pressed="false">
1040 <event keycode="56" unicode="73" modifiers="40" pressed="false" autorepeat="false"/>
1041 </map>
1042 <map keycode="74" pressed="false">
1043 <event keycode="38" unicode="74" modifiers="40" pressed="false" autorepeat="false"/>
1044 </map>
1045 <map keycode="75" pressed="false">
1046 <event keycode="42" unicode="75" modifiers="40" pressed="false" autorepeat="false"/>
1047 </map>
1048 <map keycode="76" pressed="false">
1049 <event keycode="40" unicode="76" modifiers="40" pressed="false" autorepeat="false"/>
1050 </map>
1051 <map keycode="77" pressed="false">
1052 <event keycode="61" unicode="77" modifiers="40" pressed="false" autorepeat="false"/>
1053 </map>
1054 <map keycode="78" pressed="false">
1055 <event keycode="43" unicode="78" modifiers="40" pressed="false" autorepeat="false"/>
1056 </map>
1057 <map keycode="79" pressed="false">
1058 <event keycode="57" unicode="79" modifiers="40" pressed="false" autorepeat="false"/>
1059 </map>
1060 <map keycode="80" pressed="false">
1061 <event keycode="48" unicode="80" modifiers="40" pressed="false" autorepeat="false"/>
1062 </map>
1063 <map keycode="81" pressed="false">
1064 <event keycode="49" unicode="81" modifiers="40" pressed="false" autorepeat="false"/>
1065 </map>
1066 <map keycode="82" pressed="false">
1067 <event keycode="52" unicode="82" modifiers="40" pressed="false" autorepeat="false"/>
1068 </map>
1069 <map keycode="83" pressed="false">
1070 <event keycode="64" unicode="83" modifiers="40" pressed="false" autorepeat="false"/>
1071 </map>
1072 <map keycode="84" pressed="false">
1073 <event keycode="53" unicode="84" modifiers="40" pressed="false" autorepeat="false"/>
1074 </map>
1075 <map keycode="85" pressed="false">
1076 <event keycode="55" unicode="85" modifiers="40" pressed="false" autorepeat="false"/>
1077 </map>
1078 <map keycode="86" pressed="false">
1079 <event keycode="50" unicode="86" modifiers="40" pressed="false" autorepeat="false"/>
1080 </map>
1081 <map keycode="87" pressed="false">
1082 <event keycode="54" unicode="87" modifiers="40" pressed="false" autorepeat="false"/>
1083 </map>
1084 <map keycode="88" pressed="false">
1085 <event keycode="124" unicode="88" modifiers="40" pressed="false" autorepeat="false"/>
1086 </map>
1087 <map keycode="89" pressed="false">
1088 <event keycode="126" unicode="89" modifiers="40" pressed="false" autorepeat="false"/>
1089 </map>
1090 <map keycode="90" pressed="false">
1091 <event keycode="90" unicode="90" modifiers="40" pressed="false" autorepeat="false"/>
1092 </map>
1093</state>
1094
1095<state name="iFn">
1096 <map keycode="32" pressed="true">
1097 <event keycode="124" unicode="124" modifiers="0" pressed="true" autorepeat="true"/>
1098 <next-state name="Fn"/>
1099 </map>
1100 <map keycode="39" pressed="true">
1101 <event keycode="126" unicode="126" modifiers="0" pressed="true" autorepeat="true"/>
1102 <next-state name="Fn"/>
1103 </map>
1104 <map keycode="44" pressed="true">
1105 <event keycode="41" unicode="41" modifiers="0" pressed="true" autorepeat="true"/>
1106 <next-state name="Fn"/>
1107 </map>
1108 <map keycode="46" pressed="true">
1109 <event keycode="60" unicode="60" modifiers="0" pressed="true" autorepeat="true"/>
1110 <next-state name="Fn"/>
1111 </map>
1112 <map keycode="47" pressed="true">
1113 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1114 <next-state name="Fn-Num"/>
1115 </map>
1116 <map keycode="65" pressed="true">
1117 <event keycode="33" unicode="33" modifiers="0" pressed="true" autorepeat="true"/>
1118 <next-state name="Fn"/>
1119 </map>
1120 <map keycode="66" pressed="true">
1121 <event keycode="45" unicode="45" modifiers="0" pressed="true" autorepeat="true"/>
1122 <next-state name="Fn"/>
1123 </map>
1124 <map keycode="67" pressed="true">
1125 <event keycode="67" unicode="3" modifiers="16" pressed="true" autorepeat="false"/>
1126 <next-state name="Fn"/>
1127 </map>
1128 <map keycode="68" pressed="true">
1129 <event keycode="35" unicode="35" modifiers="0" pressed="true" autorepeat="true"/>
1130 <next-state name="Fn"/>
1131 </map>
1132 <map keycode="69" pressed="true">
1133 <event keycode="51" unicode="51" modifiers="0" pressed="true" autorepeat="true"/>
1134 <next-state name="Fn"/>
1135 </map>
1136 <map keycode="70" pressed="true">
1137 <event keycode="36" unicode="36" modifiers="0" pressed="true" autorepeat="true"/>
1138 <next-state name="Fn"/>
1139 </map>
1140 <map keycode="71" pressed="true">
1141 <event keycode="37" unicode="37" modifiers="0" pressed="true" autorepeat="true"/>
1142 <next-state name="Fn"/>
1143 </map>
1144 <map keycode="72" pressed="true">
1145 <event keycode="95" unicode="95" modifiers="0" pressed="true" autorepeat="true"/>
1146 <next-state name="Fn"/>
1147 </map>
1148 <map keycode="73" pressed="true">
1149 <event keycode="56" unicode="56" modifiers="0" pressed="true" autorepeat="true"/>
1150 <next-state name="Fn"/>
1151 </map>
1152 <map keycode="74" pressed="true">
1153 <event keycode="38" unicode="38" modifiers="0" pressed="true" autorepeat="true"/>
1154 <next-state name="Fn"/>
1155 </map>
1156 <map keycode="75" pressed="true">
1157 <event keycode="42" unicode="42" modifiers="0" pressed="true" autorepeat="true"/>
1158 <next-state name="Fn"/>
1159 </map>
1160 <map keycode="76" pressed="true">
1161 <event keycode="40" unicode="40" modifiers="0" pressed="true" autorepeat="true"/>
1162 <next-state name="Fn"/>
1163 </map>
1164 <map keycode="77" pressed="true">
1165 <event keycode="61" unicode="61" modifiers="0" pressed="true" autorepeat="true"/>
1166 <next-state name="Fn"/>
1167 </map>
1168 <map keycode="78" pressed="true">
1169 <event keycode="43" unicode="43" modifiers="0" pressed="true" autorepeat="true"/>
1170 <next-state name="Fn"/>
1171 </map>
1172 <map keycode="79" pressed="true">
1173 <event keycode="57" unicode="57" modifiers="0" pressed="true" autorepeat="true"/>
1174 <next-state name="Fn"/>
1175 </map>
1176 <map keycode="80" pressed="true">
1177 <event keycode="48" unicode="48" modifiers="0" pressed="true" autorepeat="true"/>
1178 <next-state name="Fn"/>
1179 </map>
1180 <map keycode="81" pressed="true">
1181 <event keycode="49" unicode="49" modifiers="0" pressed="true" autorepeat="true"/>
1182 <next-state name="Fn"/>
1183 </map>
1184 <map keycode="82" pressed="true">
1185 <event keycode="52" unicode="52" modifiers="0" pressed="true" autorepeat="true"/>
1186 <next-state name="Fn"/>
1187 </map>
1188 <map keycode="83" pressed="true">
1189 <event keycode="64" unicode="64" modifiers="0" pressed="true" autorepeat="true"/>
1190 <next-state name="Fn"/>
1191 </map>
1192 <map keycode="84" pressed="true">
1193 <event keycode="53" unicode="53" modifiers="0" pressed="true" autorepeat="true"/>
1194 <next-state name="Fn"/>
1195 </map>
1196 <map keycode="85" pressed="true">
1197 <event keycode="55" unicode="55" modifiers="0" pressed="true" autorepeat="true"/>
1198 <next-state name="Fn"/>
1199 </map>
1200 <map keycode="86" pressed="true">
1201 <event keycode="22" unicode="22" modifiers="16" pressed="true" autorepeat="false"/>
1202 <next-state name="Fn"/>
1203 </map>
1204 <map keycode="87" pressed="true">
1205 <event keycode="50" unicode="50" modifiers="0" pressed="true" autorepeat="true"/>
1206 <next-state name="Fn"/>
1207 </map>
1208 <map keycode="88" pressed="true">
1209 <event keycode="24" unicode="24" modifiers="16" pressed="true" autorepeat="false"/>
1210 <next-state name="Fn"/>
1211 </map>
1212 <map keycode="89" pressed="true">
1213 <event keycode="54" unicode="54" modifiers="0" pressed="true" autorepeat="true"/>
1214 <next-state name="Fn"/>
1215 </map>
1216 <map keycode="4097" pressed="true">
1217 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1218 <next-state name="Fn-Caps"/>
1219 </map>
1220 <map keycode="4128" pressed="true">
1221 <event keycode="4128" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
1222 <next-state name="LShift-Fn"/>
1223 </map>
1224 <map keycode="4130" pressed="true">
1225 <event keycode="4130" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
1226 <next-state name="RShift-Fn"/>
1227 </map>
1228 <map keycode="32" pressed="false">
1229 <event keycode="124" unicode="124" modifiers="0" pressed="false" autorepeat="false"/>
1230 <next-state name="Fn"/>
1231 </map>
1232 <map keycode="39" pressed="false">
1233 <event keycode="126" unicode="126" modifiers="0" pressed="false" autorepeat="false"/>
1234 <next-state name="Fn"/>
1235 </map>
1236 <map keycode="44" pressed="false">
1237 <event keycode="41" unicode="41" modifiers="0" pressed="false" autorepeat="false"/>
1238 <next-state name="Fn"/>
1239 </map>
1240 <map keycode="46" pressed="false">
1241 <event keycode="60" unicode="60" modifiers="0" pressed="false" autorepeat="false"/>
1242 <next-state name="Fn"/>
1243 </map>
1244 <map keycode="65" pressed="false">
1245 <event keycode="33" unicode="33" modifiers="0" pressed="false" autorepeat="false"/>
1246 <next-state name="Fn"/>
1247 </map>
1248 <map keycode="66" pressed="false">
1249 <event keycode="45" unicode="45" modifiers="0" pressed="false" autorepeat="false"/>
1250 <next-state name="Fn"/>
1251 </map>
1252 <map keycode="67" pressed="false">
1253 <event keycode="67" unicode="3" modifiers="16" pressed="false" autorepeat="false"/>
1254 <next-state name="Fn"/>
1255 </map>
1256 <map keycode="68" pressed="false">
1257 <event keycode="35" unicode="35" modifiers="0" pressed="false" autorepeat="false"/>
1258 <next-state name="Fn"/>
1259 </map>
1260 <map keycode="69" pressed="false">
1261 <event keycode="51" unicode="51" modifiers="0" pressed="false" autorepeat="false"/>
1262 <next-state name="Fn"/>
1263 </map>
1264 <map keycode="70" pressed="false">
1265 <event keycode="36" unicode="36" modifiers="0" pressed="false" autorepeat="false"/>
1266 <next-state name="Fn"/>
1267 </map>
1268 <map keycode="71" pressed="false">
1269 <event keycode="37" unicode="37" modifiers="0" pressed="false" autorepeat="false"/>
1270 <next-state name="Fn"/>
1271 </map>
1272 <map keycode="72" pressed="false">
1273 <event keycode="95" unicode="95" modifiers="0" pressed="false" autorepeat="false"/>
1274 <next-state name="Fn"/>
1275 </map>
1276 <map keycode="73" pressed="false">
1277 <event keycode="56" unicode="56" modifiers="0" pressed="false" autorepeat="false"/>
1278 <next-state name="Fn"/>
1279 </map>
1280 <map keycode="74" pressed="false">
1281 <event keycode="38" unicode="38" modifiers="0" pressed="false" autorepeat="false"/>
1282 <next-state name="Fn"/>
1283 </map>
1284 <map keycode="75" pressed="false">
1285 <event keycode="42" unicode="42" modifiers="0" pressed="false" autorepeat="false"/>
1286 <next-state name="Fn"/>
1287 </map>
1288 <map keycode="76" pressed="false">
1289 <event keycode="40" unicode="40" modifiers="0" pressed="false" autorepeat="false"/>
1290 <next-state name="Fn"/>
1291 </map>
1292 <map keycode="77" pressed="false">
1293 <event keycode="61" unicode="61" modifiers="0" pressed="false" autorepeat="false"/>
1294 <next-state name="Fn"/>
1295 </map>
1296 <map keycode="78" pressed="false">
1297 <event keycode="43" unicode="43" modifiers="0" pressed="false" autorepeat="false"/>
1298 <next-state name="Fn"/>
1299 </map>
1300 <map keycode="79" pressed="false">
1301 <event keycode="57" unicode="57" modifiers="0" pressed="false" autorepeat="false"/>
1302 <next-state name="Fn"/>
1303 </map>
1304 <map keycode="80" pressed="false">
1305 <event keycode="48" unicode="48" modifiers="0" pressed="false" autorepeat="false"/>
1306 <next-state name="Fn"/>
1307 </map>
1308 <map keycode="81" pressed="false">
1309 <event keycode="49" unicode="49" modifiers="0" pressed="false" autorepeat="false"/>
1310 <next-state name="Fn"/>
1311 </map>
1312 <map keycode="82" pressed="false">
1313 <event keycode="52" unicode="52" modifiers="0" pressed="false" autorepeat="false"/>
1314 <next-state name="Fn"/>
1315 </map>
1316 <map keycode="83" pressed="false">
1317 <event keycode="64" unicode="64" modifiers="0" pressed="false" autorepeat="false"/>
1318 <next-state name="Fn"/>
1319 </map>
1320 <map keycode="84" pressed="false">
1321 <event keycode="53" unicode="53" modifiers="0" pressed="false" autorepeat="false"/>
1322 <next-state name="Fn"/>
1323 </map>
1324 <map keycode="85" pressed="false">
1325 <event keycode="55" unicode="55" modifiers="0" pressed="false" autorepeat="false"/>
1326 <next-state name="Fn"/>
1327 </map>
1328 <map keycode="86" pressed="false">
1329 <event keycode="22" unicode="22" modifiers="16" pressed="false" autorepeat="false"/>
1330 <next-state name="Fn"/>
1331 </map>
1332 <map keycode="87" pressed="false">
1333 <event keycode="50" unicode="50" modifiers="0" pressed="false" autorepeat="false"/>
1334 <next-state name="Fn"/>
1335 </map>
1336 <map keycode="88" pressed="false">
1337 <event keycode="24" unicode="24" modifiers="16" pressed="false" autorepeat="false"/>
1338 <next-state name="Fn"/>
1339 </map>
1340 <map keycode="89" pressed="false">
1341 <event keycode="54" unicode="54" modifiers="0" pressed="false" autorepeat="false"/>
1342 <next-state name="Fn"/>
1343 </map>
1344 <map keycode="4165" pressed="false">
1345 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1346 <next-state name="sFn"/>
1347 </map>
1348</state>
1349
1350<state name="sFn">
1351 <map keycode="32" pressed="true">
1352 <event keycode="124" unicode="124" modifiers="0" pressed="true" autorepeat="true"/>
1353 <next-state name="Normal"/>
1354 </map>
1355 <map keycode="39" pressed="true">
1356 <event keycode="126" unicode="126" modifiers="0" pressed="true" autorepeat="true"/>
1357 <next-state name="Normal"/>
1358 </map>
1359 <map keycode="44" pressed="true">
1360 <event keycode="41" unicode="41" modifiers="0" pressed="true" autorepeat="true"/>
1361 <next-state name="Normal"/>
1362 </map>
1363 <map keycode="46" pressed="true">
1364 <event keycode="60" unicode="60" modifiers="0" pressed="true" autorepeat="true"/>
1365 <next-state name="Normal"/>
1366 </map>
1367 <map keycode="47" pressed="true">
1368 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1369 <next-state name="Num"/>
1370 </map>
1371 <map keycode="65" pressed="true">
1372 <event keycode="33" unicode="33" modifiers="0" pressed="true" autorepeat="true"/>
1373 <next-state name="Normal"/>
1374 </map>
1375 <map keycode="66" pressed="true">
1376 <event keycode="45" unicode="45" modifiers="0" pressed="true" autorepeat="true"/>
1377 <next-state name="Normal"/>
1378 </map>
1379 <map keycode="67" pressed="true">
1380 <event keycode="67" unicode="3" modifiers="16" pressed="true" autorepeat="false"/>
1381 <next-state name="Normal"/>
1382 </map>
1383 <map keycode="68" pressed="true">
1384 <event keycode="35" unicode="35" modifiers="0" pressed="true" autorepeat="true"/>
1385 <next-state name="Normal"/>
1386 </map>
1387 <map keycode="69" pressed="true">
1388 <event keycode="51" unicode="51" modifiers="0" pressed="true" autorepeat="true"/>
1389 <next-state name="Normal"/>
1390 </map>
1391 <map keycode="70" pressed="true">
1392 <event keycode="36" unicode="36" modifiers="0" pressed="true" autorepeat="true"/>
1393 <next-state name="Normal"/>
1394 </map>
1395 <map keycode="71" pressed="true">
1396 <event keycode="37" unicode="37" modifiers="0" pressed="true" autorepeat="true"/>
1397 <next-state name="Normal"/>
1398 </map>
1399 <map keycode="72" pressed="true">
1400 <event keycode="95" unicode="95" modifiers="0" pressed="true" autorepeat="true"/>
1401 <next-state name="Normal"/>
1402 </map>
1403 <map keycode="73" pressed="true">
1404 <event keycode="56" unicode="56" modifiers="0" pressed="true" autorepeat="true"/>
1405 <next-state name="Normal"/>
1406 </map>
1407 <map keycode="74" pressed="true">
1408 <event keycode="38" unicode="38" modifiers="0" pressed="true" autorepeat="true"/>
1409 <next-state name="Normal"/>
1410 </map>
1411 <map keycode="75" pressed="true">
1412 <event keycode="42" unicode="42" modifiers="0" pressed="true" autorepeat="true"/>
1413 <next-state name="Normal"/>
1414 </map>
1415 <map keycode="76" pressed="true">
1416 <event keycode="40" unicode="40" modifiers="0" pressed="true" autorepeat="true"/>
1417 <next-state name="Normal"/>
1418 </map>
1419 <map keycode="77" pressed="true">
1420 <event keycode="61" unicode="61" modifiers="0" pressed="true" autorepeat="true"/>
1421 <next-state name="Normal"/>
1422 </map>
1423 <map keycode="78" pressed="true">
1424 <event keycode="43" unicode="43" modifiers="0" pressed="true" autorepeat="true"/>
1425 <next-state name="Normal"/>
1426 </map>
1427 <map keycode="79" pressed="true">
1428 <event keycode="57" unicode="57" modifiers="0" pressed="true" autorepeat="true"/>
1429 <next-state name="Normal"/>
1430 </map>
1431 <map keycode="80" pressed="true">
1432 <event keycode="48" unicode="48" modifiers="0" pressed="true" autorepeat="true"/>
1433 <next-state name="Normal"/>
1434 </map>
1435 <map keycode="81" pressed="true">
1436 <event keycode="49" unicode="49" modifiers="0" pressed="true" autorepeat="true"/>
1437 <next-state name="Normal"/>
1438 </map>
1439 <map keycode="82" pressed="true">
1440 <event keycode="52" unicode="52" modifiers="0" pressed="true" autorepeat="true"/>
1441 <next-state name="Normal"/>
1442 </map>
1443 <map keycode="83" pressed="true">
1444 <event keycode="64" unicode="64" modifiers="0" pressed="true" autorepeat="true"/>
1445 <next-state name="Normal"/>
1446 </map>
1447 <map keycode="84" pressed="true">
1448 <event keycode="53" unicode="53" modifiers="0" pressed="true" autorepeat="true"/>
1449 <next-state name="Normal"/>
1450 </map>
1451 <map keycode="85" pressed="true">
1452 <event keycode="55" unicode="55" modifiers="0" pressed="true" autorepeat="true"/>
1453 <next-state name="Normal"/>
1454 </map>
1455 <map keycode="86" pressed="true">
1456 <event keycode="22" unicode="22" modifiers="16" pressed="true" autorepeat="false"/>
1457 <next-state name="Normal"/>
1458 </map>
1459 <map keycode="87" pressed="true">
1460 <event keycode="50" unicode="50" modifiers="0" pressed="true" autorepeat="true"/>
1461 <next-state name="Normal"/>
1462 </map>
1463 <map keycode="88" pressed="true">
1464 <event keycode="24" unicode="24" modifiers="16" pressed="true" autorepeat="false"/>
1465 <next-state name="Normal"/>
1466 </map>
1467 <map keycode="89" pressed="true">
1468 <event keycode="54" unicode="54" modifiers="0" pressed="true" autorepeat="true"/>
1469 <next-state name="Normal"/>
1470 </map>
1471 <map keycode="4097" pressed="true">
1472 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1473 <next-state name="Caps"/>
1474 </map>
1475 <map keycode="4128" pressed="true">
1476 <event keycode="4128" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
1477 <next-state name="LShift"/>
1478 </map>
1479 <map keycode="4130" pressed="true">
1480 <event keycode="4130" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
1481 <next-state name="RShift"/>
1482 </map>
1483 <map keycode="32" pressed="false">
1484 <event keycode="124" unicode="124" modifiers="0" pressed="false" autorepeat="false"/>
1485 <next-state name="Normal"/>
1486 </map>
1487 <map keycode="39" pressed="false">
1488 <event keycode="126" unicode="126" modifiers="0" pressed="false" autorepeat="false"/>
1489 <next-state name="Normal"/>
1490 </map>
1491 <map keycode="44" pressed="false">
1492 <event keycode="41" unicode="41" modifiers="0" pressed="false" autorepeat="false"/>
1493 <next-state name="Normal"/>
1494 </map>
1495 <map keycode="46" pressed="false">
1496 <event keycode="60" unicode="60" modifiers="0" pressed="false" autorepeat="false"/>
1497 <next-state name="Normal"/>
1498 </map>
1499 <map keycode="65" pressed="false">
1500 <event keycode="33" unicode="33" modifiers="0" pressed="false" autorepeat="false"/>
1501 <next-state name="Normal"/>
1502 </map>
1503 <map keycode="66" pressed="false">
1504 <event keycode="45" unicode="45" modifiers="0" pressed="false" autorepeat="false"/>
1505 <next-state name="Normal"/>
1506 </map>
1507 <map keycode="67" pressed="false">
1508 <event keycode="67" unicode="3" modifiers="16" pressed="false" autorepeat="false"/>
1509 <next-state name="Normal"/>
1510 </map>
1511 <map keycode="68" pressed="false">
1512 <event keycode="35" unicode="35" modifiers="0" pressed="false" autorepeat="false"/>
1513 <next-state name="Normal"/>
1514 </map>
1515 <map keycode="69" pressed="false">
1516 <event keycode="51" unicode="51" modifiers="0" pressed="false" autorepeat="false"/>
1517 <next-state name="Normal"/>
1518 </map>
1519 <map keycode="70" pressed="false">
1520 <event keycode="36" unicode="36" modifiers="0" pressed="false" autorepeat="false"/>
1521 <next-state name="Normal"/>
1522 </map>
1523 <map keycode="71" pressed="false">
1524 <event keycode="37" unicode="37" modifiers="0" pressed="false" autorepeat="false"/>
1525 <next-state name="Normal"/>
1526 </map>
1527 <map keycode="72" pressed="false">
1528 <event keycode="95" unicode="95" modifiers="0" pressed="false" autorepeat="false"/>
1529 <next-state name="Normal"/>
1530 </map>
1531 <map keycode="73" pressed="false">
1532 <event keycode="56" unicode="56" modifiers="0" pressed="false" autorepeat="false"/>
1533 <next-state name="Normal"/>
1534 </map>
1535 <map keycode="74" pressed="false">
1536 <event keycode="38" unicode="38" modifiers="0" pressed="false" autorepeat="false"/>
1537 <next-state name="Normal"/>
1538 </map>
1539 <map keycode="75" pressed="false">
1540 <event keycode="42" unicode="42" modifiers="0" pressed="false" autorepeat="false"/>
1541 <next-state name="Normal"/>
1542 </map>
1543 <map keycode="76" pressed="false">
1544 <event keycode="40" unicode="40" modifiers="0" pressed="false" autorepeat="false"/>
1545 <next-state name="Normal"/>
1546 </map>
1547 <map keycode="77" pressed="false">
1548 <event keycode="61" unicode="61" modifiers="0" pressed="false" autorepeat="false"/>
1549 <next-state name="Normal"/>
1550 </map>
1551 <map keycode="78" pressed="false">
1552 <event keycode="43" unicode="43" modifiers="0" pressed="false" autorepeat="false"/>
1553 <next-state name="Normal"/>
1554 </map>
1555 <map keycode="79" pressed="false">
1556 <event keycode="57" unicode="57" modifiers="0" pressed="false" autorepeat="false"/>
1557 <next-state name="Normal"/>
1558 </map>
1559 <map keycode="80" pressed="false">
1560 <event keycode="48" unicode="48" modifiers="0" pressed="false" autorepeat="false"/>
1561 <next-state name="Normal"/>
1562 </map>
1563 <map keycode="81" pressed="false">
1564 <event keycode="49" unicode="49" modifiers="0" pressed="false" autorepeat="false"/>
1565 <next-state name="Normal"/>
1566 </map>
1567 <map keycode="82" pressed="false">
1568 <event keycode="52" unicode="52" modifiers="0" pressed="false" autorepeat="false"/>
1569 <next-state name="Normal"/>
1570 </map>
1571 <map keycode="83" pressed="false">
1572 <event keycode="64" unicode="64" modifiers="0" pressed="false" autorepeat="false"/>
1573 <next-state name="Normal"/>
1574 </map>
1575 <map keycode="84" pressed="false">
1576 <event keycode="53" unicode="53" modifiers="0" pressed="false" autorepeat="false"/>
1577 <next-state name="Normal"/>
1578 </map>
1579 <map keycode="85" pressed="false">
1580 <event keycode="55" unicode="55" modifiers="0" pressed="false" autorepeat="false"/>
1581 <next-state name="Normal"/>
1582 </map>
1583 <map keycode="86" pressed="false">
1584 <event keycode="22" unicode="22" modifiers="16" pressed="false" autorepeat="false"/>
1585 <next-state name="Normal"/>
1586 </map>
1587 <map keycode="87" pressed="false">
1588 <event keycode="50" unicode="50" modifiers="0" pressed="false" autorepeat="false"/>
1589 <next-state name="Normal"/>
1590 </map>
1591 <map keycode="88" pressed="false">
1592 <event keycode="24" unicode="24" modifiers="16" pressed="false" autorepeat="false"/>
1593 <next-state name="Normal"/>
1594 </map>
1595 <map keycode="89" pressed="false">
1596 <event keycode="54" unicode="54" modifiers="0" pressed="false" autorepeat="false"/>
1597 <next-state name="Normal"/>
1598 </map>
1599 <map keycode="4165" pressed="false">
1600 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1601 <next-state name="iFn"/>
1602 </map>
1603</state>
1604
1605<state name="Caps-iFn">
1606 <map keycode="32" pressed="true">
1607 <event keycode="124" unicode="124" modifiers="0" pressed="true" autorepeat="true"/>
1608 <next-state name="Fn-Caps"/>
1609 </map>
1610 <map keycode="39" pressed="true">
1611 <event keycode="126" unicode="126" modifiers="0" pressed="true" autorepeat="true"/>
1612 <next-state name="Fn-Caps"/>
1613 </map>
1614 <map keycode="44" pressed="true">
1615 <event keycode="41" unicode="41" modifiers="0" pressed="true" autorepeat="true"/>
1616 <next-state name="Fn-Caps"/>
1617 </map>
1618 <map keycode="46" pressed="true">
1619 <event keycode="60" unicode="60" modifiers="0" pressed="true" autorepeat="true"/>
1620 <next-state name="Fn-Caps"/>
1621 </map>
1622 <map keycode="47" pressed="true">
1623 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1624 <next-state name="Fn-Num"/>
1625 </map>
1626 <map keycode="65" pressed="true">
1627 <event keycode="33" unicode="33" modifiers="0" pressed="true" autorepeat="true"/>
1628 <next-state name="Fn-Caps"/>
1629 </map>
1630 <map keycode="66" pressed="true">
1631 <event keycode="45" unicode="45" modifiers="0" pressed="true" autorepeat="true"/>
1632 <next-state name="Fn-Caps"/>
1633 </map>
1634 <map keycode="67" pressed="true">
1635 <event keycode="67" unicode="3" modifiers="16" pressed="true" autorepeat="false"/>
1636 <next-state name="Fn-Caps"/>
1637 </map>
1638 <map keycode="68" pressed="true">
1639 <event keycode="35" unicode="35" modifiers="0" pressed="true" autorepeat="true"/>
1640 <next-state name="Fn-Caps"/>
1641 </map>
1642 <map keycode="69" pressed="true">
1643 <event keycode="51" unicode="51" modifiers="0" pressed="true" autorepeat="true"/>
1644 <next-state name="Fn-Caps"/>
1645 </map>
1646 <map keycode="70" pressed="true">
1647 <event keycode="36" unicode="36" modifiers="0" pressed="true" autorepeat="true"/>
1648 <next-state name="Fn-Caps"/>
1649 </map>
1650 <map keycode="71" pressed="true">
1651 <event keycode="37" unicode="37" modifiers="0" pressed="true" autorepeat="true"/>
1652 <next-state name="Fn-Caps"/>
1653 </map>
1654 <map keycode="72" pressed="true">
1655 <event keycode="95" unicode="95" modifiers="0" pressed="true" autorepeat="true"/>
1656 <next-state name="Fn-Caps"/>
1657 </map>
1658 <map keycode="73" pressed="true">
1659 <event keycode="56" unicode="56" modifiers="0" pressed="true" autorepeat="true"/>
1660 <next-state name="Fn-Caps"/>
1661 </map>
1662 <map keycode="74" pressed="true">
1663 <event keycode="38" unicode="38" modifiers="0" pressed="true" autorepeat="true"/>
1664 <next-state name="Fn-Caps"/>
1665 </map>
1666 <map keycode="75" pressed="true">
1667 <event keycode="42" unicode="42" modifiers="0" pressed="true" autorepeat="true"/>
1668 <next-state name="Fn-Caps"/>
1669 </map>
1670 <map keycode="76" pressed="true">
1671 <event keycode="40" unicode="40" modifiers="0" pressed="true" autorepeat="true"/>
1672 <next-state name="Fn-Caps"/>
1673 </map>
1674 <map keycode="77" pressed="true">
1675 <event keycode="61" unicode="61" modifiers="0" pressed="true" autorepeat="true"/>
1676 <next-state name="Fn-Caps"/>
1677 </map>
1678 <map keycode="78" pressed="true">
1679 <event keycode="43" unicode="43" modifiers="0" pressed="true" autorepeat="true"/>
1680 <next-state name="Fn-Caps"/>
1681 </map>
1682 <map keycode="79" pressed="true">
1683 <event keycode="57" unicode="57" modifiers="0" pressed="true" autorepeat="true"/>
1684 <next-state name="Fn-Caps"/>
1685 </map>
1686 <map keycode="80" pressed="true">
1687 <event keycode="48" unicode="48" modifiers="0" pressed="true" autorepeat="true"/>
1688 <next-state name="Fn-Caps"/>
1689 </map>
1690 <map keycode="81" pressed="true">
1691 <event keycode="49" unicode="49" modifiers="0" pressed="true" autorepeat="true"/>
1692 <next-state name="Fn-Caps"/>
1693 </map>
1694 <map keycode="82" pressed="true">
1695 <event keycode="52" unicode="52" modifiers="0" pressed="true" autorepeat="true"/>
1696 <next-state name="Fn-Caps"/>
1697 </map>
1698 <map keycode="83" pressed="true">
1699 <event keycode="64" unicode="64" modifiers="0" pressed="true" autorepeat="true"/>
1700 <next-state name="Fn-Caps"/>
1701 </map>
1702 <map keycode="84" pressed="true">
1703 <event keycode="53" unicode="53" modifiers="0" pressed="true" autorepeat="true"/>
1704 <next-state name="Fn-Caps"/>
1705 </map>
1706 <map keycode="85" pressed="true">
1707 <event keycode="55" unicode="55" modifiers="0" pressed="true" autorepeat="true"/>
1708 <next-state name="Fn-Caps"/>
1709 </map>
1710 <map keycode="86" pressed="true">
1711 <event keycode="22" unicode="22" modifiers="16" pressed="true" autorepeat="false"/>
1712 <next-state name="Fn-Caps"/>
1713 </map>
1714 <map keycode="87" pressed="true">
1715 <event keycode="50" unicode="50" modifiers="0" pressed="true" autorepeat="true"/>
1716 <next-state name="Fn-Caps"/>
1717 </map>
1718 <map keycode="88" pressed="true">
1719 <event keycode="24" unicode="24" modifiers="16" pressed="true" autorepeat="false"/>
1720 <next-state name="Fn-Caps"/>
1721 </map>
1722 <map keycode="89" pressed="true">
1723 <event keycode="54" unicode="54" modifiers="0" pressed="true" autorepeat="true"/>
1724 <next-state name="Fn-Caps"/>
1725 </map>
1726 <map keycode="4097" pressed="true">
1727 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1728 <next-state name="Fn"/>
1729 </map>
1730 <map keycode="4128" pressed="true">
1731 <event keycode="4128" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
1732 <next-state name="LShift-Fn-Caps"/>
1733 </map>
1734 <map keycode="4130" pressed="true">
1735 <event keycode="4130" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
1736 <next-state name="RShift-Fn-Caps"/>
1737 </map>
1738 <map keycode="32" pressed="false">
1739 <event keycode="124" unicode="124" modifiers="0" pressed="false" autorepeat="false"/>
1740 <next-state name="Fn-Caps"/>
1741 </map>
1742 <map keycode="39" pressed="false">
1743 <event keycode="126" unicode="126" modifiers="0" pressed="false" autorepeat="false"/>
1744 <next-state name="Fn-Caps"/>
1745 </map>
1746 <map keycode="44" pressed="false">
1747 <event keycode="41" unicode="41" modifiers="0" pressed="false" autorepeat="false"/>
1748 <next-state name="Fn-Caps"/>
1749 </map>
1750 <map keycode="46" pressed="false">
1751 <event keycode="60" unicode="60" modifiers="0" pressed="false" autorepeat="false"/>
1752 <next-state name="Fn-Caps"/>
1753 </map>
1754 <map keycode="65" pressed="false">
1755 <event keycode="33" unicode="33" modifiers="0" pressed="false" autorepeat="false"/>
1756 <next-state name="Fn-Caps"/>
1757 </map>
1758 <map keycode="66" pressed="false">
1759 <event keycode="45" unicode="45" modifiers="0" pressed="false" autorepeat="false"/>
1760 <next-state name="Fn-Caps"/>
1761 </map>
1762 <map keycode="67" pressed="false">
1763 <event keycode="67" unicode="3" modifiers="16" pressed="false" autorepeat="false"/>
1764 <next-state name="Fn-Caps"/>
1765 </map>
1766 <map keycode="68" pressed="false">
1767 <event keycode="35" unicode="35" modifiers="0" pressed="false" autorepeat="false"/>
1768 <next-state name="Fn-Caps"/>
1769 </map>
1770 <map keycode="69" pressed="false">
1771 <event keycode="51" unicode="51" modifiers="0" pressed="false" autorepeat="false"/>
1772 <next-state name="Fn-Caps"/>
1773 </map>
1774 <map keycode="70" pressed="false">
1775 <event keycode="36" unicode="36" modifiers="0" pressed="false" autorepeat="false"/>
1776 <next-state name="Fn-Caps"/>
1777 </map>
1778 <map keycode="71" pressed="false">
1779 <event keycode="37" unicode="37" modifiers="0" pressed="false" autorepeat="false"/>
1780 <next-state name="Fn-Caps"/>
1781 </map>
1782 <map keycode="72" pressed="false">
1783 <event keycode="95" unicode="95" modifiers="0" pressed="false" autorepeat="false"/>
1784 <next-state name="Fn-Caps"/>
1785 </map>
1786 <map keycode="73" pressed="false">
1787 <event keycode="56" unicode="56" modifiers="0" pressed="false" autorepeat="false"/>
1788 <next-state name="Fn-Caps"/>
1789 </map>
1790 <map keycode="74" pressed="false">
1791 <event keycode="38" unicode="38" modifiers="0" pressed="false" autorepeat="false"/>
1792 <next-state name="Fn-Caps"/>
1793 </map>
1794 <map keycode="75" pressed="false">
1795 <event keycode="42" unicode="42" modifiers="0" pressed="false" autorepeat="false"/>
1796 <next-state name="Fn-Caps"/>
1797 </map>
1798 <map keycode="76" pressed="false">
1799 <event keycode="40" unicode="40" modifiers="0" pressed="false" autorepeat="false"/>
1800 <next-state name="Fn-Caps"/>
1801 </map>
1802 <map keycode="77" pressed="false">
1803 <event keycode="61" unicode="61" modifiers="0" pressed="false" autorepeat="false"/>
1804 <next-state name="Fn-Caps"/>
1805 </map>
1806 <map keycode="78" pressed="false">
1807 <event keycode="43" unicode="43" modifiers="0" pressed="false" autorepeat="false"/>
1808 <next-state name="Fn-Caps"/>
1809 </map>
1810 <map keycode="79" pressed="false">
1811 <event keycode="57" unicode="57" modifiers="0" pressed="false" autorepeat="false"/>
1812 <next-state name="Fn-Caps"/>
1813 </map>
1814 <map keycode="80" pressed="false">
1815 <event keycode="48" unicode="48" modifiers="0" pressed="false" autorepeat="false"/>
1816 <next-state name="Fn-Caps"/>
1817 </map>
1818 <map keycode="81" pressed="false">
1819 <event keycode="49" unicode="49" modifiers="0" pressed="false" autorepeat="false"/>
1820 <next-state name="Fn-Caps"/>
1821 </map>
1822 <map keycode="82" pressed="false">
1823 <event keycode="52" unicode="52" modifiers="0" pressed="false" autorepeat="false"/>
1824 <next-state name="Fn-Caps"/>
1825 </map>
1826 <map keycode="83" pressed="false">
1827 <event keycode="64" unicode="64" modifiers="0" pressed="false" autorepeat="false"/>
1828 <next-state name="Fn-Caps"/>
1829 </map>
1830 <map keycode="84" pressed="false">
1831 <event keycode="53" unicode="53" modifiers="0" pressed="false" autorepeat="false"/>
1832 <next-state name="Fn-Caps"/>
1833 </map>
1834 <map keycode="85" pressed="false">
1835 <event keycode="55" unicode="55" modifiers="0" pressed="false" autorepeat="false"/>
1836 <next-state name="Fn-Caps"/>
1837 </map>
1838 <map keycode="86" pressed="false">
1839 <event keycode="22" unicode="22" modifiers="16" pressed="false" autorepeat="false"/>
1840 <next-state name="Fn-Caps"/>
1841 </map>
1842 <map keycode="87" pressed="false">
1843 <event keycode="50" unicode="50" modifiers="0" pressed="false" autorepeat="false"/>
1844 <next-state name="Fn-Caps"/>
1845 </map>
1846 <map keycode="88" pressed="false">
1847 <event keycode="24" unicode="24" modifiers="16" pressed="false" autorepeat="false"/>
1848 <next-state name="Fn-Caps"/>
1849 </map>
1850 <map keycode="89" pressed="false">
1851 <event keycode="54" unicode="54" modifiers="0" pressed="false" autorepeat="false"/>
1852 <next-state name="Fn-Caps"/>
1853 </map>
1854 <map keycode="4165" pressed="false">
1855 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1856 <next-state name="Caps-sFn"/>
1857 </map>
1858</state>
1859
1860<state name="Caps-sFn">
1861 <map keycode="32" pressed="true">
1862 <event keycode="124" unicode="124" modifiers="0" pressed="true" autorepeat="true"/>
1863 <next-state name="Caps"/>
1864 </map>
1865 <map keycode="39" pressed="true">
1866 <event keycode="126" unicode="126" modifiers="0" pressed="true" autorepeat="true"/>
1867 <next-state name="Caps"/>
1868 </map>
1869 <map keycode="44" pressed="true">
1870 <event keycode="41" unicode="41" modifiers="0" pressed="true" autorepeat="true"/>
1871 <next-state name="Caps"/>
1872 </map>
1873 <map keycode="46" pressed="true">
1874 <event keycode="60" unicode="60" modifiers="0" pressed="true" autorepeat="true"/>
1875 <next-state name="Caps"/>
1876 </map>
1877 <map keycode="47" pressed="true">
1878 <event keycode="4133" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1879 <next-state name="Num"/>
1880 </map>
1881 <map keycode="65" pressed="true">
1882 <event keycode="33" unicode="33" modifiers="0" pressed="true" autorepeat="true"/>
1883 <next-state name="Caps"/>
1884 </map>
1885 <map keycode="66" pressed="true">
1886 <event keycode="45" unicode="45" modifiers="0" pressed="true" autorepeat="true"/>
1887 <next-state name="Caps"/>
1888 </map>
1889 <map keycode="67" pressed="true">
1890 <event keycode="67" unicode="3" modifiers="16" pressed="true" autorepeat="false"/>
1891 <next-state name="Caps"/>
1892 </map>
1893 <map keycode="68" pressed="true">
1894 <event keycode="35" unicode="35" modifiers="0" pressed="true" autorepeat="true"/>
1895 <next-state name="Caps"/>
1896 </map>
1897 <map keycode="69" pressed="true">
1898 <event keycode="51" unicode="51" modifiers="0" pressed="true" autorepeat="true"/>
1899 <next-state name="Caps"/>
1900 </map>
1901 <map keycode="70" pressed="true">
1902 <event keycode="36" unicode="36" modifiers="0" pressed="true" autorepeat="true"/>
1903 <next-state name="Caps"/>
1904 </map>
1905 <map keycode="71" pressed="true">
1906 <event keycode="37" unicode="37" modifiers="0" pressed="true" autorepeat="true"/>
1907 <next-state name="Caps"/>
1908 </map>
1909 <map keycode="72" pressed="true">
1910 <event keycode="95" unicode="95" modifiers="0" pressed="true" autorepeat="true"/>
1911 <next-state name="Caps"/>
1912 </map>
1913 <map keycode="73" pressed="true">
1914 <event keycode="56" unicode="56" modifiers="0" pressed="true" autorepeat="true"/>
1915 <next-state name="Caps"/>
1916 </map>
1917 <map keycode="74" pressed="true">
1918 <event keycode="38" unicode="38" modifiers="0" pressed="true" autorepeat="true"/>
1919 <next-state name="Caps"/>
1920 </map>
1921 <map keycode="75" pressed="true">
1922 <event keycode="42" unicode="42" modifiers="0" pressed="true" autorepeat="true"/>
1923 <next-state name="Caps"/>
1924 </map>
1925 <map keycode="76" pressed="true">
1926 <event keycode="40" unicode="40" modifiers="0" pressed="true" autorepeat="true"/>
1927 <next-state name="Caps"/>
1928 </map>
1929 <map keycode="77" pressed="true">
1930 <event keycode="61" unicode="61" modifiers="0" pressed="true" autorepeat="true"/>
1931 <next-state name="Caps"/>
1932 </map>
1933 <map keycode="78" pressed="true">
1934 <event keycode="43" unicode="43" modifiers="0" pressed="true" autorepeat="true"/>
1935 <next-state name="Caps"/>
1936 </map>
1937 <map keycode="79" pressed="true">
1938 <event keycode="57" unicode="57" modifiers="0" pressed="true" autorepeat="true"/>
1939 <next-state name="Caps"/>
1940 </map>
1941 <map keycode="80" pressed="true">
1942 <event keycode="48" unicode="48" modifiers="0" pressed="true" autorepeat="true"/>
1943 <next-state name="Caps"/>
1944 </map>
1945 <map keycode="81" pressed="true">
1946 <event keycode="49" unicode="49" modifiers="0" pressed="true" autorepeat="true"/>
1947 <next-state name="Caps"/>
1948 </map>
1949 <map keycode="82" pressed="true">
1950 <event keycode="52" unicode="52" modifiers="0" pressed="true" autorepeat="true"/>
1951 <next-state name="Caps"/>
1952 </map>
1953 <map keycode="83" pressed="true">
1954 <event keycode="64" unicode="64" modifiers="0" pressed="true" autorepeat="true"/>
1955 <next-state name="Caps"/>
1956 </map>
1957 <map keycode="84" pressed="true">
1958 <event keycode="53" unicode="53" modifiers="0" pressed="true" autorepeat="true"/>
1959 <next-state name="Caps"/>
1960 </map>
1961 <map keycode="85" pressed="true">
1962 <event keycode="55" unicode="55" modifiers="0" pressed="true" autorepeat="true"/>
1963 <next-state name="Caps"/>
1964 </map>
1965 <map keycode="86" pressed="true">
1966 <event keycode="22" unicode="22" modifiers="16" pressed="true" autorepeat="false"/>
1967 <next-state name="Caps"/>
1968 </map>
1969 <map keycode="87" pressed="true">
1970 <event keycode="50" unicode="50" modifiers="0" pressed="true" autorepeat="true"/>
1971 <next-state name="Caps"/>
1972 </map>
1973 <map keycode="88" pressed="true">
1974 <event keycode="24" unicode="24" modifiers="16" pressed="true" autorepeat="false"/>
1975 <next-state name="Caps"/>
1976 </map>
1977 <map keycode="89" pressed="true">
1978 <event keycode="54" unicode="54" modifiers="0" pressed="true" autorepeat="true"/>
1979 <next-state name="Caps"/>
1980 </map>
1981 <map keycode="4097" pressed="true">
1982 <event keycode="4132" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
1983 <next-state name="Normal"/>
1984 </map>
1985 <map keycode="4128" pressed="true">
1986 <event keycode="4128" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
1987 <next-state name="LShift-Caps"/>
1988 </map>
1989 <map keycode="4130" pressed="true">
1990 <event keycode="4130" unicode="-1" modifiers="40" pressed="true" autorepeat="false"/>
1991 <next-state name="RShift-Caps"/>
1992 </map>
1993 <map keycode="32" pressed="false">
1994 <event keycode="124" unicode="124" modifiers="0" pressed="false" autorepeat="false"/>
1995 <next-state name="Caps"/>
1996 </map>
1997 <map keycode="39" pressed="false">
1998 <event keycode="126" unicode="126" modifiers="0" pressed="false" autorepeat="false"/>
1999 <next-state name="Caps"/>
2000 </map>
2001 <map keycode="44" pressed="false">
2002 <event keycode="41" unicode="41" modifiers="0" pressed="false" autorepeat="false"/>
2003 <next-state name="Caps"/>
2004 </map>
2005 <map keycode="46" pressed="false">
2006 <event keycode="60" unicode="60" modifiers="0" pressed="false" autorepeat="false"/>
2007 <next-state name="Caps"/>
2008 </map>
2009 <map keycode="65" pressed="false">
2010 <event keycode="33" unicode="33" modifiers="0" pressed="false" autorepeat="false"/>
2011 <next-state name="Caps"/>
2012 </map>
2013 <map keycode="66" pressed="false">
2014 <event keycode="45" unicode="45" modifiers="0" pressed="false" autorepeat="false"/>
2015 <next-state name="Caps"/>
2016 </map>
2017 <map keycode="67" pressed="false">
2018 <event keycode="67" unicode="3" modifiers="16" pressed="false" autorepeat="false"/>
2019 <next-state name="Caps"/>
2020 </map>
2021 <map keycode="68" pressed="false">
2022 <event keycode="35" unicode="35" modifiers="0" pressed="false" autorepeat="false"/>
2023 <next-state name="Caps"/>
2024 </map>
2025 <map keycode="69" pressed="false">
2026 <event keycode="51" unicode="51" modifiers="0" pressed="false" autorepeat="false"/>
2027 <next-state name="Caps"/>
2028 </map>
2029 <map keycode="70" pressed="false">
2030 <event keycode="36" unicode="36" modifiers="0" pressed="false" autorepeat="false"/>
2031 <next-state name="Caps"/>
2032 </map>
2033 <map keycode="71" pressed="false">
2034 <event keycode="37" unicode="37" modifiers="0" pressed="false" autorepeat="false"/>
2035 <next-state name="Caps"/>
2036 </map>
2037 <map keycode="72" pressed="false">
2038 <event keycode="95" unicode="95" modifiers="0" pressed="false" autorepeat="false"/>
2039 <next-state name="Caps"/>
2040 </map>
2041 <map keycode="73" pressed="false">
2042 <event keycode="56" unicode="56" modifiers="0" pressed="false" autorepeat="false"/>
2043 <next-state name="Caps"/>
2044 </map>
2045 <map keycode="74" pressed="false">
2046 <event keycode="38" unicode="38" modifiers="0" pressed="false" autorepeat="false"/>
2047 <next-state name="Caps"/>
2048 </map>
2049 <map keycode="75" pressed="false">
2050 <event keycode="42" unicode="42" modifiers="0" pressed="false" autorepeat="false"/>
2051 <next-state name="Caps"/>
2052 </map>
2053 <map keycode="76" pressed="false">
2054 <event keycode="40" unicode="40" modifiers="0" pressed="false" autorepeat="false"/>
2055 <next-state name="Caps"/>
2056 </map>
2057 <map keycode="77" pressed="false">
2058 <event keycode="61" unicode="61" modifiers="0" pressed="false" autorepeat="false"/>
2059 <next-state name="Caps"/>
2060 </map>
2061 <map keycode="78" pressed="false">
2062 <event keycode="43" unicode="43" modifiers="0" pressed="false" autorepeat="false"/>
2063 <next-state name="Caps"/>
2064 </map>
2065 <map keycode="79" pressed="false">
2066 <event keycode="57" unicode="57" modifiers="0" pressed="false" autorepeat="false"/>
2067 <next-state name="Caps"/>
2068 </map>
2069 <map keycode="80" pressed="false">
2070 <event keycode="48" unicode="48" modifiers="0" pressed="false" autorepeat="false"/>
2071 <next-state name="Caps"/>
2072 </map>
2073 <map keycode="81" pressed="false">
2074 <event keycode="49" unicode="49" modifiers="0" pressed="false" autorepeat="false"/>
2075 <next-state name="Caps"/>
2076 </map>
2077 <map keycode="82" pressed="false">
2078 <event keycode="52" unicode="52" modifiers="0" pressed="false" autorepeat="false"/>
2079 <next-state name="Caps"/>
2080 </map>
2081 <map keycode="83" pressed="false">
2082 <event keycode="64" unicode="64" modifiers="0" pressed="false" autorepeat="false"/>
2083 <next-state name="Caps"/>
2084 </map>
2085 <map keycode="84" pressed="false">
2086 <event keycode="53" unicode="53" modifiers="0" pressed="false" autorepeat="false"/>
2087 <next-state name="Caps"/>
2088 </map>
2089 <map keycode="85" pressed="false">
2090 <event keycode="55" unicode="55" modifiers="0" pressed="false" autorepeat="false"/>
2091 <next-state name="Caps"/>
2092 </map>
2093 <map keycode="86" pressed="false">
2094 <event keycode="22" unicode="22" modifiers="16" pressed="false" autorepeat="false"/>
2095 <next-state name="Caps"/>
2096 </map>
2097 <map keycode="87" pressed="false">
2098 <event keycode="50" unicode="50" modifiers="0" pressed="false" autorepeat="false"/>
2099 <next-state name="Caps"/>
2100 </map>
2101 <map keycode="88" pressed="false">
2102 <event keycode="24" unicode="24" modifiers="16" pressed="false" autorepeat="false"/>
2103 <next-state name="Caps"/>
2104 </map>
2105 <map keycode="89" pressed="false">
2106 <event keycode="54" unicode="54" modifiers="0" pressed="false" autorepeat="false"/>
2107 <next-state name="Caps"/>
2108 </map>
2109 <map keycode="4165" pressed="false">
2110 <event keycode="4165" unicode="-1" modifiers="0" pressed="true" autorepeat="false"/>
2111 <next-state name="Caps-iFn"/>
2112 </map>
2113</state>
2114
2115</keymap>
diff --git a/share/zkb/de.xml b/share/zkb/de.xml
new file mode 100644
index 0000000..679ebc3
--- a/dev/null
+++ b/share/zkb/de.xml
@@ -0,0 +1,617 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="LShift-RShift" parent="common"/>
6<state name="LShift-RShift-Caps" parent="common"/>
7
8<state name="LShift">
9 <map keycode="Right Shift" pressed="true">
10 <event keycode="Meta" unicode="-1" pressed="false"/>
11 <next-state name="LShift-RShift"/>
12 </map>
13</state>
14
15<state name="RShift">
16 <map keycode="E" pressed="true">
17 <event keycode="E" unicode="8364" pressed="true" autorepeat="true"/>
18 </map>
19
20 <map keycode="O" pressed="true">
21 <event keycode="O" unicode="223" pressed="true" autorepeat="true"/>
22 </map>
23
24 <map keycode="L" pressed="true">
25 <event keycode="L" unicode="252" pressed="true" autorepeat="true"/>
26 </map>
27
28 <map keycode="M" pressed="true">
29 <event keycode="M" unicode="246" pressed="true" autorepeat="true"/>
30 </map>
31
32 <map keycode="Comma" pressed="true">
33 <event keycode="Comma" unicode="228" pressed="true" autorepeat="true"/>
34 </map>
35
36 <map keycode="E" pressed="false">
37 <event keycode="E" unicode="8364" pressed="false"/>
38 </map>
39
40 <map keycode="O" pressed="false">
41 <event keycode="O" unicode="223" pressed="false"/>
42 </map>
43
44 <map keycode="L" pressed="false">
45 <event keycode="L" unicode="252" pressed="false"/>
46 </map>
47
48 <map keycode="M" pressed="false">
49 <event keycode="M" unicode="246" pressed="false"/>
50 </map>
51
52 <map keycode="Comma" pressed="false">
53 <event keycode="Comma" unicode="228" pressed="false"/>
54 </map>
55
56 <map keycode="Left Shift" pressed="true">
57 <event keycode="Shift" unicode="-1" pressed="true"/>
58 <next-state name="LShift-RShift"/>
59 </map>
60</state>
61
62<state name="LShift-Caps">
63 <map keycode="Right Shift" pressed="true">
64 <event keycode="Meta" unicode="-1" pressed="true"/>
65 <next-state name="LShift-RShift-Caps"/>
66 </map>
67</state>
68
69<state name="LShift-Num">
70 <map keycode="Left Shift" pressed="false">
71 <event keycode="Shift" unicode="-1" pressed="false"/>
72 <next-state name="Num"/>
73 </map>
74
75 <map keycode="Fn" pressed="true">
76 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
77 <next-state name="LShift-Fn-Num"/>
78 </map>
79</state>
80
81<state name="RShift-Caps">
82 <map keycode="E" pressed="true">
83 <event keycode="E" unicode="8364" pressed="true" autorepeat="true"/>
84 </map>
85
86 <map keycode="O" pressed="true">
87 <event keycode="O" unicode="223" pressed="true" autorepeat="true"/>
88 </map>
89
90 <map keycode="L" pressed="true">
91 <event keycode="L" unicode="220" pressed="true" autorepeat="true"/>
92 </map>
93
94 <map keycode="M" pressed="true">
95 <event keycode="M" unicode="214" pressed="true" autorepeat="true"/>
96 </map>
97
98 <map keycode="Comma" pressed="true">
99 <event keycode="Comma" unicode="196" pressed="true" autorepeat="true"/>
100 </map>
101
102 <map keycode="E" pressed="false">
103 <event keycode="E" unicode="8364" pressed="false"/>
104 </map>
105
106 <map keycode="O" pressed="false">
107 <event keycode="O" unicode="223" pressed="false"/>
108 </map>
109
110 <map keycode="L" pressed="false">
111 <event keycode="L" unicode="220" pressed="false"/>
112 </map>
113
114 <map keycode="M" pressed="false">
115 <event keycode="M" unicode="214" pressed="false"/>
116 </map>
117
118 <map keycode="Comma" pressed="false">
119 <event keycode="Comma" unicode="196" pressed="false"/>
120 </map>
121
122 <map keycode="Left Shift" pressed="true">
123 <event keycode="Shift" unicode="-1" pressed="true"/>
124 <next-state name="LShift-RShift-Caps"/>
125 </map>
126</state>
127
128<state name="LShift-RShift">
129 <map keycode="E" pressed="true">
130 <event keycode="E" unicode="8364" pressed="true" autorepeat="true"/>
131 </map>
132
133 <map keycode="O" pressed="true">
134 <event keycode="O" unicode="223" pressed="true" autorepeat="true"/>
135 </map>
136
137 <map keycode="L" pressed="true">
138 <event keycode="L" unicode="220" pressed="true" autorepeat="true"/>
139 </map>
140
141 <map keycode="M" pressed="true">
142 <event keycode="M" unicode="214" pressed="true" autorepeat="true"/>
143 </map>
144
145 <map keycode="Comma" pressed="true">
146 <event keycode="Comma" unicode="196" pressed="true" autorepeat="true"/>
147 </map>
148
149 <map keycode="E" pressed="false">
150 <event keycode="E" unicode="8364" pressed="false"/>
151 </map>
152
153 <map keycode="O" pressed="false">
154 <event keycode="O" unicode="223" pressed="false"/>
155 </map>
156
157 <map keycode="L" pressed="false">
158 <event keycode="L" unicode="220" pressed="false"/>
159 </map>
160
161 <map keycode="M" pressed="false">
162 <event keycode="M" unicode="214" pressed="false"/>
163 </map>
164
165 <map keycode="Period" pressed="false">
166 <event keycode="Period" unicode="196" pressed="false"/>
167 </map>
168
169 <map keycode="Left Shift" pressed="false">
170 <event keycode="Shift" unicode="-1" pressed="false"/>
171 <next-state name="RShift"/>
172 </map>
173
174 <map keycode="Right Shift" pressed="false">
175 <event keycode="Meta" unicode="-1" pressed="false"/>
176 <next-state name="LShift"/>
177 </map>
178</state>
179
180<state name="LShift-RShift-Caps">
181 <map keycode="E" pressed="true">
182 <event keycode="E" unicode="8364" pressed="true" autorepeat="true"/>
183 </map>
184
185 <map keycode="O" pressed="true">
186 <event keycode="O" unicode="223" pressed="true" autorepeat="true"/>
187 </map>
188
189 <map keycode="L" pressed="true">
190 <event keycode="L" unicode="252" pressed="true" autorepeat="true"/>
191 </map>
192
193 <map keycode="M" pressed="true">
194 <event keycode="M" unicode="246" pressed="true" autorepeat="true"/>
195 </map>
196
197 <map keycode="Comma" pressed="true">
198 <event keycode="Comma" unicode="228" pressed="true" autorepeat="true"/>
199 </map>
200
201 <map keycode="E" pressed="false">
202 <event keycode="E" unicode="8364" pressed="false"/>
203 </map>
204
205 <map keycode="O" pressed="false">
206 <event keycode="O" unicode="223" pressed="false"/>
207 </map>
208
209 <map keycode="L" pressed="false">
210 <event keycode="L" unicode="252" pressed="false"/>
211 </map>
212
213 <map keycode="M" pressed="false">
214 <event keycode="M" unicode="246" pressed="false"/>
215 </map>
216
217 <map keycode="Comma" pressed="false">
218 <event keycode="Comma" unicode="228" pressed="false"/>
219 </map>
220
221 <map keycode="Left Shift" pressed="false">
222 <event keycode="Shift" unicode="-1" pressed="false"/>
223 <next-state name="RShift-Caps"/>
224 </map>
225
226 <map keycode="Right Shift" pressed="false">
227 <event keycode="Meta" unicode="-1" pressed="false"/>
228 <next-state name="LShift-Caps"/>
229 </map>
230</state>
231
232<state name="Caps">
233 <map keycode="Right Shift" pressed="true">
234 <event keycode="Meta" unicode="-1" pressed="true"/>
235 <next-state name="RShift-Caps"/>
236 </map>
237 </state>
238
239<state name="lower-case">
240 <map keycode="Space" pressed="true">
241 <event keycode="Space" unicode="32" pressed="true" autorepeat="true"/>
242 </map>
243 <map keycode="Apostrophe" pressed="true">
244 <event keycode="Apostrophe" unicode="39" pressed="true" autorepeat="true"/>
245 </map>
246 <map keycode="Comma" pressed="true">
247 <event keycode="Comma" unicode="44" pressed="true" autorepeat="true"/>
248 </map>
249 <map keycode="Period" pressed="true">
250 <event keycode="Period" unicode="46" pressed="true" autorepeat="true"/>
251 </map>
252 <map keycode="Slash" pressed="true">
253 <event keycode="Slash" unicode="47" pressed="true" autorepeat="true"/>
254 </map>
255 <map keycode="A" pressed="true">
256 <event keycode="A" unicode="97" pressed="true" autorepeat="true"/>
257 </map>
258 <map keycode="B" pressed="true">
259 <event keycode="B" unicode="98" pressed="true" autorepeat="true"/>
260 </map>
261 <map keycode="C" pressed="true">
262 <event keycode="C" unicode="99" pressed="true" autorepeat="true"/>
263 </map>
264 <map keycode="D" pressed="true">
265 <event keycode="D" unicode="100" pressed="true" autorepeat="true"/>
266 </map>
267 <map keycode="E" pressed="true">
268 <event keycode="E" unicode="101" pressed="true" autorepeat="true"/>
269 </map>
270 <map keycode="F" pressed="true">
271 <event keycode="F" unicode="102" pressed="true" autorepeat="true"/>
272 </map>
273 <map keycode="G" pressed="true">
274 <event keycode="G" unicode="103" pressed="true" autorepeat="true"/>
275 </map>
276 <map keycode="H" pressed="true">
277 <event keycode="H" unicode="104" pressed="true" autorepeat="true"/>
278 </map>
279 <map keycode="I" pressed="true">
280 <event keycode="I" unicode="105" pressed="true" autorepeat="true"/>
281 </map>
282 <map keycode="J" pressed="true">
283 <event keycode="J" unicode="106" pressed="true" autorepeat="true"/>
284 </map>
285 <map keycode="K" pressed="true">
286 <event keycode="K" unicode="107" pressed="true" autorepeat="true"/>
287 </map>
288 <map keycode="L" pressed="true">
289 <event keycode="L" unicode="108" pressed="true" autorepeat="true"/>
290 </map>
291 <map keycode="M" pressed="true">
292 <event keycode="M" unicode="109" pressed="true" autorepeat="true"/>
293 </map>
294 <map keycode="N" pressed="true">
295 <event keycode="N" unicode="110" pressed="true" autorepeat="true"/>
296 </map>
297 <map keycode="O" pressed="true">
298 <event keycode="O" unicode="111" pressed="true" autorepeat="true"/>
299 </map>
300 <map keycode="P" pressed="true">
301 <event keycode="P" unicode="112" pressed="true" autorepeat="true"/>
302 </map>
303 <map keycode="Q" pressed="true">
304 <event keycode="Q" unicode="113" pressed="true" autorepeat="true"/>
305 </map>
306 <map keycode="R" pressed="true">
307 <event keycode="R" unicode="114" pressed="true" autorepeat="true"/>
308 </map>
309 <map keycode="S" pressed="true">
310 <event keycode="S" unicode="115" pressed="true" autorepeat="true"/>
311 </map>
312 <map keycode="T" pressed="true">
313 <event keycode="T" unicode="116" pressed="true" autorepeat="true"/>
314 </map>
315 <map keycode="U" pressed="true">
316 <event keycode="U" unicode="117" pressed="true" autorepeat="true"/>
317 </map>
318 <map keycode="V" pressed="true">
319 <event keycode="V" unicode="118" pressed="true" autorepeat="true"/>
320 </map>
321 <map keycode="W" pressed="true">
322 <event keycode="W" unicode="119" pressed="true" autorepeat="true"/>
323 </map>
324 <map keycode="X" pressed="true">
325 <event keycode="X" unicode="120" pressed="true" autorepeat="true"/>
326 </map>
327 <map keycode="Y" pressed="true">
328 <event keycode="Y" unicode="122" pressed="true" autorepeat="true"/>
329 </map>
330 <map keycode="Z" pressed="true">
331 <event keycode="Z" unicode="121" pressed="true" autorepeat="true"/>
332 </map>
333 <map keycode="Space" pressed="false">
334 <event keycode="Space" unicode="32" pressed="false"/>
335 </map>
336 <map keycode="Apostrophe" pressed="false">
337 <event keycode="Apostrophe" unicode="39" pressed="false"/>
338 </map>
339 <map keycode="Comma" pressed="false">
340 <event keycode="Comma" unicode="44" pressed="false"/>
341 </map>
342 <map keycode="Period" pressed="false">
343 <event keycode="Period" unicode="46" pressed="false"/>
344 </map>
345 <map keycode="Slash" pressed="false">
346 <event keycode="Slash" unicode="47" pressed="false"/>
347 </map>
348 <map keycode="A" pressed="false">
349 <event keycode="A" unicode="97" pressed="false"/>
350 </map>
351 <map keycode="B" pressed="false">
352 <event keycode="B" unicode="98" pressed="false"/>
353 </map>
354 <map keycode="C" pressed="false">
355 <event keycode="C" unicode="99" pressed="false"/>
356 </map>
357 <map keycode="D" pressed="false">
358 <event keycode="D" unicode="100" pressed="false"/>
359 </map>
360 <map keycode="E" pressed="false">
361 <event keycode="E" unicode="101" pressed="false"/>
362 </map>
363 <map keycode="F" pressed="false">
364 <event keycode="F" unicode="102" pressed="false"/>
365 </map>
366 <map keycode="G" pressed="false">
367 <event keycode="G" unicode="103" pressed="false"/>
368 </map>
369 <map keycode="H" pressed="false">
370 <event keycode="H" unicode="104" pressed="false"/>
371 </map>
372 <map keycode="I" pressed="false">
373 <event keycode="I" unicode="105" pressed="false"/>
374 </map>
375 <map keycode="J" pressed="false">
376 <event keycode="J" unicode="106" pressed="false"/>
377 </map>
378 <map keycode="K" pressed="false">
379 <event keycode="K" unicode="107" pressed="false"/>
380 </map>
381 <map keycode="L" pressed="false">
382 <event keycode="L" unicode="108" pressed="false"/>
383 </map>
384 <map keycode="M" pressed="false">
385 <event keycode="M" unicode="109" pressed="false"/>
386 </map>
387 <map keycode="N" pressed="false">
388 <event keycode="N" unicode="110" pressed="false"/>
389 </map>
390 <map keycode="O" pressed="false">
391 <event keycode="O" unicode="111" pressed="false"/>
392 </map>
393 <map keycode="P" pressed="false">
394 <event keycode="P" unicode="112" pressed="false"/>
395 </map>
396 <map keycode="Q" pressed="false">
397 <event keycode="Q" unicode="113" pressed="false"/>
398 </map>
399 <map keycode="R" pressed="false">
400 <event keycode="R" unicode="114" pressed="false"/>
401 </map>
402 <map keycode="S" pressed="false">
403 <event keycode="S" unicode="115" pressed="false"/>
404 </map>
405 <map keycode="T" pressed="false">
406 <event keycode="T" unicode="116" pressed="false"/>
407 </map>
408 <map keycode="U" pressed="false">
409 <event keycode="U" unicode="117" pressed="false"/>
410 </map>
411 <map keycode="V" pressed="false">
412 <event keycode="V" unicode="118" pressed="false"/>
413 </map>
414 <map keycode="W" pressed="false">
415 <event keycode="W" unicode="119" pressed="false"/>
416 </map>
417 <map keycode="X" pressed="false">
418 <event keycode="X" unicode="120" pressed="false"/>
419 </map>
420 <map keycode="Y" pressed="false">
421 <event keycode="Y" unicode="122" pressed="false"/>
422 </map>
423 <map keycode="Z" pressed="false">
424 <event keycode="Z" unicode="121" pressed="false"/>
425 </map>
426</state>
427
428<state name="upper-case">
429 <map keycode="Space" pressed="true">
430 <event keycode="Space" unicode="32" modifiers="Shift" pressed="true" autorepeat="true"/>
431 </map>
432 <map keycode="Apostrophe" pressed="true">
433 <event keycode="QuoteDbl" unicode="34" modifiers="Shift" pressed="true" autorepeat="true"/>
434 </map>
435 <map keycode="Comma" pressed="true">
436 <event keycode="Semicolon" unicode="59" modifiers="Shift" pressed="true" autorepeat="true"/>
437 </map>
438 <map keycode="Period" pressed="true">
439 <event keycode="Colon" unicode="58" modifiers="Shift" pressed="true" autorepeat="true"/>
440 </map>
441 <map keycode="Slash" pressed="true">
442 <event keycode="Question" unicode="63" modifiers="Shift" pressed="true" autorepeat="true"/>
443 </map>
444 <map keycode="A" pressed="true">
445 <event keycode="A" unicode="65" modifiers="Shift" pressed="true" autorepeat="true"/>
446 </map>
447 <map keycode="B" pressed="true">
448 <event keycode="B" unicode="66" modifiers="Shift" pressed="true" autorepeat="true"/>
449 </map>
450 <map keycode="C" pressed="true">
451 <event keycode="C" unicode="67" modifiers="Shift" pressed="true" autorepeat="true"/>
452 </map>
453 <map keycode="D" pressed="true">
454 <event keycode="D" unicode="68" modifiers="Shift" pressed="true" autorepeat="true"/>
455 </map>
456 <map keycode="E" pressed="true">
457 <event keycode="E" unicode="69" modifiers="Shift" pressed="true" autorepeat="true"/>
458 </map>
459 <map keycode="F" pressed="true">
460 <event keycode="F" unicode="70" modifiers="Shift" pressed="true" autorepeat="true"/>
461 </map>
462 <map keycode="G" pressed="true">
463 <event keycode="G" unicode="71" modifiers="Shift" pressed="true" autorepeat="true"/>
464 </map>
465 <map keycode="H" pressed="true">
466 <event keycode="H" unicode="72" modifiers="Shift" pressed="true" autorepeat="true"/>
467 </map>
468 <map keycode="I" pressed="true">
469 <event keycode="I" unicode="73" modifiers="Shift" pressed="true" autorepeat="true"/>
470 </map>
471 <map keycode="J" pressed="true">
472 <event keycode="J" unicode="74" modifiers="Shift" pressed="true" autorepeat="true"/>
473 </map>
474 <map keycode="K" pressed="true">
475 <event keycode="K" unicode="75" modifiers="Shift" pressed="true" autorepeat="true"/>
476 </map>
477 <map keycode="L" pressed="true">
478 <event keycode="L" unicode="76" modifiers="Shift" pressed="true" autorepeat="true"/>
479 </map>
480 <map keycode="M" pressed="true">
481 <event keycode="M" unicode="77" modifiers="Shift" pressed="true" autorepeat="true"/>
482 </map>
483 <map keycode="N" pressed="true">
484 <event keycode="N" unicode="78" modifiers="Shift" pressed="true" autorepeat="true"/>
485 </map>
486 <map keycode="O" pressed="true">
487 <event keycode="O" unicode="79" modifiers="Shift" pressed="true" autorepeat="true"/>
488 </map>
489 <map keycode="P" pressed="true">
490 <event keycode="P" unicode="80" modifiers="Shift" pressed="true" autorepeat="true"/>
491 </map>
492 <map keycode="Q" pressed="true">
493 <event keycode="Q" unicode="81" modifiers="Shift" pressed="true" autorepeat="true"/>
494 </map>
495 <map keycode="R" pressed="true">
496 <event keycode="R" unicode="82" modifiers="Shift" pressed="true" autorepeat="true"/>
497 </map>
498 <map keycode="S" pressed="true">
499 <event keycode="S" unicode="83" modifiers="Shift" pressed="true" autorepeat="true"/>
500 </map>
501 <map keycode="T" pressed="true">
502 <event keycode="T" unicode="84" modifiers="Shift" pressed="true" autorepeat="true"/>
503 </map>
504 <map keycode="U" pressed="true">
505 <event keycode="U" unicode="85" modifiers="Shift" pressed="true" autorepeat="true"/>
506 </map>
507 <map keycode="V" pressed="true">
508 <event keycode="V" unicode="86" modifiers="Shift" pressed="true" autorepeat="true"/>
509 </map>
510 <map keycode="W" pressed="true">
511 <event keycode="W" unicode="87" modifiers="Shift" pressed="true" autorepeat="true"/>
512 </map>
513 <map keycode="X" pressed="true">
514 <event keycode="X" unicode="88" modifiers="Shift" pressed="true" autorepeat="true"/>
515 </map>
516 <map keycode="Y" pressed="true">
517 <event keycode="Y" unicode="90" modifiers="Shift" pressed="true" autorepeat="true"/>
518 </map>
519 <map keycode="Z" pressed="true">
520 <event keycode="Z" unicode="89" modifiers="Shift" pressed="true" autorepeat="true"/>
521 </map>
522 <map keycode="Space" pressed="false">
523 <event keycode="Space" unicode="32" modifiers="Shift" pressed="false"/>
524 </map>
525 <map keycode="Apostrophe" pressed="false">
526 <event keycode="QuoteDbl" unicode="34" modifiers="Shift" pressed="false"/>
527 </map>
528 <map keycode="Comma" pressed="false">
529 <event keycode="Semicolon" unicode="59" modifiers="Shift" pressed="false"/>
530 </map>
531 <map keycode="Period" pressed="false">
532 <event keycode="Colon" unicode="58" modifiers="Shift" pressed="false"/>
533 </map>
534 <map keycode="Slash" pressed="false">
535 <event keycode="Question" unicode="63" modifiers="Shift" pressed="false"/>
536 </map>
537 <map keycode="A" pressed="false">
538 <event keycode="A" unicode="65" modifiers="Shift" pressed="false"/>
539 </map>
540 <map keycode="B" pressed="false">
541 <event keycode="B" unicode="66" modifiers="Shift" pressed="false"/>
542 </map>
543 <map keycode="C" pressed="false">
544 <event keycode="C" unicode="67" modifiers="Shift" pressed="false"/>
545 </map>
546 <map keycode="D" pressed="false">
547 <event keycode="D" unicode="68" modifiers="Shift" pressed="false"/>
548 </map>
549 <map keycode="E" pressed="false">
550 <event keycode="E" unicode="69" modifiers="Shift" pressed="false"/>
551 </map>
552 <map keycode="F" pressed="false">
553 <event keycode="F" unicode="70" modifiers="Shift" pressed="false"/>
554 </map>
555 <map keycode="G" pressed="false">
556 <event keycode="G" unicode="71" modifiers="Shift" pressed="false"/>
557 </map>
558 <map keycode="H" pressed="false">
559 <event keycode="H" unicode="72" modifiers="Shift" pressed="false"/>
560 </map>
561 <map keycode="I" pressed="false">
562 <event keycode="I" unicode="73" modifiers="Shift" pressed="false"/>
563 </map>
564 <map keycode="J" pressed="false">
565 <event keycode="J" unicode="74" modifiers="Shift" pressed="false"/>
566 </map>
567 <map keycode="K" pressed="false">
568 <event keycode="K" unicode="75" modifiers="Shift" pressed="false"/>
569 </map>
570 <map keycode="L" pressed="false">
571 <event keycode="L" unicode="76" modifiers="Shift" pressed="false"/>
572 </map>
573 <map keycode="M" pressed="false">
574 <event keycode="M" unicode="77" modifiers="Shift" pressed="false"/>
575 </map>
576 <map keycode="N" pressed="false">
577 <event keycode="N" unicode="78" modifiers="Shift" pressed="false"/>
578 </map>
579 <map keycode="O" pressed="false">
580 <event keycode="O" unicode="79" modifiers="Shift" pressed="false"/>
581 </map>
582 <map keycode="P" pressed="false">
583 <event keycode="P" unicode="80" modifiers="Shift" pressed="false"/>
584 </map>
585 <map keycode="Q" pressed="false">
586 <event keycode="Q" unicode="81" modifiers="Shift" pressed="false"/>
587 </map>
588 <map keycode="R" pressed="false">
589 <event keycode="R" unicode="82" modifiers="Shift" pressed="false"/>
590 </map>
591 <map keycode="S" pressed="false">
592 <event keycode="S" unicode="83" modifiers="Shift" pressed="false"/>
593 </map>
594 <map keycode="T" pressed="false">
595 <event keycode="T" unicode="84" modifiers="Shift" pressed="false"/>
596 </map>
597 <map keycode="U" pressed="false">
598 <event keycode="U" unicode="85" modifiers="Shift" pressed="false"/>
599 </map>
600 <map keycode="V" pressed="false">
601 <event keycode="V" unicode="86" modifiers="Shift" pressed="false"/>
602 </map>
603 <map keycode="W" pressed="false">
604 <event keycode="W" unicode="87" modifiers="Shift" pressed="false"/>
605 </map>
606 <map keycode="X" pressed="false">
607 <event keycode="X" unicode="88" modifiers="Shift" pressed="false"/>
608 </map>
609 <map keycode="Y" pressed="false">
610 <event keycode="Y" unicode="90" modifiers="Shift" pressed="false"/>
611 </map>
612 <map keycode="Z" pressed="false">
613 <event keycode="Z" unicode="89" modifiers="Shift" pressed="false"/>
614 </map>
615</state>
616
617</keymap> \ No newline at end of file
diff --git a/share/zkb/de.xml.num b/share/zkb/de.xml.num
new file mode 100644
index 0000000..15ebf11
--- a/dev/null
+++ b/share/zkb/de.xml.num
@@ -0,0 +1,618 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="LShift-RShift" parent="common"/>
6<state name="LShift-RShift-Caps" parent="common"/>
7
8<state name="LShift">
9 <map keycode="4130" pressed="true">
10 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
11 <next-state name="LShift-RShift"/>
12 </map>
13</state>
14
15<state name="RShift">
16 <map keycode="69" pressed="true">
17 <event keycode="69" unicode="8364" modifiers="0" pressed="true" autorepeat="true"/>
18 </map>
19
20 <map keycode="79" pressed="true">
21 <event keycode="79" unicode="223" modifiers="0" pressed="true" autorepeat="true"/>
22 </map>
23
24 <map keycode="76" pressed="true">
25 <event keycode="76" unicode="252" modifiers="0" pressed="true" autorepeat="true"/>
26 </map>
27
28 <map keycode="77" pressed="true">
29 <event keycode="77" unicode="246" modifiers="0" pressed="true" autorepeat="true"/>
30 </map>
31
32 <map keycode="46" pressed="true">
33 <event keycode="46" unicode="228" modifiers="0" pressed="true" autorepeat="true"/>
34 </map>
35
36 <map keycode="69" pressed="false">
37 <event keycode="69" unicode="8364" modifiers="0" pressed="false" autorepeat="true"/>
38 </map>
39
40 <map keycode="79" pressed="false">
41 <event keycode="79" unicode="223" modifiers="0" pressed="false" autorepeat="true"/>
42 </map>
43
44 <map keycode="76" pressed="false">
45 <event keycode="76" unicode="252" modifiers="0" pressed="false" autorepeat="true"/>
46 </map>
47
48 <map keycode="77" pressed="false">
49 <event keycode="77" unicode="246" modifiers="0" pressed="false" autorepeat="true"/>
50 </map>
51
52 <map keycode="46" pressed="false">
53 <event keycode="46" unicode="228" modifiers="0" pressed="false" autorepeat="true"/>
54 </map>
55
56 <map keycode="4128" pressed="false">
57 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
58 <next-state name="LShift-RShift"/>
59 </map>
60</state>
61
62<state name="LShift-Caps">
63 <map keycode="4130" pressed="true">
64 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
65 <next-state name="LShift-RShift-Caps"/>
66 </map>
67</state>
68
69<state name="LShift-Num">
70 <map keycode="4128" pressed="false">
71 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
72 <next-state name="Num"/>
73 </map>
74
75 <map keycode="4165" pressed="true">
76 <event keycode="4165" unicode="-1" modifiers="16" pressed="true" autorepeat="false"/>
77 <next-state name="LShift-Fn-Num"/>
78 </map>
79</state>
80
81<state name="RShift-Caps">
82 <map keycode="69" pressed="true">
83 <event keycode="69" unicode="8364" modifiers="0" pressed="true" autorepeat="true"/>
84 </map>
85
86 <map keycode="79" pressed="true">
87 <event keycode="79" unicode="223" modifiers="0" pressed="true" autorepeat="true"/>
88 </map>
89
90 <map keycode="76" pressed="true">
91 <event keycode="76" unicode="220" modifiers="0" pressed="true" autorepeat="true"/>
92 </map>
93
94 <map keycode="77" pressed="true">
95 <event keycode="77" unicode="214" modifiers="0" pressed="true" autorepeat="true"/>
96 </map>
97
98 <map keycode="46" pressed="true">
99 <event keycode="46" unicode="196" modifiers="0" pressed="false" autorepeat="true"/>
100 </map>
101
102 <map keycode="69" pressed="false">
103 <event keycode="69" unicode="8364" modifiers="0" pressed="false" autorepeat="true"/>
104 </map>
105
106 <map keycode="79" pressed="false">
107 <event keycode="79" unicode="223" modifiers="0" pressed="false" autorepeat="true"/>
108 </map>
109
110 <map keycode="76" pressed="false">
111 <event keycode="76" unicode="220" modifiers="0" pressed="false" autorepeat="true"/>
112 </map>
113
114 <map keycode="77" pressed="false">
115 <event keycode="77" unicode="214" modifiers="0" pressed="false" autorepeat="true"/>
116 </map>
117
118 <map keycode="46" pressed="false">
119 <event keycode="46" unicode="196" modifiers="0" pressed="false" autorepeat="true"/>
120 </map>
121
122 <map keycode="4128" pressed="true">
123 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
124 <next-state name="LShift-RShift-Caps"/>
125 </map>
126</state>
127
128<state name="LShift-RShift">
129 <map keycode="69" pressed="true">
130 <event keycode="69" unicode="8364" modifiers="0" pressed="true" autorepeat="true"/>
131 </map>
132
133 <map keycode="79" pressed="true">
134 <event keycode="79" unicode="223" modifiers="0" pressed="true" autorepeat="true"/>
135 </map>
136
137 <map keycode="76" pressed="true">
138 <event keycode="76" unicode="220" modifiers="0" pressed="true" autorepeat="true"/>
139 </map>
140
141 <map keycode="77" pressed="true">
142 <event keycode="77" unicode="214" modifiers="0" pressed="true" autorepeat="true"/>
143 </map>
144
145 <map keycode="46" pressed="true">
146 <event keycode="46" unicode="196" modifiers="0" pressed="false" autorepeat="true"/>
147 </map>
148
149 <map keycode="69" pressed="false">
150 <event keycode="69" unicode="8364" modifiers="0" pressed="false" autorepeat="true"/>
151 </map>
152
153 <map keycode="79" pressed="false">
154 <event keycode="79" unicode="223" modifiers="0" pressed="false" autorepeat="true"/>
155 </map>
156
157 <map keycode="76" pressed="false">
158 <event keycode="76" unicode="220" modifiers="0" pressed="false" autorepeat="true"/>
159 </map>
160
161 <map keycode="77" pressed="false">
162 <event keycode="77" unicode="214" modifiers="0" pressed="false" autorepeat="true"/>
163 </map>
164
165 <map keycode="46" pressed="false">
166 <event keycode="46" unicode="196" modifiers="0" pressed="false" autorepeat="true"/>
167 </map>
168
169 <map keycode="4128" pressed="false">
170 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
171 <next-state name="RShift"/>
172 </map>
173
174 <map keycode="4130" pressed="false">
175 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
176 <next-state name="LShift"/>
177 </map>
178</state>
179
180<state name="LShift-RShift-Caps">
181 <map keycode="69" pressed="true">
182 <event keycode="69" unicode="8364" modifiers="0" pressed="true" autorepeat="true"/>
183 </map>
184
185 <map keycode="79" pressed="true">
186 <event keycode="79" unicode="223" modifiers="0" pressed="true" autorepeat="true"/>
187 </map>
188
189 <map keycode="76" pressed="true">
190 <event keycode="76" unicode="252" modifiers="0" pressed="true" autorepeat="true"/>
191 </map>
192
193 <map keycode="77" pressed="true">
194 <event keycode="77" unicode="246" modifiers="0" pressed="true" autorepeat="true"/>
195 </map>
196
197 <map keycode="46" pressed="true">
198 <event keycode="46" unicode="228" modifiers="0" pressed="true" autorepeat="true"/>
199 </map>
200
201 <map keycode="69" pressed="false">
202 <event keycode="69" unicode="8364" modifiers="0" pressed="false" autorepeat="true"/>
203 </map>
204
205 <map keycode="79" pressed="false">
206 <event keycode="79" unicode="223" modifiers="0" pressed="false" autorepeat="true"/>
207 </map>
208
209 <map keycode="76" pressed="false">
210 <event keycode="76" unicode="252" modifiers="0" pressed="false" autorepeat="true"/>
211 </map>
212
213 <map keycode="77" pressed="false">
214 <event keycode="77" unicode="246" modifiers="0" pressed="false" autorepeat="true"/>
215 </map>
216
217 <map keycode="46" pressed="false">
218 <event keycode="46" unicode="228" modifiers="0" pressed="false" autorepeat="true"/>
219 </map>
220
221 <map keycode="4128" pressed="false">
222 <event keycode="4128" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
223 <next-state name="RShift-Caps"/>
224 </map>
225
226 <map keycode="4130" pressed="false">
227 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
228 <next-state name="LShift-Caps"/>
229 </map>
230</state>
231
232<state name="Caps">
233 <map keycode="4130" pressed="true">
234 <event keycode="4130" unicode="-1" modifiers="0" pressed="false" autorepeat="false"/>
235 <next-state name="RShift-Caps"/>
236 </map>
237 </state>
238
239<state name="lower-case">
240 <map keycode="32" pressed="true">
241 <event keycode="32" unicode="32" modifiers="0" pressed="true" autorepeat="true"/>
242 </map>
243 <map keycode="39" pressed="true">
244 <event keycode="39" unicode="39" modifiers="0" pressed="true" autorepeat="true"/>
245 </map>
246 <map keycode="44" pressed="true">
247 <event keycode="44" unicode="44" modifiers="0" pressed="true" autorepeat="true"/>
248 </map>
249 <map keycode="46" pressed="true">
250 <event keycode="46" unicode="46" modifiers="0" pressed="true" autorepeat="true"/>
251 </map>
252 <map keycode="47" pressed="true">
253 <event keycode="47" unicode="47" modifiers="0" pressed="true" autorepeat="true"/>
254 </map>
255 <map keycode="65" pressed="true">
256 <event keycode="65" unicode="97" modifiers="0" pressed="true" autorepeat="true"/>
257 </map>
258 <map keycode="66" pressed="true">
259 <event keycode="66" unicode="98" modifiers="0" pressed="true" autorepeat="true"/>
260 </map>
261 <map keycode="67" pressed="true">
262 <event keycode="67" unicode="99" modifiers="0" pressed="true" autorepeat="true"/>
263 </map>
264 <map keycode="68" pressed="true">
265 <event keycode="68" unicode="100" modifiers="0" pressed="true" autorepeat="true"/>
266 </map>
267 <map keycode="69" pressed="true">
268 <event keycode="69" unicode="101" modifiers="0" pressed="true" autorepeat="true"/>
269 </map>
270 <map keycode="70" pressed="true">
271 <event keycode="70" unicode="102" modifiers="0" pressed="true" autorepeat="true"/>
272 </map>
273 <map keycode="71" pressed="true">
274 <event keycode="71" unicode="103" modifiers="0" pressed="true" autorepeat="true"/>
275 </map>
276 <map keycode="72" pressed="true">
277 <event keycode="72" unicode="104" modifiers="0" pressed="true" autorepeat="true"/>
278 </map>
279 <map keycode="73" pressed="true">
280 <event keycode="73" unicode="105" modifiers="0" pressed="true" autorepeat="true"/>
281 </map>
282 <map keycode="74" pressed="true">
283 <event keycode="74" unicode="106" modifiers="0" pressed="true" autorepeat="true"/>
284 </map>
285 <map keycode="75" pressed="true">
286 <event keycode="75" unicode="107" modifiers="0" pressed="true" autorepeat="true"/>
287 </map>
288 <map keycode="76" pressed="true">
289 <event keycode="76" unicode="108" modifiers="0" pressed="true" autorepeat="true"/>
290 </map>
291 <map keycode="77" pressed="true">
292 <event keycode="77" unicode="109" modifiers="0" pressed="true" autorepeat="true"/>
293 </map>
294 <map keycode="78" pressed="true">
295 <event keycode="78" unicode="110" modifiers="0" pressed="true" autorepeat="true"/>
296 </map>
297 <map keycode="79" pressed="true">
298 <event keycode="79" unicode="111" modifiers="0" pressed="true" autorepeat="true"/>
299 </map>
300 <map keycode="80" pressed="true">
301 <event keycode="80" unicode="112" modifiers="0" pressed="true" autorepeat="true"/>
302 </map>
303 <map keycode="81" pressed="true">
304 <event keycode="81" unicode="113" modifiers="0" pressed="true" autorepeat="true"/>
305 </map>
306 <map keycode="82" pressed="true">
307 <event keycode="82" unicode="114" modifiers="0" pressed="true" autorepeat="true"/>
308 </map>
309 <map keycode="83" pressed="true">
310 <event keycode="83" unicode="115" modifiers="0" pressed="true" autorepeat="true"/>
311 </map>
312 <map keycode="84" pressed="true">
313 <event keycode="84" unicode="116" modifiers="0" pressed="true" autorepeat="true"/>
314 </map>
315 <map keycode="85" pressed="true">
316 <event keycode="85" unicode="117" modifiers="0" pressed="true" autorepeat="true"/>
317 </map>
318 <map keycode="86" pressed="true">
319 <event keycode="86" unicode="118" modifiers="0" pressed="true" autorepeat="true"/>
320 </map>
321 <map keycode="87" pressed="true">
322 <event keycode="87" unicode="119" modifiers="0" pressed="true" autorepeat="true"/>
323 </map>
324 <map keycode="88" pressed="true">
325 <event keycode="88" unicode="120" modifiers="0" pressed="true" autorepeat="true"/>
326 </map>
327 <map keycode="89" pressed="true">
328 <event keycode="89" unicode="121" modifiers="0" pressed="true" autorepeat="true"/>
329 </map>
330 <map keycode="90" pressed="true">
331 <event keycode="90" unicode="122" modifiers="0" pressed="true" autorepeat="true"/>
332 </map>
333 <map keycode="32" pressed="false">
334 <event keycode="32" unicode="32" modifiers="0" pressed="false" autorepeat="false"/>
335 </map>
336 <map keycode="39" pressed="false">
337 <event keycode="39" unicode="39" modifiers="0" pressed="false" autorepeat="false"/>
338 </map>
339 <map keycode="44" pressed="false">
340 <event keycode="44" unicode="44" modifiers="0" pressed="false" autorepeat="false"/>
341 </map>
342 <map keycode="46" pressed="false">
343 <event keycode="46" unicode="46" modifiers="0" pressed="false" autorepeat="false"/>
344 </map>
345 <map keycode="47" pressed="false">
346 <event keycode="47" unicode="47" modifiers="0" pressed="false" autorepeat="false"/>
347 </map>
348 <map keycode="65" pressed="false">
349 <event keycode="65" unicode="97" modifiers="0" pressed="false" autorepeat="false"/>
350 </map>
351 <map keycode="66" pressed="false">
352 <event keycode="66" unicode="98" modifiers="0" pressed="false" autorepeat="false"/>
353 </map>
354 <map keycode="67" pressed="false">
355 <event keycode="67" unicode="99" modifiers="0" pressed="false" autorepeat="false"/>
356 </map>
357 <map keycode="68" pressed="false">
358 <event keycode="68" unicode="100" modifiers="0" pressed="false" autorepeat="false"/>
359 </map>
360 <map keycode="69" pressed="false">
361 <event keycode="69" unicode="101" modifiers="0" pressed="false" autorepeat="false"/>
362 </map>
363 <map keycode="70" pressed="false">
364 <event keycode="70" unicode="102" modifiers="0" pressed="false" autorepeat="false"/>
365 </map>
366 <map keycode="71" pressed="false">
367 <event keycode="71" unicode="103" modifiers="0" pressed="false" autorepeat="false"/>
368 </map>
369 <map keycode="72" pressed="false">
370 <event keycode="72" unicode="104" modifiers="0" pressed="false" autorepeat="false"/>
371 </map>
372 <map keycode="73" pressed="false">
373 <event keycode="73" unicode="105" modifiers="0" pressed="false" autorepeat="false"/>
374 </map>
375 <map keycode="74" pressed="false">
376 <event keycode="74" unicode="106" modifiers="0" pressed="false" autorepeat="false"/>
377 </map>
378 <map keycode="75" pressed="false">
379 <event keycode="75" unicode="107" modifiers="0" pressed="false" autorepeat="false"/>
380 </map>
381 <map keycode="76" pressed="false">
382 <event keycode="76" unicode="108" modifiers="0" pressed="false" autorepeat="false"/>
383 </map>
384 <map keycode="77" pressed="false">
385 <event keycode="77" unicode="109" modifiers="0" pressed="false" autorepeat="false"/>
386 </map>
387 <map keycode="78" pressed="false">
388 <event keycode="78" unicode="110" modifiers="0" pressed="false" autorepeat="false"/>
389 </map>
390 <map keycode="79" pressed="false">
391 <event keycode="79" unicode="111" modifiers="0" pressed="false" autorepeat="false"/>
392 </map>
393 <map keycode="80" pressed="false">
394 <event keycode="80" unicode="112" modifiers="0" pressed="false" autorepeat="false"/>
395 </map>
396 <map keycode="81" pressed="false">
397 <event keycode="81" unicode="113" modifiers="0" pressed="false" autorepeat="false"/>
398 </map>
399 <map keycode="82" pressed="false">
400 <event keycode="82" unicode="114" modifiers="0" pressed="false" autorepeat="false"/>
401 </map>
402 <map keycode="83" pressed="false">
403 <event keycode="83" unicode="115" modifiers="0" pressed="false" autorepeat="false"/>
404 </map>
405 <map keycode="84" pressed="false">
406 <event keycode="84" unicode="116" modifiers="0" pressed="false" autorepeat="false"/>
407 </map>
408 <map keycode="85" pressed="false">
409 <event keycode="85" unicode="117" modifiers="0" pressed="false" autorepeat="false"/>
410 </map>
411 <map keycode="86" pressed="false">
412 <event keycode="86" unicode="118" modifiers="0" pressed="false" autorepeat="false"/>
413 </map>
414 <map keycode="87" pressed="false">
415 <event keycode="87" unicode="119" modifiers="0" pressed="false" autorepeat="false"/>
416 </map>
417 <map keycode="88" pressed="false">
418 <event keycode="88" unicode="120" modifiers="0" pressed="false" autorepeat="false"/>
419 </map>
420 <map keycode="89" pressed="false">
421 <event keycode="89" unicode="121" modifiers="0" pressed="false" autorepeat="false"/>
422 </map>
423 <map keycode="90" pressed="false">
424 <event keycode="90" unicode="122" modifiers="0" pressed="false" autorepeat="false"/>
425 </map>
426</state>
427
428<state name="upper-case">
429 <map keycode="32" pressed="true">
430 <event keycode="32" unicode="32" modifiers="8" pressed="true" autorepeat="true"/>
431 </map>
432 <map keycode="39" pressed="true">
433 <event keycode="34" unicode="34" modifiers="8" pressed="true" autorepeat="true"/>
434 </map>
435 <map keycode="44" pressed="true">
436 <event keycode="59" unicode="59" modifiers="8" pressed="true" autorepeat="true"/>
437 </map>
438 <map keycode="46" pressed="true">
439 <event keycode="58" unicode="58" modifiers="8" pressed="true" autorepeat="true"/>
440 </map>
441 <map keycode="47" pressed="true">
442 <event keycode="63" unicode="63" modifiers="8" pressed="true" autorepeat="true"/>
443 </map>
444 <map keycode="65" pressed="true">
445 <event keycode="65" unicode="65" modifiers="8" pressed="true" autorepeat="true"/>
446 </map>
447 <map keycode="66" pressed="true">
448 <event keycode="66" unicode="66" modifiers="8" pressed="true" autorepeat="true"/>
449 </map>
450 <map keycode="67" pressed="true">
451 <event keycode="67" unicode="67" modifiers="8" pressed="true" autorepeat="true"/>
452 </map>
453 <map keycode="68" pressed="true">
454 <event keycode="68" unicode="68" modifiers="8" pressed="true" autorepeat="true"/>
455 </map>
456 <map keycode="69" pressed="true">
457 <event keycode="69" unicode="69" modifiers="8" pressed="true" autorepeat="true"/>
458 </map>
459 <map keycode="70" pressed="true">
460 <event keycode="70" unicode="70" modifiers="8" pressed="true" autorepeat="true"/>
461 </map>
462 <map keycode="71" pressed="true">
463 <event keycode="71" unicode="71" modifiers="8" pressed="true" autorepeat="true"/>
464 </map>
465 <map keycode="72" pressed="true">
466 <event keycode="72" unicode="72" modifiers="8" pressed="true" autorepeat="true"/>
467 </map>
468 <map keycode="73" pressed="true">
469 <event keycode="73" unicode="73" modifiers="8" pressed="true" autorepeat="true"/>
470 </map>
471 <map keycode="74" pressed="true">
472 <event keycode="74" unicode="74" modifiers="8" pressed="true" autorepeat="true"/>
473 </map>
474 <map keycode="75" pressed="true">
475 <event keycode="75" unicode="75" modifiers="8" pressed="true" autorepeat="true"/>
476 </map>
477 <map keycode="76" pressed="true">
478 <event keycode="76" unicode="76" modifiers="8" pressed="true" autorepeat="true"/>
479 </map>
480 <map keycode="77" pressed="true">
481 <event keycode="77" unicode="77" modifiers="8" pressed="true" autorepeat="true"/>
482 </map>
483 <map keycode="78" pressed="true">
484 <event keycode="78" unicode="78" modifiers="8" pressed="true" autorepeat="true"/>
485 </map>
486 <map keycode="79" pressed="true">
487 <event keycode="79" unicode="79" modifiers="8" pressed="true" autorepeat="true"/>
488 </map>
489 <map keycode="80" pressed="true">
490 <event keycode="80" unicode="80" modifiers="8" pressed="true" autorepeat="true"/>
491 </map>
492 <map keycode="81" pressed="true">
493 <event keycode="81" unicode="81" modifiers="8" pressed="true" autorepeat="true"/>
494 </map>
495 <map keycode="82" pressed="true">
496 <event keycode="82" unicode="82" modifiers="8" pressed="true" autorepeat="true"/>
497 </map>
498 <map keycode="83" pressed="true">
499 <event keycode="83" unicode="83" modifiers="8" pressed="true" autorepeat="true"/>
500 </map>
501 <map keycode="84" pressed="true">
502 <event keycode="84" unicode="84" modifiers="8" pressed="true" autorepeat="true"/>
503 </map>
504 <map keycode="85" pressed="true">
505 <event keycode="85" unicode="85" modifiers="8" pressed="true" autorepeat="true"/>
506 </map>
507 <map keycode="86" pressed="true">
508 <event keycode="86" unicode="86" modifiers="8" pressed="true" autorepeat="true"/>
509 </map>
510 <map keycode="87" pressed="true">
511 <event keycode="87" unicode="87" modifiers="8" pressed="true" autorepeat="true"/>
512 </map>
513 <map keycode="88" pressed="true">
514 <event keycode="88" unicode="88" modifiers="8" pressed="true" autorepeat="true"/>
515 </map>
516 <map keycode="89" pressed="true">
517 <event keycode="89" unicode="89" modifiers="8" pressed="true" autorepeat="true"/>
518 </map>
519 <map keycode="90" pressed="true">
520 <event keycode="90" unicode="90" modifiers="8" pressed="true" autorepeat="true"/>
521 </map>
522 <map keycode="32" pressed="false">
523 <event keycode="32" unicode="32" modifiers="8" pressed="false" autorepeat="false"/>
524 </map>
525 <map keycode="39" pressed="false">
526 <event keycode="34" unicode="34" modifiers="8" pressed="false" autorepeat="false"/>
527 </map>
528 <map keycode="44" pressed="false">
529 <event keycode="58" unicode="58" modifiers="8" pressed="false" autorepeat="false"/>
530 </map>
531 <map keycode="46" pressed="false">
532 <event keycode="59" unicode="59" modifiers="8" pressed="false" autorepeat="false"/>
533 </map>
534 <map keycode="47" pressed="false">
535 <event keycode="63" unicode="63" modifiers="8" pressed="false" autorepeat="false"/>
536 </map>
537 <map keycode="65" pressed="false">
538 <event keycode="65" unicode="65" modifiers="8" pressed="false" autorepeat="false"/>
539 </map>
540 <map keycode="66" pressed="false">
541 <event keycode="66" unicode="66" modifiers="8" pressed="false" autorepeat="false"/>
542 </map>
543 <map keycode="67" pressed="false">
544 <event keycode="67" unicode="67" modifiers="8" pressed="false" autorepeat="false"/>
545 </map>
546 <map keycode="68" pressed="false">
547 <event keycode="68" unicode="68" modifiers="8" pressed="false" autorepeat="false"/>
548 </map>
549 <map keycode="69" pressed="false">
550 <event keycode="69" unicode="69" modifiers="8" pressed="false" autorepeat="false"/>
551 </map>
552 <map keycode="70" pressed="false">
553 <event keycode="70" unicode="70" modifiers="8" pressed="false" autorepeat="false"/>
554 </map>
555 <map keycode="71" pressed="false">
556 <event keycode="71" unicode="71" modifiers="8" pressed="false" autorepeat="false"/>
557 </map>
558 <map keycode="72" pressed="false">
559 <event keycode="72" unicode="72" modifiers="8" pressed="false" autorepeat="false"/>
560 </map>
561 <map keycode="73" pressed="false">
562 <event keycode="73" unicode="73" modifiers="8" pressed="false" autorepeat="false"/>
563 </map>
564 <map keycode="74" pressed="false">
565 <event keycode="74" unicode="74" modifiers="8" pressed="false" autorepeat="false"/>
566 </map>
567 <map keycode="75" pressed="false">
568 <event keycode="75" unicode="75" modifiers="8" pressed="false" autorepeat="false"/>
569 </map>
570 <map keycode="76" pressed="false">
571 <event keycode="76" unicode="76" modifiers="8" pressed="false" autorepeat="false"/>
572 </map>
573 <map keycode="77" pressed="false">
574 <event keycode="77" unicode="77" modifiers="8" pressed="false" autorepeat="false"/>
575 </map>
576 <map keycode="78" pressed="false">
577 <event keycode="78" unicode="78" modifiers="8" pressed="false" autorepeat="false"/>
578 </map>
579 <map keycode="79" pressed="false">
580 <event keycode="79" unicode="79" modifiers="8" pressed="false" autorepeat="false"/>
581 </map>
582 <map keycode="80" pressed="false">
583 <event keycode="80" unicode="80" modifiers="8" pressed="false" autorepeat="false"/>
584 </map>
585 <map keycode="81" pressed="false">
586 <event keycode="81" unicode="81" modifiers="8" pressed="false" autorepeat="false"/>
587 </map>
588 <map keycode="82" pressed="false">
589 <event keycode="82" unicode="82" modifiers="8" pressed="false" autorepeat="false"/>
590 </map>
591 <map keycode="83" pressed="false">
592 <event keycode="83" unicode="83" modifiers="8" pressed="false" autorepeat="false"/>
593 </map>
594 <map keycode="84" pressed="false">
595 <event keycode="84" unicode="84" modifiers="8" pressed="false" autorepeat="false"/>
596 </map>
597 <map keycode="85" pressed="false">
598 <event keycode="85" unicode="85" modifiers="8" pressed="false" autorepeat="false"/>
599 </map>
600 <map keycode="86" pressed="false">
601 <event keycode="86" unicode="86" modifiers="8" pressed="false" autorepeat="false"/>
602 </map>
603 <map keycode="87" pressed="false">
604 <event keycode="87" unicode="87" modifiers="8" pressed="false" autorepeat="false"/>
605 </map>
606 <map keycode="88" pressed="false">
607 <event keycode="88" unicode="88" modifiers="8" pressed="false" autorepeat="false"/>
608 </map>
609 <map keycode="89" pressed="false">
610 <event keycode="89" unicode="89" modifiers="8" pressed="false" autorepeat="false"/>
611 </map>
612 <map keycode="90" pressed="false">
613 <event keycode="90" unicode="90" modifiers="8" pressed="false" autorepeat="false"/>
614 </map>
615</state>
616
617
618</keymap>
diff --git a/share/zkb/en.xml b/share/zkb/en.xml
new file mode 100644
index 0000000..0b1c345
--- a/dev/null
+++ b/share/zkb/en.xml
@@ -0,0 +1,383 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="lower-case">
6 <map keycode="Space" pressed="true">
7 <event keycode="Space" unicode="32" pressed="true" autorepeat="true"/>
8 </map>
9 <map keycode="Apostrophe" pressed="true">
10 <event keycode="Apostrophe" unicode="39" pressed="true" autorepeat="true"/>
11 </map>
12 <map keycode="Comma" pressed="true">
13 <event keycode="Comma" unicode="44" pressed="true" autorepeat="true"/>
14 </map>
15 <map keycode="Period" pressed="true">
16 <event keycode="Period" unicode="46" pressed="true" autorepeat="true"/>
17 </map>
18 <map keycode="Slash" pressed="true">
19 <event keycode="Slash" unicode="47" pressed="true" autorepeat="true"/>
20 </map>
21 <map keycode="A" pressed="true">
22 <event keycode="A" unicode="97" pressed="true" autorepeat="true"/>
23 </map>
24 <map keycode="B" pressed="true">
25 <event keycode="B" unicode="98" pressed="true" autorepeat="true"/>
26 </map>
27 <map keycode="C" pressed="true">
28 <event keycode="C" unicode="99" pressed="true" autorepeat="true"/>
29 </map>
30 <map keycode="D" pressed="true">
31 <event keycode="D" unicode="100" pressed="true" autorepeat="true"/>
32 </map>
33 <map keycode="E" pressed="true">
34 <event keycode="E" unicode="101" pressed="true" autorepeat="true"/>
35 </map>
36 <map keycode="F" pressed="true">
37 <event keycode="F" unicode="102" pressed="true" autorepeat="true"/>
38 </map>
39 <map keycode="G" pressed="true">
40 <event keycode="G" unicode="103" pressed="true" autorepeat="true"/>
41 </map>
42 <map keycode="H" pressed="true">
43 <event keycode="H" unicode="104" pressed="true" autorepeat="true"/>
44 </map>
45 <map keycode="I" pressed="true">
46 <event keycode="I" unicode="105" pressed="true" autorepeat="true"/>
47 </map>
48 <map keycode="J" pressed="true">
49 <event keycode="J" unicode="106" pressed="true" autorepeat="true"/>
50 </map>
51 <map keycode="K" pressed="true">
52 <event keycode="K" unicode="107" pressed="true" autorepeat="true"/>
53 </map>
54 <map keycode="L" pressed="true">
55 <event keycode="L" unicode="108" pressed="true" autorepeat="true"/>
56 </map>
57 <map keycode="M" pressed="true">
58 <event keycode="M" unicode="109" pressed="true" autorepeat="true"/>
59 </map>
60 <map keycode="N" pressed="true">
61 <event keycode="N" unicode="110" pressed="true" autorepeat="true"/>
62 </map>
63 <map keycode="O" pressed="true">
64 <event keycode="O" unicode="111" pressed="true" autorepeat="true"/>
65 </map>
66 <map keycode="P" pressed="true">
67 <event keycode="P" unicode="112" pressed="true" autorepeat="true"/>
68 </map>
69 <map keycode="Q" pressed="true">
70 <event keycode="Q" unicode="113" pressed="true" autorepeat="true"/>
71 </map>
72 <map keycode="R" pressed="true">
73 <event keycode="R" unicode="114" pressed="true" autorepeat="true"/>
74 </map>
75 <map keycode="S" pressed="true">
76 <event keycode="S" unicode="115" pressed="true" autorepeat="true"/>
77 </map>
78 <map keycode="T" pressed="true">
79 <event keycode="T" unicode="116" pressed="true" autorepeat="true"/>
80 </map>
81 <map keycode="U" pressed="true">
82 <event keycode="U" unicode="117" pressed="true" autorepeat="true"/>
83 </map>
84 <map keycode="V" pressed="true">
85 <event keycode="V" unicode="118" pressed="true" autorepeat="true"/>
86 </map>
87 <map keycode="W" pressed="true">
88 <event keycode="W" unicode="119" pressed="true" autorepeat="true"/>
89 </map>
90 <map keycode="X" pressed="true">
91 <event keycode="X" unicode="120" pressed="true" autorepeat="true"/>
92 </map>
93 <map keycode="Y" pressed="true">
94 <event keycode="Y" unicode="121" pressed="true" autorepeat="true"/>
95 </map>
96 <map keycode="Z" pressed="true">
97 <event keycode="Z" unicode="122" pressed="true" autorepeat="true"/>
98 </map>
99 <map keycode="Space" pressed="false">
100 <event keycode="Space" unicode="32" pressed="false"/>
101 </map>
102 <map keycode="Apostrophe" pressed="false">
103 <event keycode="Apostrophe" unicode="39" pressed="false"/>
104 </map>
105 <map keycode="Comma" pressed="false">
106 <event keycode="Comma" unicode="44" pressed="false"/>
107 </map>
108 <map keycode="Period" pressed="false">
109 <event keycode="Period" unicode="46" pressed="false"/>
110 </map>
111 <map keycode="Slash" pressed="false">
112 <event keycode="Slash" unicode="47" pressed="false"/>
113 </map>
114 <map keycode="A" pressed="false">
115 <event keycode="A" unicode="97" pressed="false"/>
116 </map>
117 <map keycode="B" pressed="false">
118 <event keycode="B" unicode="98" pressed="false"/>
119 </map>
120 <map keycode="C" pressed="false">
121 <event keycode="C" unicode="99" pressed="false"/>
122 </map>
123 <map keycode="D" pressed="false">
124 <event keycode="D" unicode="100" pressed="false"/>
125 </map>
126 <map keycode="E" pressed="false">
127 <event keycode="E" unicode="101" pressed="false"/>
128 </map>
129 <map keycode="F" pressed="false">
130 <event keycode="F" unicode="102" pressed="false"/>
131 </map>
132 <map keycode="G" pressed="false">
133 <event keycode="G" unicode="103" pressed="false"/>
134 </map>
135 <map keycode="H" pressed="false">
136 <event keycode="H" unicode="104" pressed="false"/>
137 </map>
138 <map keycode="I" pressed="false">
139 <event keycode="I" unicode="105" pressed="false"/>
140 </map>
141 <map keycode="J" pressed="false">
142 <event keycode="J" unicode="106" pressed="false"/>
143 </map>
144 <map keycode="K" pressed="false">
145 <event keycode="K" unicode="107" pressed="false"/>
146 </map>
147 <map keycode="L" pressed="false">
148 <event keycode="L" unicode="108" pressed="false"/>
149 </map>
150 <map keycode="M" pressed="false">
151 <event keycode="M" unicode="109" pressed="false"/>
152 </map>
153 <map keycode="N" pressed="false">
154 <event keycode="N" unicode="110" pressed="false"/>
155 </map>
156 <map keycode="O" pressed="false">
157 <event keycode="O" unicode="111" pressed="false"/>
158 </map>
159 <map keycode="P" pressed="false">
160 <event keycode="P" unicode="112" pressed="false"/>
161 </map>
162 <map keycode="Q" pressed="false">
163 <event keycode="Q" unicode="113" pressed="false"/>
164 </map>
165 <map keycode="R" pressed="false">
166 <event keycode="R" unicode="114" pressed="false"/>
167 </map>
168 <map keycode="S" pressed="false">
169 <event keycode="S" unicode="115" pressed="false"/>
170 </map>
171 <map keycode="T" pressed="false">
172 <event keycode="T" unicode="116" pressed="false"/>
173 </map>
174 <map keycode="U" pressed="false">
175 <event keycode="U" unicode="117" pressed="false"/>
176 </map>
177 <map keycode="V" pressed="false">
178 <event keycode="V" unicode="118" pressed="false"/>
179 </map>
180 <map keycode="W" pressed="false">
181 <event keycode="W" unicode="119" pressed="false"/>
182 </map>
183 <map keycode="X" pressed="false">
184 <event keycode="X" unicode="120" pressed="false"/>
185 </map>
186 <map keycode="Y" pressed="false">
187 <event keycode="Y" unicode="121" pressed="false"/>
188 </map>
189 <map keycode="Z" pressed="false">
190 <event keycode="Z" unicode="122" pressed="false"/>
191 </map>
192</state>
193
194<state name="upper-case">
195 <map keycode="Space" pressed="true">
196 <event keycode="Space" unicode="32" modifiers="Shift" pressed="true" autorepeat="true"/>
197 </map>
198 <map keycode="Apostrophe" pressed="true">
199 <event keycode="QuoteDbl" unicode="34" modifiers="Shift" pressed="true" autorepeat="true"/>
200 </map>
201 <map keycode="Comma" pressed="true">
202 <event keycode="Semicolon" unicode="59" modifiers="Shift" pressed="true" autorepeat="true"/>
203 </map>
204 <map keycode="Period" pressed="true">
205 <event keycode="Colon" unicode="58" modifiers="Shift" pressed="true" autorepeat="true"/>
206 </map>
207 <map keycode="Slash" pressed="true">
208 <event keycode="Question" unicode="63" modifiers="Shift" pressed="true" autorepeat="true"/>
209 </map>
210 <map keycode="A" pressed="true">
211 <event keycode="A" unicode="65" modifiers="Shift" pressed="true" autorepeat="true"/>
212 </map>
213 <map keycode="B" pressed="true">
214 <event keycode="B" unicode="66" modifiers="Shift" pressed="true" autorepeat="true"/>
215 </map>
216 <map keycode="C" pressed="true">
217 <event keycode="C" unicode="67" modifiers="Shift" pressed="true" autorepeat="true"/>
218 </map>
219 <map keycode="D" pressed="true">
220 <event keycode="D" unicode="68" modifiers="Shift" pressed="true" autorepeat="true"/>
221 </map>
222 <map keycode="E" pressed="true">
223 <event keycode="E" unicode="69" modifiers="Shift" pressed="true" autorepeat="true"/>
224 </map>
225 <map keycode="F" pressed="true">
226 <event keycode="F" unicode="70" modifiers="Shift" pressed="true" autorepeat="true"/>
227 </map>
228 <map keycode="G" pressed="true">
229 <event keycode="G" unicode="71" modifiers="Shift" pressed="true" autorepeat="true"/>
230 </map>
231 <map keycode="H" pressed="true">
232 <event keycode="H" unicode="72" modifiers="Shift" pressed="true" autorepeat="true"/>
233 </map>
234 <map keycode="I" pressed="true">
235 <event keycode="I" unicode="73" modifiers="Shift" pressed="true" autorepeat="true"/>
236 </map>
237 <map keycode="J" pressed="true">
238 <event keycode="J" unicode="74" modifiers="Shift" pressed="true" autorepeat="true"/>
239 </map>
240 <map keycode="K" pressed="true">
241 <event keycode="K" unicode="75" modifiers="Shift" pressed="true" autorepeat="true"/>
242 </map>
243 <map keycode="L" pressed="true">
244 <event keycode="L" unicode="76" modifiers="Shift" pressed="true" autorepeat="true"/>
245 </map>
246 <map keycode="M" pressed="true">
247 <event keycode="M" unicode="77" modifiers="Shift" pressed="true" autorepeat="true"/>
248 </map>
249 <map keycode="N" pressed="true">
250 <event keycode="N" unicode="78" modifiers="Shift" pressed="true" autorepeat="true"/>
251 </map>
252 <map keycode="O" pressed="true">
253 <event keycode="O" unicode="79" modifiers="Shift" pressed="true" autorepeat="true"/>
254 </map>
255 <map keycode="P" pressed="true">
256 <event keycode="P" unicode="80" modifiers="Shift" pressed="true" autorepeat="true"/>
257 </map>
258 <map keycode="Q" pressed="true">
259 <event keycode="Q" unicode="81" modifiers="Shift" pressed="true" autorepeat="true"/>
260 </map>
261 <map keycode="R" pressed="true">
262 <event keycode="R" unicode="82" modifiers="Shift" pressed="true" autorepeat="true"/>
263 </map>
264 <map keycode="S" pressed="true">
265 <event keycode="S" unicode="83" modifiers="Shift" pressed="true" autorepeat="true"/>
266 </map>
267 <map keycode="T" pressed="true">
268 <event keycode="T" unicode="84" modifiers="Shift" pressed="true" autorepeat="true"/>
269 </map>
270 <map keycode="U" pressed="true">
271 <event keycode="U" unicode="85" modifiers="Shift" pressed="true" autorepeat="true"/>
272 </map>
273 <map keycode="V" pressed="true">
274 <event keycode="V" unicode="86" modifiers="Shift" pressed="true" autorepeat="true"/>
275 </map>
276 <map keycode="W" pressed="true">
277 <event keycode="W" unicode="87" modifiers="Shift" pressed="true" autorepeat="true"/>
278 </map>
279 <map keycode="X" pressed="true">
280 <event keycode="X" unicode="88" modifiers="Shift" pressed="true" autorepeat="true"/>
281 </map>
282 <map keycode="Y" pressed="true">
283 <event keycode="Y" unicode="89" modifiers="Shift" pressed="true" autorepeat="true"/>
284 </map>
285 <map keycode="Z" pressed="true">
286 <event keycode="Z" unicode="90" modifiers="Shift" pressed="true" autorepeat="true"/>
287 </map>
288 <map keycode="Space" pressed="false">
289 <event keycode="Space" unicode="32" modifiers="Shift" pressed="false"/>
290 </map>
291 <map keycode="Apostrophe" pressed="false">
292 <event keycode="QuoteDbl" unicode="34" modifiers="Shift" pressed="false"/>
293 </map>
294 <map keycode="Comma" pressed="false">
295 <event keycode="Semicolon" unicode="59" modifiers="Shift" pressed="false"/>
296 </map>
297 <map keycode="Period" pressed="false">
298 <event keycode="Colon" unicode="58" modifiers="Shift" pressed="false"/>
299 </map>
300 <map keycode="Slash" pressed="false">
301 <event keycode="Question" unicode="63" modifiers="Shift" pressed="false"/>
302 </map>
303 <map keycode="A" pressed="false">
304 <event keycode="A" unicode="65" modifiers="Shift" pressed="false"/>
305 </map>
306 <map keycode="B" pressed="false">
307 <event keycode="B" unicode="66" modifiers="Shift" pressed="false"/>
308 </map>
309 <map keycode="C" pressed="false">
310 <event keycode="C" unicode="67" modifiers="Shift" pressed="false"/>
311 </map>
312 <map keycode="D" pressed="false">
313 <event keycode="D" unicode="68" modifiers="Shift" pressed="false"/>
314 </map>
315 <map keycode="E" pressed="false">
316 <event keycode="E" unicode="69" modifiers="Shift" pressed="false"/>
317 </map>
318 <map keycode="F" pressed="false">
319 <event keycode="F" unicode="70" modifiers="Shift" pressed="false"/>
320 </map>
321 <map keycode="G" pressed="false">
322 <event keycode="G" unicode="71" modifiers="Shift" pressed="false"/>
323 </map>
324 <map keycode="H" pressed="false">
325 <event keycode="H" unicode="72" modifiers="Shift" pressed="false"/>
326 </map>
327 <map keycode="I" pressed="false">
328 <event keycode="I" unicode="73" modifiers="Shift" pressed="false"/>
329 </map>
330 <map keycode="J" pressed="false">
331 <event keycode="J" unicode="74" modifiers="Shift" pressed="false"/>
332 </map>
333 <map keycode="K" pressed="false">
334 <event keycode="K" unicode="75" modifiers="Shift" pressed="false"/>
335 </map>
336 <map keycode="L" pressed="false">
337 <event keycode="L" unicode="76" modifiers="Shift" pressed="false"/>
338 </map>
339 <map keycode="M" pressed="false">
340 <event keycode="M" unicode="77" modifiers="Shift" pressed="false"/>
341 </map>
342 <map keycode="N" pressed="false">
343 <event keycode="N" unicode="78" modifiers="Shift" pressed="false"/>
344 </map>
345 <map keycode="O" pressed="false">
346 <event keycode="O" unicode="79" modifiers="Shift" pressed="false"/>
347 </map>
348 <map keycode="P" pressed="false">
349 <event keycode="P" unicode="80" modifiers="Shift" pressed="false"/>
350 </map>
351 <map keycode="Q" pressed="false">
352 <event keycode="Q" unicode="81" modifiers="Shift" pressed="false"/>
353 </map>
354 <map keycode="R" pressed="false">
355 <event keycode="R" unicode="82" modifiers="Shift" pressed="false"/>
356 </map>
357 <map keycode="S" pressed="false">
358 <event keycode="S" unicode="83" modifiers="Shift" pressed="false"/>
359 </map>
360 <map keycode="T" pressed="false">
361 <event keycode="T" unicode="84" modifiers="Shift" pressed="false"/>
362 </map>
363 <map keycode="U" pressed="false">
364 <event keycode="U" unicode="85" modifiers="Shift" pressed="false"/>
365 </map>
366 <map keycode="V" pressed="false">
367 <event keycode="V" unicode="86" modifiers="Shift" pressed="false"/>
368 </map>
369 <map keycode="W" pressed="false">
370 <event keycode="W" unicode="87" modifiers="Shift" pressed="false"/>
371 </map>
372 <map keycode="X" pressed="false">
373 <event keycode="X" unicode="88" modifiers="Shift" pressed="false"/>
374 </map>
375 <map keycode="Y" pressed="false">
376 <event keycode="Y" unicode="89" modifiers="Shift" pressed="false"/>
377 </map>
378 <map keycode="Z" pressed="false">
379 <event keycode="Z" unicode="90" modifiers="Shift" pressed="false"/>
380 </map>
381</state>
382
383</keymap>
diff --git a/share/zkb/en.xml.num b/share/zkb/en.xml.num
new file mode 100644
index 0000000..0ffd57b
--- a/dev/null
+++ b/share/zkb/en.xml.num
@@ -0,0 +1,383 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="lower-case">
6 <map keycode="32" pressed="true">
7 <event keycode="32" unicode="32" modifiers="0" pressed="true" autorepeat="true"/>
8 </map>
9 <map keycode="39" pressed="true">
10 <event keycode="39" unicode="39" modifiers="0" pressed="true" autorepeat="true"/>
11 </map>
12 <map keycode="44" pressed="true">
13 <event keycode="44" unicode="44" modifiers="0" pressed="true" autorepeat="true"/>
14 </map>
15 <map keycode="46" pressed="true">
16 <event keycode="46" unicode="46" modifiers="0" pressed="true" autorepeat="true"/>
17 </map>
18 <map keycode="47" pressed="true">
19 <event keycode="47" unicode="47" modifiers="0" pressed="true" autorepeat="true"/>
20 </map>
21 <map keycode="65" pressed="true">
22 <event keycode="65" unicode="97" modifiers="0" pressed="true" autorepeat="true"/>
23 </map>
24 <map keycode="66" pressed="true">
25 <event keycode="66" unicode="98" modifiers="0" pressed="true" autorepeat="true"/>
26 </map>
27 <map keycode="67" pressed="true">
28 <event keycode="67" unicode="99" modifiers="0" pressed="true" autorepeat="true"/>
29 </map>
30 <map keycode="68" pressed="true">
31 <event keycode="68" unicode="100" modifiers="0" pressed="true" autorepeat="true"/>
32 </map>
33 <map keycode="69" pressed="true">
34 <event keycode="69" unicode="101" modifiers="0" pressed="true" autorepeat="true"/>
35 </map>
36 <map keycode="70" pressed="true">
37 <event keycode="70" unicode="102" modifiers="0" pressed="true" autorepeat="true"/>
38 </map>
39 <map keycode="71" pressed="true">
40 <event keycode="71" unicode="103" modifiers="0" pressed="true" autorepeat="true"/>
41 </map>
42 <map keycode="72" pressed="true">
43 <event keycode="72" unicode="104" modifiers="0" pressed="true" autorepeat="true"/>
44 </map>
45 <map keycode="73" pressed="true">
46 <event keycode="73" unicode="105" modifiers="0" pressed="true" autorepeat="true"/>
47 </map>
48 <map keycode="74" pressed="true">
49 <event keycode="74" unicode="106" modifiers="0" pressed="true" autorepeat="true"/>
50 </map>
51 <map keycode="75" pressed="true">
52 <event keycode="75" unicode="107" modifiers="0" pressed="true" autorepeat="true"/>
53 </map>
54 <map keycode="76" pressed="true">
55 <event keycode="76" unicode="108" modifiers="0" pressed="true" autorepeat="true"/>
56 </map>
57 <map keycode="77" pressed="true">
58 <event keycode="77" unicode="109" modifiers="0" pressed="true" autorepeat="true"/>
59 </map>
60 <map keycode="78" pressed="true">
61 <event keycode="78" unicode="110" modifiers="0" pressed="true" autorepeat="true"/>
62 </map>
63 <map keycode="79" pressed="true">
64 <event keycode="79" unicode="111" modifiers="0" pressed="true" autorepeat="true"/>
65 </map>
66 <map keycode="80" pressed="true">
67 <event keycode="80" unicode="112" modifiers="0" pressed="true" autorepeat="true"/>
68 </map>
69 <map keycode="81" pressed="true">
70 <event keycode="81" unicode="113" modifiers="0" pressed="true" autorepeat="true"/>
71 </map>
72 <map keycode="82" pressed="true">
73 <event keycode="82" unicode="114" modifiers="0" pressed="true" autorepeat="true"/>
74 </map>
75 <map keycode="83" pressed="true">
76 <event keycode="83" unicode="115" modifiers="0" pressed="true" autorepeat="true"/>
77 </map>
78 <map keycode="84" pressed="true">
79 <event keycode="84" unicode="116" modifiers="0" pressed="true" autorepeat="true"/>
80 </map>
81 <map keycode="85" pressed="true">
82 <event keycode="85" unicode="117" modifiers="0" pressed="true" autorepeat="true"/>
83 </map>
84 <map keycode="86" pressed="true">
85 <event keycode="86" unicode="118" modifiers="0" pressed="true" autorepeat="true"/>
86 </map>
87 <map keycode="87" pressed="true">
88 <event keycode="87" unicode="119" modifiers="0" pressed="true" autorepeat="true"/>
89 </map>
90 <map keycode="88" pressed="true">
91 <event keycode="88" unicode="120" modifiers="0" pressed="true" autorepeat="true"/>
92 </map>
93 <map keycode="89" pressed="true">
94 <event keycode="89" unicode="121" modifiers="0" pressed="true" autorepeat="true"/>
95 </map>
96 <map keycode="90" pressed="true">
97 <event keycode="90" unicode="122" modifiers="0" pressed="true" autorepeat="true"/>
98 </map>
99 <map keycode="32" pressed="false">
100 <event keycode="32" unicode="32" modifiers="0" pressed="false" autorepeat="false"/>
101 </map>
102 <map keycode="39" pressed="false">
103 <event keycode="39" unicode="39" modifiers="0" pressed="false" autorepeat="false"/>
104 </map>
105 <map keycode="44" pressed="false">
106 <event keycode="44" unicode="44" modifiers="0" pressed="false" autorepeat="false"/>
107 </map>
108 <map keycode="46" pressed="false">
109 <event keycode="46" unicode="46" modifiers="0" pressed="false" autorepeat="false"/>
110 </map>
111 <map keycode="47" pressed="false">
112 <event keycode="47" unicode="47" modifiers="0" pressed="false" autorepeat="false"/>
113 </map>
114 <map keycode="65" pressed="false">
115 <event keycode="65" unicode="97" modifiers="0" pressed="false" autorepeat="false"/>
116 </map>
117 <map keycode="66" pressed="false">
118 <event keycode="66" unicode="98" modifiers="0" pressed="false" autorepeat="false"/>
119 </map>
120 <map keycode="67" pressed="false">
121 <event keycode="67" unicode="99" modifiers="0" pressed="false" autorepeat="false"/>
122 </map>
123 <map keycode="68" pressed="false">
124 <event keycode="68" unicode="100" modifiers="0" pressed="false" autorepeat="false"/>
125 </map>
126 <map keycode="69" pressed="false">
127 <event keycode="69" unicode="101" modifiers="0" pressed="false" autorepeat="false"/>
128 </map>
129 <map keycode="70" pressed="false">
130 <event keycode="70" unicode="102" modifiers="0" pressed="false" autorepeat="false"/>
131 </map>
132 <map keycode="71" pressed="false">
133 <event keycode="71" unicode="103" modifiers="0" pressed="false" autorepeat="false"/>
134 </map>
135 <map keycode="72" pressed="false">
136 <event keycode="72" unicode="104" modifiers="0" pressed="false" autorepeat="false"/>
137 </map>
138 <map keycode="73" pressed="false">
139 <event keycode="73" unicode="105" modifiers="0" pressed="false" autorepeat="false"/>
140 </map>
141 <map keycode="74" pressed="false">
142 <event keycode="74" unicode="106" modifiers="0" pressed="false" autorepeat="false"/>
143 </map>
144 <map keycode="75" pressed="false">
145 <event keycode="75" unicode="107" modifiers="0" pressed="false" autorepeat="false"/>
146 </map>
147 <map keycode="76" pressed="false">
148 <event keycode="76" unicode="108" modifiers="0" pressed="false" autorepeat="false"/>
149 </map>
150 <map keycode="77" pressed="false">
151 <event keycode="77" unicode="109" modifiers="0" pressed="false" autorepeat="false"/>
152 </map>
153 <map keycode="78" pressed="false">
154 <event keycode="78" unicode="110" modifiers="0" pressed="false" autorepeat="false"/>
155 </map>
156 <map keycode="79" pressed="false">
157 <event keycode="79" unicode="111" modifiers="0" pressed="false" autorepeat="false"/>
158 </map>
159 <map keycode="80" pressed="false">
160 <event keycode="80" unicode="112" modifiers="0" pressed="false" autorepeat="false"/>
161 </map>
162 <map keycode="81" pressed="false">
163 <event keycode="81" unicode="113" modifiers="0" pressed="false" autorepeat="false"/>
164 </map>
165 <map keycode="82" pressed="false">
166 <event keycode="82" unicode="114" modifiers="0" pressed="false" autorepeat="false"/>
167 </map>
168 <map keycode="83" pressed="false">
169 <event keycode="83" unicode="115" modifiers="0" pressed="false" autorepeat="false"/>
170 </map>
171 <map keycode="84" pressed="false">
172 <event keycode="84" unicode="116" modifiers="0" pressed="false" autorepeat="false"/>
173 </map>
174 <map keycode="85" pressed="false">
175 <event keycode="85" unicode="117" modifiers="0" pressed="false" autorepeat="false"/>
176 </map>
177 <map keycode="86" pressed="false">
178 <event keycode="86" unicode="118" modifiers="0" pressed="false" autorepeat="false"/>
179 </map>
180 <map keycode="87" pressed="false">
181 <event keycode="87" unicode="119" modifiers="0" pressed="false" autorepeat="false"/>
182 </map>
183 <map keycode="88" pressed="false">
184 <event keycode="88" unicode="120" modifiers="0" pressed="false" autorepeat="false"/>
185 </map>
186 <map keycode="89" pressed="false">
187 <event keycode="89" unicode="121" modifiers="0" pressed="false" autorepeat="false"/>
188 </map>
189 <map keycode="90" pressed="false">
190 <event keycode="90" unicode="122" modifiers="0" pressed="false" autorepeat="false"/>
191 </map>
192</state>
193
194<state name="upper-case">
195 <map keycode="32" pressed="true">
196 <event keycode="32" unicode="32" modifiers="8" pressed="true" autorepeat="true"/>
197 </map>
198 <map keycode="39" pressed="true">
199 <event keycode="34" unicode="34" modifiers="8" pressed="true" autorepeat="true"/>
200 </map>
201 <map keycode="44" pressed="true">
202 <event keycode="59" unicode="59" modifiers="8" pressed="true" autorepeat="true"/>
203 </map>
204 <map keycode="46" pressed="true">
205 <event keycode="58" unicode="58" modifiers="8" pressed="true" autorepeat="true"/>
206 </map>
207 <map keycode="47" pressed="true">
208 <event keycode="63" unicode="63" modifiers="8" pressed="true" autorepeat="true"/>
209 </map>
210 <map keycode="65" pressed="true">
211 <event keycode="65" unicode="65" modifiers="8" pressed="true" autorepeat="true"/>
212 </map>
213 <map keycode="66" pressed="true">
214 <event keycode="66" unicode="66" modifiers="8" pressed="true" autorepeat="true"/>
215 </map>
216 <map keycode="67" pressed="true">
217 <event keycode="67" unicode="67" modifiers="8" pressed="true" autorepeat="true"/>
218 </map>
219 <map keycode="68" pressed="true">
220 <event keycode="68" unicode="68" modifiers="8" pressed="true" autorepeat="true"/>
221 </map>
222 <map keycode="69" pressed="true">
223 <event keycode="69" unicode="69" modifiers="8" pressed="true" autorepeat="true"/>
224 </map>
225 <map keycode="70" pressed="true">
226 <event keycode="70" unicode="70" modifiers="8" pressed="true" autorepeat="true"/>
227 </map>
228 <map keycode="71" pressed="true">
229 <event keycode="71" unicode="71" modifiers="8" pressed="true" autorepeat="true"/>
230 </map>
231 <map keycode="72" pressed="true">
232 <event keycode="72" unicode="72" modifiers="8" pressed="true" autorepeat="true"/>
233 </map>
234 <map keycode="73" pressed="true">
235 <event keycode="73" unicode="73" modifiers="8" pressed="true" autorepeat="true"/>
236 </map>
237 <map keycode="74" pressed="true">
238 <event keycode="74" unicode="74" modifiers="8" pressed="true" autorepeat="true"/>
239 </map>
240 <map keycode="75" pressed="true">
241 <event keycode="75" unicode="75" modifiers="8" pressed="true" autorepeat="true"/>
242 </map>
243 <map keycode="76" pressed="true">
244 <event keycode="76" unicode="76" modifiers="8" pressed="true" autorepeat="true"/>
245 </map>
246 <map keycode="77" pressed="true">
247 <event keycode="77" unicode="77" modifiers="8" pressed="true" autorepeat="true"/>
248 </map>
249 <map keycode="78" pressed="true">
250 <event keycode="78" unicode="78" modifiers="8" pressed="true" autorepeat="true"/>
251 </map>
252 <map keycode="79" pressed="true">
253 <event keycode="79" unicode="79" modifiers="8" pressed="true" autorepeat="true"/>
254 </map>
255 <map keycode="80" pressed="true">
256 <event keycode="80" unicode="80" modifiers="8" pressed="true" autorepeat="true"/>
257 </map>
258 <map keycode="81" pressed="true">
259 <event keycode="81" unicode="81" modifiers="8" pressed="true" autorepeat="true"/>
260 </map>
261 <map keycode="82" pressed="true">
262 <event keycode="82" unicode="82" modifiers="8" pressed="true" autorepeat="true"/>
263 </map>
264 <map keycode="83" pressed="true">
265 <event keycode="83" unicode="83" modifiers="8" pressed="true" autorepeat="true"/>
266 </map>
267 <map keycode="84" pressed="true">
268 <event keycode="84" unicode="84" modifiers="8" pressed="true" autorepeat="true"/>
269 </map>
270 <map keycode="85" pressed="true">
271 <event keycode="85" unicode="85" modifiers="8" pressed="true" autorepeat="true"/>
272 </map>
273 <map keycode="86" pressed="true">
274 <event keycode="86" unicode="86" modifiers="8" pressed="true" autorepeat="true"/>
275 </map>
276 <map keycode="87" pressed="true">
277 <event keycode="87" unicode="87" modifiers="8" pressed="true" autorepeat="true"/>
278 </map>
279 <map keycode="88" pressed="true">
280 <event keycode="88" unicode="88" modifiers="8" pressed="true" autorepeat="true"/>
281 </map>
282 <map keycode="89" pressed="true">
283 <event keycode="89" unicode="89" modifiers="8" pressed="true" autorepeat="true"/>
284 </map>
285 <map keycode="90" pressed="true">
286 <event keycode="90" unicode="90" modifiers="8" pressed="true" autorepeat="true"/>
287 </map>
288 <map keycode="32" pressed="false">
289 <event keycode="32" unicode="32" modifiers="8" pressed="false" autorepeat="false"/>
290 </map>
291 <map keycode="39" pressed="false">
292 <event keycode="34" unicode="34" modifiers="8" pressed="false" autorepeat="false"/>
293 </map>
294 <map keycode="44" pressed="false">
295 <event keycode="58" unicode="58" modifiers="8" pressed="false" autorepeat="false"/>
296 </map>
297 <map keycode="46" pressed="false">
298 <event keycode="59" unicode="59" modifiers="8" pressed="false" autorepeat="false"/>
299 </map>
300 <map keycode="47" pressed="false">
301 <event keycode="63" unicode="63" modifiers="8" pressed="false" autorepeat="false"/>
302 </map>
303 <map keycode="65" pressed="false">
304 <event keycode="65" unicode="65" modifiers="8" pressed="false" autorepeat="false"/>
305 </map>
306 <map keycode="66" pressed="false">
307 <event keycode="66" unicode="66" modifiers="8" pressed="false" autorepeat="false"/>
308 </map>
309 <map keycode="67" pressed="false">
310 <event keycode="67" unicode="67" modifiers="8" pressed="false" autorepeat="false"/>
311 </map>
312 <map keycode="68" pressed="false">
313 <event keycode="68" unicode="68" modifiers="8" pressed="false" autorepeat="false"/>
314 </map>
315 <map keycode="69" pressed="false">
316 <event keycode="69" unicode="69" modifiers="8" pressed="false" autorepeat="false"/>
317 </map>
318 <map keycode="70" pressed="false">
319 <event keycode="70" unicode="70" modifiers="8" pressed="false" autorepeat="false"/>
320 </map>
321 <map keycode="71" pressed="false">
322 <event keycode="71" unicode="71" modifiers="8" pressed="false" autorepeat="false"/>
323 </map>
324 <map keycode="72" pressed="false">
325 <event keycode="72" unicode="72" modifiers="8" pressed="false" autorepeat="false"/>
326 </map>
327 <map keycode="73" pressed="false">
328 <event keycode="73" unicode="73" modifiers="8" pressed="false" autorepeat="false"/>
329 </map>
330 <map keycode="74" pressed="false">
331 <event keycode="74" unicode="74" modifiers="8" pressed="false" autorepeat="false"/>
332 </map>
333 <map keycode="75" pressed="false">
334 <event keycode="75" unicode="75" modifiers="8" pressed="false" autorepeat="false"/>
335 </map>
336 <map keycode="76" pressed="false">
337 <event keycode="76" unicode="76" modifiers="8" pressed="false" autorepeat="false"/>
338 </map>
339 <map keycode="77" pressed="false">
340 <event keycode="77" unicode="77" modifiers="8" pressed="false" autorepeat="false"/>
341 </map>
342 <map keycode="78" pressed="false">
343 <event keycode="78" unicode="78" modifiers="8" pressed="false" autorepeat="false"/>
344 </map>
345 <map keycode="79" pressed="false">
346 <event keycode="79" unicode="79" modifiers="8" pressed="false" autorepeat="false"/>
347 </map>
348 <map keycode="80" pressed="false">
349 <event keycode="80" unicode="80" modifiers="8" pressed="false" autorepeat="false"/>
350 </map>
351 <map keycode="81" pressed="false">
352 <event keycode="81" unicode="81" modifiers="8" pressed="false" autorepeat="false"/>
353 </map>
354 <map keycode="82" pressed="false">
355 <event keycode="82" unicode="82" modifiers="8" pressed="false" autorepeat="false"/>
356 </map>
357 <map keycode="83" pressed="false">
358 <event keycode="83" unicode="83" modifiers="8" pressed="false" autorepeat="false"/>
359 </map>
360 <map keycode="84" pressed="false">
361 <event keycode="84" unicode="84" modifiers="8" pressed="false" autorepeat="false"/>
362 </map>
363 <map keycode="85" pressed="false">
364 <event keycode="85" unicode="85" modifiers="8" pressed="false" autorepeat="false"/>
365 </map>
366 <map keycode="86" pressed="false">
367 <event keycode="86" unicode="86" modifiers="8" pressed="false" autorepeat="false"/>
368 </map>
369 <map keycode="87" pressed="false">
370 <event keycode="87" unicode="87" modifiers="8" pressed="false" autorepeat="false"/>
371 </map>
372 <map keycode="88" pressed="false">
373 <event keycode="88" unicode="88" modifiers="8" pressed="false" autorepeat="false"/>
374 </map>
375 <map keycode="89" pressed="false">
376 <event keycode="89" unicode="89" modifiers="8" pressed="false" autorepeat="false"/>
377 </map>
378 <map keycode="90" pressed="false">
379 <event keycode="90" unicode="90" modifiers="8" pressed="false" autorepeat="false"/>
380 </map>
381</state>
382
383</keymap>
diff --git a/share/zkb/latin1.xml b/share/zkb/latin1.xml
new file mode 100644
index 0000000..ec57746
--- a/dev/null
+++ b/share/zkb/latin1.xml
@@ -0,0 +1,1927 @@
1<keymap>
2
3<!--
4Zaurus Keyboard definition for Latin1 characters.
5================================================
6This keyboard should allow the entry of all characters used in latin
7languages like French or Spanish.
8
9The following rules are implemented:
10- Right Shift activate dead keys that allows to compose accentuated characters.
11- Keep Right Shift or press Left Shift to change case of letter
12- Space can be used to abort a key composition and return to Normal state, printing
13the accent.
14
15- Keys not defined are inherited from parent mapping.
16
17Key composition
18===============
19Use the Right Shift with one of the following keys to compose accentuated
20characters.
21 Key Action (Mnemonic)
22 / Accute accent (same slant)
23 ' Grave accent (no backslash!)
24 , Cedilla (a comma under the C)
25 V Circumflex accent (reversed circumflex)
26 J Ligature (Join letters)
27 B Trema (Near circumflex)
28 N Tilde (Same shape on N) ******* Bound to M due to a bug in the definition!
29 I Inversed (Inversed !)
30
31All accents are in the same area, around Space bar.
32
33
34Keyboard navigation (not implemented yet)
35===================
36To be put into common.xml. Use either Right of Left Shift:
37 <-Home
38 ->End
39 ^PageUp
40 vPageDown
41
42
43Report bugs or comments to Pierre Métras <admin@alterna.tv>
44Version 0.1 - 20020901
45-->
46
47<!-- The base is English mapping -->
48<include file="en.xml"/>
49
50
51<state name="RShift-Accute" parent="RShift"/>
52<state name="RShift-Accute-Lower" parent="Normal"/>
53<state name="RShift-Caps-Accute" parent="Caps"/>
54<state name="RShift-Caps-Accute-Upper" parent="RShift-Caps"/>
55
56<state name="RShift-Grave" parent="RShift"/>
57<state name="RShift-Grave-Lower" parent="Normal"/>
58<state name="RShift-Caps-Grave" parent="Caps"/>
59<state name="RShift-Caps-Grave-Upper" parent="RShift-Caps"/>
60
61<state name="RShift-Circumflex" parent="RShift"/>
62<state name="RShift-Circumflex-Lower" parent="Normal"/>
63<state name="RShift-Caps-Circumflex" parent="Caps"/>
64<state name="RShift-Caps-Circumflex-Upper" parent="RShift-Caps"/>
65
66<state name="RShift-Cedilla" parent="RShift"/>
67<state name="RShift-Cedilla-Lower" parent="Normal"/>
68<state name="RShift-Caps-Cedilla" parent="Caps"/>
69<state name="RShift-Caps-Cedilla-Upper" parent="RShift-Caps"/>
70
71<state name="RShift-Ligature" parent="RShift"/>
72<state name="RShift-Ligature-Lower" parent="Normal"/>
73<state name="RShift-Caps-Ligature" parent="Caps"/>
74<state name="RShift-Caps-Ligature-Upper" parent="RShift-Caps"/>
75
76<state name="RShift-Trema" parent="RShift"/>
77<state name="RShift-Trema-Lower" parent="Normal"/>
78<state name="RShift-Caps-Trema" parent="Caps"/>
79<state name="RShift-Caps-Trema-Upper" parent="RShift-Caps"/>
80
81<state name="RShift-Tilde" parent="RShift"/>
82<state name="RShift-Tilde-Lower" parent="Normal"/>
83<state name="RShift-Caps-Tilde" parent="Caps"/>
84<state name="RShift-Caps-Tilde-Upper" parent="RShift-Caps"/>
85
86<state name="RShift-Inversed" parent="RShift"/>
87<state name="RShift-Caps-Inversed" parent="Caps"/>
88
89
90
91<!-- TO BE PLACED INTO COMMON -->
92<!-- START: EXTENDED KEY NAVIGATION -->
93<state name="LShift">
94 <map keycode="Left" pressed="true">
95 <event keycode="Home" unicode="-1" pressed="true" autorepeat="true"/>
96 </map>
97 <map keycode="Left" pressed="false">
98 <event keycode="Home" unicode="-1" pressed="false"/>
99 </map>
100
101 <map keycode="Up" pressed="true">
102 <event keycode="PageUp" unicode="-1" pressed="true" autorepeat="true"/>
103 </map>
104 <map keycode="Up" pressed="false">
105 <event keycode="PageUp" unicode="-1" pressed="false"/>
106 </map>
107
108 <map keycode="Right" pressed="true">
109 <event keycode="End" unicode="-1" pressed="true" autorepeat="true"/>
110 </map>
111 <map keycode="Right" pressed="false">
112 <event keycode="End" unicode="-1" pressed="false"/>
113 </map>
114
115 <map keycode="Down" pressed="true">
116 <event keycode="PageDown" unicode="-1" pressed="true" autorepeat="true"/>
117 </map>
118 <map keycode="Down" pressed="false">
119 <event keycode="PageDown" unicode="-1" pressed="false"/>
120 </map>
121</state>
122<state name="RShift">
123 <map keycode="Left" pressed="true">
124 <event keycode="Home" unicode="-1" pressed="true" autorepeat="true"/>
125 </map>
126 <map keycode="Left" pressed="false">
127 <event keycode="Home" unicode="-1" pressed="false"/>
128 </map>
129
130 <map keycode="Up" pressed="true">
131 <event keycode="PageUp" unicode="-1" pressed="true" autorepeat="true"/>
132 </map>
133 <map keycode="Up" pressed="false">
134 <event keycode="PageUp" unicode="-1" pressed="false"/>
135 </map>
136
137 <map keycode="Right" pressed="true">
138 <event keycode="End" unicode="-1" pressed="true" autorepeat="true"/>
139 </map>
140 <map keycode="Right" pressed="false">
141 <event keycode="End" unicode="-1" pressed="false"/>
142 </map>
143
144 <map keycode="Down" pressed="true">
145 <event keycode="PageDown" unicode="-1" pressed="true" autorepeat="true"/>
146 </map>
147 <map keycode="Down" pressed="false">
148 <event keycode="PageDown" unicode="-1" pressed="false"/>
149 </map>
150</state>
151<!-- END: EXTENDED KEY NAVIGATION -->
152
153
154
155<!-- RShift activate dead keys -->
156<state name="RShift">
157 <map keycode="Slash" pressed="true">
158 <next-state name="RShift-Accute"/>
159 </map>
160 <map keycode="Apostrophe" pressed="true">
161 <next-state name="RShift-Grave"/>
162 </map>
163 <map keycode="Comma" pressed="true">
164 <next-state name="RShift-Cedilla"/>
165 </map>
166 <map keycode="J" pressed="true">
167 <next-state name="RShift-Ligature"/>
168 </map>
169 <map keycode="V" pressed="true">
170 <next-state name="RShift-Circumflex"/>
171 </map>
172 <map keycode="B" pressed="true">
173 <next-state name="RShift-Trema"/>
174 </map>
175 <map keycode="M" pressed="true">
176 <next-state name="RShift-Tilde"/>
177 </map>
178 <map keycode="I" pressed="true">
179 <next-state name="RShift-Inversed"/>
180 </map>
181</state>
182
183
184<!-- RShift activate dead keys in CAPS mode -->
185<state name="RShift-Caps">
186 <map keycode="Slash" pressed="true">
187 <next-state name="RShift-Caps-Accute"/>
188 </map>
189 <map keycode="Apostrophe" pressed="true">
190 <next-state name="RShift-Caps-Grave"/>
191 </map>
192 <map keycode="Comma" pressed="true">
193 <next-state name="RShift-Caps-Cedilla"/>
194 </map>
195 <map keycode="J" pressed="true">
196 <next-state name="RShift-Caps-Ligature"/>
197 </map>
198 <map keycode="V" pressed="true">
199 <next-state name="RShift-Caps-Circumflex"/>
200 </map>
201 <map keycode="B" pressed="true">
202 <next-state name="RShift-Caps-Trema"/>
203 </map>
204 <map keycode="M" pressed="true">
205 <next-state name="RShift-Caps-Tilde"/>
206 </map>
207 <map keycode="I" pressed="true">
208 <next-state name="RShift-Caps-Inversed"/>
209 </map>
210</state>
211
212
213<!-- Accute Accentuated Upper-Case Characters: Á, É... because we still press Shift -->
214<state name="RShift-Accute">
215 <!-- RS + (/) + A = Á -->
216 <map keycode="A" pressed="true">
217 <event keycode="A" unicode="0xC1" pressed="true" modifiers="Shift" autorepeat="true"/>
218 </map>
219 <map keycode="A" pressed="false">
220 <event keycode="A" unicode="0xC1" pressed="false" modifiers="Shift"/>
221 <next-state name="Normal"/>
222 </map>
223
224 <!-- RS + (/) + E = É -->
225 <map keycode="E" pressed="true">
226 <event keycode="E" unicode="0xC9" pressed="true" modifiers="Shift" autorepeat="true"/>
227 </map>
228 <map keycode="E" pressed="false">
229 <event keycode="E" unicode="0xC9" pressed="false" modifiers="Shift"/>
230 <next-state name="Normal"/>
231 </map>
232
233 <!-- RS + (/) + I = Í -->
234 <map keycode="I" pressed="true">
235 <event keycode="I" unicode="0xCD" pressed="true" modifiers="Shift" autorepeat="true"/>
236 </map>
237 <map keycode="I" pressed="false">
238 <event keycode="I" unicode="0xCD" pressed="false" modifiers="Shift"/>
239 <next-state name="Normal"/>
240 </map>
241
242 <!-- RS + (/) + O = Ó -->
243 <map keycode="O" pressed="true">
244 <event keycode="O" unicode="0xD3" pressed="true" modifiers="Shift" autorepeat="true"/>
245 </map>
246 <map keycode="O" pressed="false">
247 <event keycode="O" unicode="0xD3" pressed="false" modifiers="Shift"/>
248 <next-state name="Normal"/>
249 </map>
250
251 <!-- RS + (/) + U = Ú -->
252 <map keycode="U" pressed="true">
253 <event keycode="U" unicode="0xDA" pressed="true" modifiers="Shift" autorepeat="true"/>
254 </map>
255 <map keycode="U" pressed="false">
256 <event keycode="U" unicode="0xDA" pressed="false" modifiers="Shift"/>
257 <next-state name="Normal"/>
258 </map>
259
260 <!-- RS + (/) + Y = Ý -->
261 <map keycode="Y" pressed="true">
262 <event keycode="Y" unicode="0xDD" pressed="true" modifiers="Shift" autorepeat="true"/>
263 </map>
264 <map keycode="Y" pressed="false">
265 <event keycode="Y" unicode="0xDD" pressed="false" modifiers="Shift"/>
266 <next-state name="Normal"/>
267 </map>
268
269 <!-- Release shift to do lower-case -->
270 <map keycode="Right Shift" pressed="false">
271 <next-state name="RShift-Accute-Lower"/>
272 </map>
273 <map keycode="Left Shift" pressed="false">
274 <event keycode="Shift" unicode="-1" pressed="false"/>
275 <next-state name="RShift-Accute-Lower"/>
276 </map>
277
278 <!-- Abort operation: print ´ -->
279 <map keycode="Space" pressed="true">
280 <event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
281 </map>
282 <map keycode="Space" pressed="false">
283 <event keycode="Slash" unicode="0xB4" pressed="false"/>
284 <next-state name="Normal"/>
285 </map>
286</state>
287
288
289<!-- Accute Accentuated Lower-Case Characters: á, é... because we have released RShift -->
290<state name="RShift-Accute-Lower">
291 <!-- RS + (/) + A = á -->
292 <map keycode="A" pressed="true">
293 <event keycode="A" unicode="0xE1" pressed="true" autorepeat="true"/>
294 </map>
295 <map keycode="A" pressed="false">
296 <event keycode="A" unicode="0xE1" pressed="false"/>
297 <next-state name="Normal"/>
298 </map>
299
300 <!-- RS + (/) + E = é -->
301 <map keycode="E" pressed="true">
302 <event keycode="E" unicode="0xE9" pressed="true" autorepeat="true"/>
303 </map>
304 <map keycode="E" pressed="false">
305 <event keycode="E" unicode="0xE9" pressed="false"/>
306 <next-state name="Normal"/>
307 </map>
308
309 <!-- RS + (/) + I = í -->
310 <map keycode="I" pressed="true">
311 <event keycode="I" unicode="0xED" pressed="true" autorepeat="true"/>
312 </map>
313 <map keycode="I" pressed="false">
314 <event keycode="I" unicode="0xED" pressed="false"/>
315 <next-state name="Normal"/>
316 </map>
317
318 <!-- RS + (/) + O = ó -->
319 <map keycode="O" pressed="true">
320 <event keycode="O" unicode="0xF3" pressed="true" autorepeat="true"/>
321 </map>
322 <map keycode="O" pressed="false">
323 <event keycode="O" unicode="0xF3" pressed="false"/>
324 <next-state name="Normal"/>
325 </map>
326
327 <!-- RS + (/) + U = ú -->
328 <map keycode="U" pressed="true">
329 <event keycode="U" unicode="0xFA" pressed="true" autorepeat="true"/>
330 </map>
331 <map keycode="U" pressed="false">
332 <event keycode="U" unicode="0xFA" pressed="false"/>
333 <next-state name="Normal"/>
334 </map>
335
336 <!-- RS + (/) + Y = ý -->
337 <map keycode="Y" pressed="true">
338 <event keycode="Y" unicode="0xFD" pressed="true" autorepeat="true"/>
339 </map>
340 <map keycode="Y" pressed="false">
341 <event keycode="Y" unicode="0xFD" pressed="false"/>
342 <next-state name="Normal"/>
343 </map>
344
345 <!-- Simple shift second time goes Upper-Case -->
346 <map keycode="Right Shift" pressed="true">
347 <next-state name="RShift-Accute"/>
348 </map>
349 <map keycode="Left Shift" pressed="true">
350 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
351 <next-state name="RShift-Accute"/>
352 </map>
353
354 <!-- Abort operation: print ´ -->
355 <map keycode="Space" pressed="true">
356 <event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
357 </map>
358 <map keycode="Space" pressed="false">
359 <event keycode="Slash" unicode="0xB4" pressed="false"/>
360 <next-state name="Normal"/>
361 </map>
362</state>
363
364
365<!-- Accute Accentuated Lower-Case Characters: á, é... because we still press Shift and we are in Caps -->
366<state name="RShift-Caps-Accute">
367 <!-- Caps + RS + (/) + A = á -->
368 <map keycode="A" pressed="true">
369 <event keycode="A" unicode="0xE1" pressed="true" autorepeat="true"/>
370 </map>
371 <map keycode="A" pressed="false">
372 <event keycode="A" unicode="0xE1" pressed="false"/>
373 <next-state name="Caps"/>
374 </map>
375
376 <!-- Caps + RS + (/) + E = é -->
377 <map keycode="E" pressed="true">
378 <event keycode="E" unicode="0xE9" pressed="true" autorepeat="true"/>
379 </map>
380 <map keycode="E" pressed="false">
381 <event keycode="E" unicode="0xE9" pressed="false"/>
382 <next-state name="Caps"/>
383 </map>
384
385 <!-- Caps + RS + (/) + I = í -->
386 <map keycode="I" pressed="true">
387 <event keycode="I" unicode="0xED" pressed="true" autorepeat="true"/>
388 </map>
389 <map keycode="I" pressed="false">
390 <event keycode="I" unicode="0xED" pressed="false"/>
391 <next-state name="Caps"/>
392 </map>
393
394 <!-- Caps + RS + (/) + O = ó -->
395 <map keycode="O" pressed="true">
396 <event keycode="O" unicode="0xF3" pressed="true" autorepeat="true"/>
397 </map>
398 <map keycode="O" pressed="false">
399 <event keycode="O" unicode="0xF3" pressed="false"/>
400 <next-state name="Caps"/>
401 </map>
402
403 <!-- Caps + RS + (/) + U = ú -->
404 <map keycode="U" pressed="true">
405 <event keycode="U" unicode="0xFA" pressed="true" autorepeat="true"/>
406 </map>
407 <map keycode="U" pressed="false">
408 <event keycode="U" unicode="0xFA" pressed="false"/>
409 <next-state name="Caps"/>
410 </map>
411
412 <!-- Caps + RS + (/) + Y = ý -->
413 <map keycode="Y" pressed="true">
414 <event keycode="Y" unicode="0xFD" pressed="true" autorepeat="true"/>
415 </map>
416 <map keycode="Y" pressed="false">
417 <event keycode="Y" unicode="0xFD" pressed="false"/>
418 <next-state name="Caps"/>
419 </map>
420
421 <!-- Release shift to go upper-case -->
422 <map keycode="Right Shift" pressed="false">
423 <next-state name="RShift-Caps-Accute-Upper"/>
424 </map>
425 <map keycode="Left Shift" pressed="false">
426 <event keycode="Shift" unicode="-1" pressed="false"/>
427 <next-state name="RShift-Caps-Accute-Upper"/>
428 </map>
429
430 <!-- Abort operation: print ´ -->
431 <map keycode="Space" pressed="true">
432 <event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
433 </map>
434 <map keycode="Space" pressed="false">
435 <event keycode="Slash" unicode="0xB4" pressed="false"/>
436 <next-state name="Caps"/>
437 </map>
438</state>
439
440
441<!-- Accute Accentuated Upper-Case Characters: Á, É... because we have released RShift but we are in Caps -->
442<state name="RShift-Caps-Accute-Upper">
443 <!-- Caps + RS + (/) + A = Á -->
444 <map keycode="A" pressed="true">
445 <event keycode="A" unicode="0xC1" pressed="true" modifiers="Shift" autorepeat="true"/>
446 </map>
447 <map keycode="A" pressed="false">
448 <event keycode="A" unicode="0xC1" pressed="false" modifiers="Shift"/>
449 <next-state name="Caps"/>
450 </map>
451
452 <!-- Caps + RS + (/) + E = É -->
453 <map keycode="E" pressed="true">
454 <event keycode="E" unicode="0xC9" pressed="true" modifiers="Shift" autorepeat="true"/>
455 </map>
456 <map keycode="E" pressed="false">
457 <event keycode="E" unicode="0xC9" pressed="false" modifiers="Shift"/>
458 <next-state name="Caps"/>
459 </map>
460
461 <!-- Caps + RS + (/) + I = Í -->
462 <map keycode="I" pressed="true">
463 <event keycode="I" unicode="0xCD" pressed="true" modifiers="Shift" autorepeat="true"/>
464 </map>
465 <map keycode="I" pressed="false">
466 <event keycode="I" unicode="0xCD" pressed="false" modifiers="Shift"/>
467 <next-state name="Caps"/>
468 </map>
469
470 <!-- Caps + RS + (/) + O = Ó -->
471 <map keycode="O" pressed="true">
472 <event keycode="O" unicode="0xD3" pressed="true" modifiers="Shift" autorepeat="true"/>
473 </map>
474 <map keycode="O" pressed="false">
475 <event keycode="O" unicode="0xD3" pressed="false" modifiers="Shift"/>
476 <next-state name="Caps"/>
477 </map>
478
479 <!-- Caps + RS + (/) + U = Ú -->
480 <map keycode="U" pressed="true">
481 <event keycode="U" unicode="0xDA" pressed="true" modifiers="Shift" autorepeat="true"/>
482 </map>
483 <map keycode="U" pressed="false">
484 <event keycode="U" unicode="0xDA" pressed="false" modifiers="Shift"/>
485 <next-state name="Caps"/>
486 </map>
487
488 <!-- Caps + RS + (/) + Y = Ý -->
489 <map keycode="Y" pressed="true">
490 <event keycode="Y" unicode="0xDD" pressed="true" modifiers="Shift" autorepeat="true"/>
491 </map>
492 <map keycode="Y" pressed="false">
493 <event keycode="Y" unicode="0xDD" pressed="false" modifiers="Shift"/>
494 <next-state name="Caps"/>
495 </map>
496
497 <!-- Simple shift second time goes Lower-Case -->
498 <map keycode="Right Shift" pressed="true">
499 <next-state name="RShift-Caps-Accute"/>
500 </map>
501 <map keycode="Left Shift" pressed="true">
502 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
503 <next-state name="RShift-Caps-Accute"/>
504 </map>
505
506 <!-- Abort operation: print ´ -->
507 <map keycode="Space" pressed="true">
508 <event keycode="Slash" unicode="0xB4" pressed="true" autorepeat="false"/>
509 </map>
510 <map keycode="Space" pressed="false">
511 <event keycode="Slash" unicode="0xB4" pressed="false"/>
512 <next-state name="Caps"/>
513 </map>
514</state>
515
516
517
518
519<!-- Grave Accentuated Upper-Case Characters: À, È, Ì... because we still press Shift -->
520<state name="RShift-Grave">
521 <!-- RS + (') + A = À -->
522 <map keycode="A" pressed="true">
523 <event keycode="A" unicode="0xC0" pressed="true" modifiers="Shift" autorepeat="true"/>
524 </map>
525 <map keycode="A" pressed="false">
526 <event keycode="A" unicode="0xC0" pressed="false" modifiers="Shift"/>
527 <next-state name="Normal"/>
528 </map>
529
530 <!-- RS + (') + E = È -->
531 <map keycode="E" pressed="true">
532 <event keycode="E" unicode="0xC8" pressed="true" modifiers="Shift" autorepeat="true"/>
533 </map>
534 <map keycode="E" pressed="false">
535 <event keycode="E" unicode="0xC8" pressed="false" modifiers="Shift"/>
536 <next-state name="Normal"/>
537 </map>
538
539 <!-- RS + (') + I = Ì -->
540 <map keycode="I" pressed="true">
541 <event keycode="I" unicode="0xCC" pressed="true" modifiers="Shift" autorepeat="true"/>
542 </map>
543 <map keycode="I" pressed="false">
544 <event keycode="I" unicode="0xCC" pressed="false" modifiers="Shift"/>
545 <next-state name="Normal"/>
546 </map>
547
548 <!-- RS + (') + O = Ò -->
549 <map keycode="O" pressed="true">
550 <event keycode="O" unicode="0xD2" pressed="true" modifiers="Shift" autorepeat="true"/>
551 </map>
552 <map keycode="O" pressed="false">
553 <event keycode="O" unicode="0xD2" pressed="false" modifiers="Shift"/>
554 <next-state name="Normal"/>
555 </map>
556
557 <!-- RS + (') + U = Ù -->
558 <map keycode="U" pressed="true">
559 <event keycode="U" unicode="0xD9" pressed="true" modifiers="Shift" autorepeat="true"/>
560 </map>
561 <map keycode="U" pressed="false">
562 <event keycode="U" unicode="0xD9" pressed="false" modifiers="Shift"/>
563 <next-state name="Normal"/>
564 </map>
565
566 <!-- Release shift to do lower-case -->
567 <map keycode="Right Shift" pressed="false">
568 <next-state name="RShift-Grave-Lower"/>
569 </map>
570 <map keycode="Left Shift" pressed="false">
571 <event keycode="Shift" unicode="-1" pressed="false"/>
572 <next-state name="RShift-Grave-Lower"/>
573 </map>
574
575 <!-- Abort operation: print ` -->
576 <map keycode="Space" pressed="true">
577 <event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
578 </map>
579 <map keycode="Space" pressed="false">
580 <event keycode="Apostrophe" unicode="0x60" pressed="false"/>
581 <next-state name="Normal"/>
582 </map>
583</state>
584
585
586<!-- Grave Accentuated Lower-Case Characters: à, è, ì... because we have released RShift -->
587<state name="RShift-Grave-Lower">
588 <!-- RS + (') + A = à -->
589 <map keycode="A" pressed="true">
590 <event keycode="A" unicode="0xE0" pressed="true" autorepeat="true"/>
591 </map>
592 <map keycode="A" pressed="false">
593 <event keycode="A" unicode="0xE0" pressed="false"/>
594 <next-state name="Normal"/>
595 </map>
596
597 <!-- RS + (') + E = è -->
598 <map keycode="E" pressed="true">
599 <event keycode="E" unicode="0xE8" pressed="true" autorepeat="true"/>
600 </map>
601 <map keycode="E" pressed="false">
602 <event keycode="E" unicode="0xE8" pressed="false"/>
603 <next-state name="Normal"/>
604 </map>
605
606 <!-- RS + (') + I = ì -->
607 <map keycode="I" pressed="true">
608 <event keycode="I" unicode="0xEC" pressed="true" autorepeat="true"/>
609 </map>
610 <map keycode="I" pressed="false">
611 <event keycode="I" unicode="0xEC" pressed="false"/>
612 <next-state name="Normal"/>
613 </map>
614
615 <!-- RS + (') + O = ò -->
616 <map keycode="O" pressed="true">
617 <event keycode="O" unicode="0xF2" pressed="true" autorepeat="true"/>
618 </map>
619 <map keycode="O" pressed="false">
620 <event keycode="O" unicode="0xF2" pressed="false"/>
621 <next-state name="Normal"/>
622 </map>
623
624 <!-- RS + (') + U = ù -->
625 <map keycode="U" pressed="true">
626 <event keycode="U" unicode="0xF9" pressed="true" autorepeat="true"/>
627 </map>
628 <map keycode="U" pressed="false">
629 <event keycode="U" unicode="0xF9" pressed="false"/>
630 <next-state name="Normal"/>
631 </map>
632
633 <!-- Simple shift second time goes Upper-Case -->
634 <map keycode="Right Shift" pressed="true">
635 <next-state name="RShift-Grave"/>
636 </map>
637 <map keycode="Left Shift" pressed="true">
638 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
639 <next-state name="RShift-Grave"/>
640 </map>
641
642 <!-- Abort operation: print ` -->
643 <map keycode="Space" pressed="true">
644 <event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
645 </map>
646 <map keycode="Space" pressed="false">
647 <event keycode="Apostrophe" unicode="0x60" pressed="false"/>
648 <next-state name="Normal"/>
649 </map>
650</state>
651
652
653<!-- Grave Accentuated Lower-Case Characters: à, è... because we still press Shift and we are in Caps -->
654<state name="RShift-Caps-Grave">
655 <!-- Caps + RS + (') + A = à -->
656 <map keycode="A" pressed="true">
657 <event keycode="A" unicode="0xE0" pressed="true" autorepeat="true"/>
658 </map>
659 <map keycode="A" pressed="false">
660 <event keycode="A" unicode="0xE0" pressed="false"/>
661 <next-state name="Caps"/>
662 </map>
663
664 <!-- Caps + RS + (') + E = è -->
665 <map keycode="E" pressed="true">
666 <event keycode="E" unicode="0xE8" pressed="true" autorepeat="true"/>
667 </map>
668 <map keycode="E" pressed="false">
669 <event keycode="E" unicode="0xE8" pressed="false"/>
670 <next-state name="Caps"/>
671 </map>
672
673 <!-- Caps + RS + (') + I = ì -->
674 <map keycode="I" pressed="true">
675 <event keycode="I" unicode="0xEC" pressed="true" autorepeat="true"/>
676 </map>
677 <map keycode="I" pressed="false">
678 <event keycode="I" unicode="0xEC" pressed="false"/>
679 <next-state name="Caps"/>
680 </map>
681
682 <!-- Caps + RS + (') + O = ò -->
683 <map keycode="O" pressed="true">
684 <event keycode="O" unicode="0xF2" pressed="true" autorepeat="true"/>
685 </map>
686 <map keycode="O" pressed="false">
687 <event keycode="O" unicode="0xF2" pressed="false"/>
688 <next-state name="Caps"/>
689 </map>
690
691 <!-- Caps + RS + (') + U = ú -->
692 <map keycode="U" pressed="true">
693 <event keycode="U" unicode="0xF9" pressed="true" autorepeat="true"/>
694 </map>
695 <map keycode="U" pressed="false">
696 <event keycode="U" unicode="0xF9" pressed="false"/>
697 <next-state name="Caps"/>
698 </map>
699
700 <!-- Release shift to go upper-case -->
701 <map keycode="Right Shift" pressed="false">
702 <next-state name="RShift-Caps-Grave-Upper"/>
703 </map>
704 <map keycode="Left Shift" pressed="false">
705 <event keycode="Shift" unicode="-1" pressed="false"/>
706 <next-state name="RShift-Caps-Grave-Upper"/>
707 </map>
708
709 <!-- Abort operation: print ` -->
710 <map keycode="Space" pressed="true">
711 <event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
712 </map>
713 <map keycode="Space" pressed="false">
714 <event keycode="Apostrophe" unicode="0x60" pressed="false"/>
715 <next-state name="Caps"/>
716 </map>
717</state>
718
719
720<!-- Grave Accentuated Upper-Case Characters: À, È, Ì... because we have released RShift and we are in Caps -->
721<state name="RShift-Caps-Grave-Upper">
722 <!-- Caps + RS + (') + A = À -->
723 <map keycode="A" pressed="true">
724 <event keycode="A" unicode="0xC0" pressed="true" modifiers="Shift" autorepeat="true"/>
725 </map>
726 <map keycode="A" pressed="false">
727 <event keycode="A" unicode="0xC0" pressed="false" modifiers="Shift"/>
728 <next-state name="Caps"/>
729 </map>
730
731 <!-- Caps + RS + (') + E = È -->
732 <map keycode="E" pressed="true">
733 <event keycode="E" unicode="0xC8" pressed="true" modifiers="Shift" autorepeat="true"/>
734 </map>
735 <map keycode="E" pressed="false">
736 <event keycode="E" unicode="0xC8" pressed="false" modifiers="Shift"/>
737 <next-state name="Caps"/>
738 </map>
739
740 <!-- Caps + RS + (') + I = Ì -->
741 <map keycode="I" pressed="true">
742 <event keycode="I" unicode="0xCC" pressed="true" modifiers="Shift" autorepeat="true"/>
743 </map>
744 <map keycode="I" pressed="false">
745 <event keycode="I" unicode="0xCC" pressed="false" modifiers="Shift"/>
746 <next-state name="Caps"/>
747 </map>
748
749 <!-- Caps + RS + (') + O = Ò -->
750 <map keycode="O" pressed="true">
751 <event keycode="O" unicode="0xD2" pressed="true" modifiers="Shift" autorepeat="true"/>
752 </map>
753 <map keycode="O" pressed="false">
754 <event keycode="O" unicode="0xD2" pressed="false" modifiers="Shift"/>
755 <next-state name="Caps"/>
756 </map>
757
758 <!-- Caps + RS + (') + U = Ù -->
759 <map keycode="U" pressed="true">
760 <event keycode="U" unicode="0xD9" pressed="true" modifiers="Shift" autorepeat="true"/>
761 </map>
762 <map keycode="U" pressed="false">
763 <event keycode="U" unicode="0xD9" pressed="false" modifiers="Shift"/>
764 <next-state name="Caps"/>
765 </map>
766
767 <!-- Simple shift second time goes Lower-Case -->
768 <map keycode="Right Shift" pressed="true">
769 <next-state name="RShift-Caps-Grave"/>
770 </map>
771 <map keycode="Left Shift" pressed="true">
772 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
773 <next-state name="RShift-Caps-Grave"/>
774 </map>
775
776 <!-- Abort operation: print ` -->
777 <map keycode="Space" pressed="true">
778 <event keycode="Apostrophe" unicode="0x60" pressed="true" autorepeat="false"/>
779 </map>
780 <map keycode="Space" pressed="false">
781 <event keycode="Apostrophe" unicode="0x60" pressed="false"/>
782 <next-state name="Caps"/>
783 </map>
784</state>
785
786
787
788
789<!-- Circumflex Accentuated Upper-Case Characters: Â, Ê, Î... because we still press Shift -->
790<state name="RShift-Circumflex">
791 <!-- RS + (V) + A = Â -->
792 <map keycode="A" pressed="true">
793 <event keycode="A" unicode="0xC2" pressed="true" modifiers="Shift" autorepeat="true"/>
794 </map>
795 <map keycode="A" pressed="false">
796 <event keycode="A" unicode="0xC2" pressed="false" modifiers="Shift"/>
797 <next-state name="Normal"/>
798 </map>
799
800 <!-- RS + (V) + E = Ê -->
801 <map keycode="E" pressed="true">
802 <event keycode="E" unicode="0xCA" pressed="true" modifiers="Shift" autorepeat="true"/>
803 </map>
804 <map keycode="E" pressed="false">
805 <event keycode="E" unicode="0xCA" pressed="false" modifiers="Shift"/>
806 <next-state name="Normal"/>
807 </map>
808
809 <!-- RS + (V) + I = Î -->
810 <map keycode="I" pressed="true">
811 <event keycode="I" unicode="0xCE" pressed="true" modifiers="Shift" autorepeat="true"/>
812 </map>
813 <map keycode="I" pressed="false">
814 <event keycode="I" unicode="0xCE" pressed="false" modifiers="Shift"/>
815 <next-state name="Normal"/>
816 </map>
817
818 <!-- RS + (V) + O = Ô -->
819 <map keycode="O" pressed="true">
820 <event keycode="O" unicode="0xD4" pressed="true" modifiers="Shift" autorepeat="true"/>
821 </map>
822 <map keycode="O" pressed="false">
823 <event keycode="O" unicode="0xD4" pressed="false" modifiers="Shift"/>
824 <next-state name="Normal"/>
825 </map>
826
827 <!-- RS + (V) + U = Û -->
828 <map keycode="U" pressed="true">
829 <event keycode="U" unicode="0xDB" pressed="true" modifiers="Shift" autorepeat="true"/>
830 </map>
831 <map keycode="U" pressed="false">
832 <event keycode="U" unicode="0xDB" pressed="false" modifiers="Shift"/>
833 <next-state name="Normal"/>
834 </map>
835
836 <!-- Release shift to do lower-case -->
837 <map keycode="Right Shift" pressed="false">
838 <next-state name="RShift-Circumflex-Lower"/>
839 </map>
840 <map keycode="Left Shift" pressed="false">
841 <event keycode="Shift" unicode="-1" pressed="false"/>
842 <next-state name="RShift-Circumflex-Lower"/>
843 </map>
844
845 <!-- Abort operation: print ^ -->
846 <map keycode="Space" pressed="true">
847 <event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
848 </map>
849 <map keycode="Space" pressed="false">
850 <event keycode="V" unicode="0x5E" pressed="false"/>
851 <next-state name="Normal"/>
852 </map>
853</state>
854
855
856<!-- Circumflex Accentuated Lower-Case Characters: â, ê, î... because we have released RShift -->
857<state name="RShift-Circumflex-Lower">
858 <!-- RS + (V) + A = â -->
859 <map keycode="A" pressed="true">
860 <event keycode="A" unicode="0xE2" pressed="true" autorepeat="true"/>
861 </map>
862 <map keycode="A" pressed="false">
863 <event keycode="A" unicode="0xE2" pressed="false"/>
864 <next-state name="Normal"/>
865 </map>
866
867 <!-- RS + (V) + E = ê -->
868 <map keycode="E" pressed="true">
869 <event keycode="E" unicode="0xEA" pressed="true" autorepeat="true"/>
870 </map>
871 <map keycode="E" pressed="false">
872 <event keycode="E" unicode="0xEA" pressed="false"/>
873 <next-state name="Normal"/>
874 </map>
875
876 <!-- RS + (V) + I = î -->
877 <map keycode="I" pressed="true">
878 <event keycode="I" unicode="0xEE" pressed="true" autorepeat="true"/>
879 </map>
880 <map keycode="I" pressed="false">
881 <event keycode="I" unicode="0xEE" pressed="false"/>
882 <next-state name="Normal"/>
883 </map>
884
885 <!-- RS + (V) + O = ô -->
886 <map keycode="O" pressed="true">
887 <event keycode="O" unicode="0xF4" pressed="true" autorepeat="true"/>
888 </map>
889 <map keycode="O" pressed="false">
890 <event keycode="O" unicode="0xF4" pressed="false"/>
891 <next-state name="Normal"/>
892 </map>
893
894 <!-- RS + (V) + U = û -->
895 <map keycode="U" pressed="true">
896 <event keycode="U" unicode="0xFB" pressed="true" autorepeat="true"/>
897 </map>
898 <map keycode="U" pressed="false">
899 <event keycode="U" unicode="0xFB" pressed="false"/>
900 <next-state name="Normal"/>
901 </map>
902
903 <!-- Simple shift second time goes Upper-Case -->
904 <map keycode="Right Shift" pressed="true">
905 <next-state name="RShift-Circumflex"/>
906 </map>
907 <map keycode="Left Shift" pressed="true">
908 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
909 <next-state name="RShift-Circumflex"/>
910 </map>
911
912 <!-- Abort operation: print ^ -->
913 <map keycode="Space" pressed="true">
914 <event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
915 </map>
916 <map keycode="Space" pressed="false">
917 <event keycode="V" unicode="0x5E" pressed="false"/>
918 <next-state name="Normal"/>
919 </map>
920</state>
921
922
923<!-- Circumflex Accentuated Lower-Case Characters: â, ê... because we still press Shift and we are in Caps -->
924<state name="RShift-Caps-Circumflex">
925 <!-- Caps + RS + (V) + A = â -->
926 <map keycode="A" pressed="true">
927 <event keycode="A" unicode="0xE2" pressed="true" autorepeat="true"/>
928 </map>
929 <map keycode="A" pressed="false">
930 <event keycode="A" unicode="0xE2" pressed="false"/>
931 <next-state name="Caps"/>
932 </map>
933
934 <!-- Caps + RS + (V) + E = ê -->
935 <map keycode="E" pressed="true">
936 <event keycode="E" unicode="0xEA" pressed="true" autorepeat="true"/>
937 </map>
938 <map keycode="E" pressed="false">
939 <event keycode="E" unicode="0xEA" pressed="false"/>
940 <next-state name="Caps"/>
941 </map>
942
943 <!-- Caps + RS + (V) + I = î -->
944 <map keycode="I" pressed="true">
945 <event keycode="I" unicode="0xEE" pressed="true" autorepeat="true"/>
946 </map>
947 <map keycode="I" pressed="false">
948 <event keycode="I" unicode="0xEE" pressed="false"/>
949 <next-state name="Caps"/>
950 </map>
951
952 <!-- Caps + RS + (V) + O = ô -->
953 <map keycode="O" pressed="true">
954 <event keycode="O" unicode="0xF4" pressed="true" autorepeat="true"/>
955 </map>
956 <map keycode="O" pressed="false">
957 <event keycode="O" unicode="0xF4" pressed="false"/>
958 <next-state name="Caps"/>
959 </map>
960
961 <!-- Caps + RS + (V) + U = û -->
962 <map keycode="U" pressed="true">
963 <event keycode="U" unicode="0xFB" pressed="true" autorepeat="true"/>
964 </map>
965 <map keycode="U" pressed="false">
966 <event keycode="U" unicode="0xFB" pressed="false"/>
967 <next-state name="Caps"/>
968 </map>
969
970 <!-- Release shift to go upper-case -->
971 <map keycode="Right Shift" pressed="false">
972 <next-state name="RShift-Caps-Circumflex-Upper"/>
973 </map>
974 <map keycode="Left Shift" pressed="false">
975 <event keycode="Shift" unicode="-1" pressed="false"/>
976 <next-state name="RShift-Caps-Circumflex-Upper"/>
977 </map>
978
979 <!-- Abort operation: print ^ -->
980 <map keycode="Space" pressed="true">
981 <event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
982 </map>
983 <map keycode="Space" pressed="false">
984 <event keycode="V" unicode="0x5E" pressed="false"/>
985 <next-state name="Caps"/>
986 </map>
987</state>
988
989
990<!-- Circumflex Accentuated Upper-Case Characters: Â, Ê, Î... because we have released RShift and we are in Caps -->
991<state name="RShift-Caps-Circumflex-Upper">
992 <!-- Caps + RS + (V) + A = Â -->
993 <map keycode="A" pressed="true">
994 <event keycode="A" unicode="0xC2" pressed="true" modifiers="Shift" autorepeat="true"/>
995 </map>
996 <map keycode="A" pressed="false">
997 <event keycode="A" unicode="0xC2" pressed="false" modifiers="Shift"/>
998 <next-state name="Caps"/>
999 </map>
1000
1001 <!-- Caps + RS + (V) + E = Ê -->
1002 <map keycode="E" pressed="true">
1003 <event keycode="E" unicode="0xCA" pressed="true" modifiers="Shift" autorepeat="true"/>
1004 </map>
1005 <map keycode="E" pressed="false">
1006 <event keycode="E" unicode="0xCA" pressed="false" modifiers="Shift"/>
1007 <next-state name="Caps"/>
1008 </map>
1009
1010 <!-- Caps + RS + (V) + I = Î -->
1011 <map keycode="I" pressed="true">
1012 <event keycode="I" unicode="0xCE" pressed="true" modifiers="Shift" autorepeat="true"/>
1013 </map>
1014 <map keycode="I" pressed="false">
1015 <event keycode="I" unicode="0xCE" pressed="false" modifiers="Shift"/>
1016 <next-state name="Caps"/>
1017 </map>
1018
1019 <!-- Caps + RS + (V) + O = Ô -->
1020 <map keycode="O" pressed="true">
1021 <event keycode="O" unicode="0xD4" pressed="true" modifiers="Shift" autorepeat="true"/>
1022 </map>
1023 <map keycode="O" pressed="false">
1024 <event keycode="O" unicode="0xD4" pressed="false" modifiers="Shift"/>
1025 <next-state name="Caps"/>
1026 </map>
1027
1028 <!-- Caps + RS + (V) + U = Û -->
1029 <map keycode="U" pressed="true">
1030 <event keycode="U" unicode="0xDB" pressed="true" modifiers="Shift" autorepeat="true"/>
1031 </map>
1032 <map keycode="U" pressed="false">
1033 <event keycode="U" unicode="0xDB" pressed="false" modifiers="Shift"/>
1034 <next-state name="Caps"/>
1035 </map>
1036
1037 <!-- Simple shift second time goes Lower-Case -->
1038 <map keycode="Right Shift" pressed="true">
1039 <next-state name="RShift-Caps-Circumflex"/>
1040 </map>
1041 <map keycode="Left Shift" pressed="true">
1042 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1043 <next-state name="RShift-Caps-Circumflex"/>
1044 </map>
1045
1046 <!-- Abort operation: print ^ -->
1047 <map keycode="Space" pressed="true">
1048 <event keycode="V" unicode="0x5E" pressed="true" autorepeat="false"/>
1049 </map>
1050 <map keycode="Space" pressed="false">
1051 <event keycode="V" unicode="0x5E" pressed="false"/>
1052 <next-state name="Caps"/>
1053 </map>
1054</state>
1055
1056
1057
1058
1059<!-- Cedilla Upper-Case Characters: Ç... because we still press Shift -->
1060<state name="RShift-Cedilla">
1061 <!-- RS + (,) + C = Ç -->
1062 <map keycode="C" pressed="true">
1063 <event keycode="C" unicode="0xC7" pressed="true" modifiers="Shift" autorepeat="true"/>
1064 </map>
1065 <map keycode="C" pressed="false">
1066 <event keycode="C" unicode="0xC7" pressed="false" modifiers="Shift"/>
1067 <next-state name="Normal"/>
1068 </map>
1069
1070 <!-- Release shift to do lower-case -->
1071 <map keycode="Right Shift" pressed="false">
1072 <next-state name="RShift-Cedilla-Lower"/>
1073 </map>
1074 <map keycode="Left Shift" pressed="false">
1075 <event keycode="Shift" unicode="-1" pressed="false"/>
1076 <next-state name="RShift-Cedilla-Lower"/>
1077 </map>
1078
1079 <!-- Abort operation: print ¸ -->
1080 <map keycode="Space" pressed="true">
1081 <event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
1082 </map>
1083 <map keycode="Space" pressed="false">
1084 <event keycode="Comma" unicode="0xB8" pressed="false"/>
1085 <next-state name="Normal"/>
1086 </map>
1087</state>
1088
1089
1090<!-- Cedilla Lower-Case Characters: ç... because we have released RShift -->
1091<state name="RShift-Cedilla-Lower">
1092 <!-- RS + (,) + C = ç -->
1093 <map keycode="C" pressed="true">
1094 <event keycode="C" unicode="0xE7" pressed="true" autorepeat="true"/>
1095 </map>
1096 <map keycode="C" pressed="false">
1097 <event keycode="C" unicode="0xE7" pressed="false"/>
1098 <next-state name="Normal"/>
1099 </map>
1100
1101 <!-- Simple shift second time goes Upper-Case -->
1102 <map keycode="Right Shift" pressed="true">
1103 <next-state name="RShift-Cedilla"/>
1104 </map>
1105 <map keycode="Left Shift" pressed="true">
1106 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1107 <next-state name="RShift-Cedilla"/>
1108 </map>
1109
1110 <!-- Abort operation: print ¸ -->
1111 <map keycode="Space" pressed="true">
1112 <event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
1113 </map>
1114 <map keycode="Space" pressed="false">
1115 <event keycode="Comma" unicode="0xB8" pressed="false"/>
1116 <next-state name="Normal"/>
1117 </map>
1118</state>
1119
1120
1121<!-- Cedilla Lower-Case Characters: ç... because we still press Shift and we are in Caps -->
1122<state name="RShift-Caps-Cedilla">
1123 <!-- Caps + RS + (,) + C = ç -->
1124 <map keycode="C" pressed="true">
1125 <event keycode="C" unicode="0xE7" pressed="true" autorepeat="true"/>
1126 </map>
1127 <map keycode="C" pressed="false">
1128 <event keycode="C" unicode="0xE7" pressed="false"/>
1129 <next-state name="Caps"/>
1130 </map>
1131
1132 <!-- Release shift to go upper-case -->
1133 <map keycode="Right Shift" pressed="false">
1134 <next-state name="RShift-Caps-Cedilla-Upper"/>
1135 </map>
1136 <map keycode="Left Shift" pressed="false">
1137 <event keycode="Shift" unicode="-1" pressed="false"/>
1138 <next-state name="RShift-Caps-Cedilla-Upper"/>
1139 </map>
1140
1141 <!-- Abort operation: print ¸ -->
1142 <map keycode="Space" pressed="true">
1143 <event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
1144 </map>
1145 <map keycode="Space" pressed="false">
1146 <event keycode="Comma" unicode="0xB8" pressed="false"/>
1147 <next-state name="Caps"/>
1148 </map>
1149</state>
1150
1151
1152<!-- Cedilla Upper-Case Characters: Ç... because we have released RShift but we are in Caps -->
1153<state name="RShift-Caps-Cedilla-Upper">
1154 <!-- Caps + RS + (,) + C = Ç -->
1155 <map keycode="C" pressed="true">
1156 <event keycode="C" unicode="0xC7" pressed="true" modifiers="Shift" autorepeat="true"/>
1157 </map>
1158 <map keycode="C" pressed="false">
1159 <event keycode="C" unicode="0xC7" pressed="false" modifiers="Shift"/>
1160 <next-state name="Caps"/>
1161 </map>
1162
1163 <!-- Simple shift second time goes Lower-Case -->
1164 <map keycode="Right Shift" pressed="true">
1165 <next-state name="RShift-Caps-Cedilla"/>
1166 </map>
1167 <map keycode="Left Shift" pressed="true">
1168 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1169 <next-state name="RShift-Caps-Cedilla"/>
1170 </map>
1171
1172 <!-- Abort operation: print ¸ -->
1173 <map keycode="Space" pressed="true">
1174 <event keycode="Comma" unicode="0xB8" pressed="true" autorepeat="false"/>
1175 </map>
1176 <map keycode="Space" pressed="false">
1177 <event keycode="Comma" unicode="0xB8" pressed="false"/>
1178 <next-state name="Caps"/>
1179 </map>
1180</state>
1181
1182
1183
1184
1185<!-- Ligatured Upper-Case Characters: Æ, Œ ... because we still press Shift -->
1186<state name="RShift-Ligature">
1187 <!-- RS + (J) + A = Æ -->
1188 <map keycode="A" pressed="true">
1189 <event keycode="A" unicode="0xC6" pressed="true" modifiers="Shift" autorepeat="true"/>
1190 </map>
1191 <map keycode="A" pressed="false">
1192 <event keycode="A" unicode="0xC6" pressed="false" modifiers="Shift"/>
1193 <next-state name="Normal"/>
1194 </map>
1195
1196 <!-- RS + (J) + O = Œ -->
1197 <map keycode="O" pressed="true">
1198 <event keycode="O" unicode="0x152" pressed="true" modifiers="Shift" autorepeat="true"/>
1199 </map>
1200 <map keycode="O" pressed="false">
1201 <event keycode="O" unicode="0x152" pressed="false" modifiers="Shift"/>
1202 <next-state name="Normal"/>
1203 </map>
1204
1205 <!-- Release shift to do lower-case -->
1206 <map keycode="Right Shift" pressed="false">
1207 <next-state name="RShift-Ligature-Lower"/>
1208 </map>
1209 <map keycode="Left Shift" pressed="false">
1210 <event keycode="Shift" unicode="-1" pressed="false"/>
1211 <next-state name="RShift-Ligature-Lower"/>
1212 </map>
1213
1214 <!-- Abort operation: print J -->
1215 <map keycode="Space" pressed="true">
1216 <event keycode="J" unicode="0x4A" pressed="true" autorepeat="false"/>
1217 </map>
1218 <map keycode="Space" pressed="false">
1219 <event keycode="J" unicode="0x4A" pressed="false"/>
1220 <next-state name="Normal"/>
1221 </map>
1222</state>
1223
1224
1225<!-- Ligatured Lower-Case Characters: æ, œ... because we have released RShift -->
1226<state name="RShift-Ligature-Lower">
1227 <!-- RS + (J) + A = æ -->
1228 <map keycode="A" pressed="true">
1229 <event keycode="A" unicode="0xE6" pressed="true" autorepeat="true"/>
1230 </map>
1231 <map keycode="A" pressed="false">
1232 <event keycode="A" unicode="0xE6" pressed="false"/>
1233 <next-state name="Normal"/>
1234 </map>
1235
1236 <!-- RS + (J) + O = œ -->
1237 <map keycode="O" pressed="true">
1238 <event keycode="O" unicode="0x153" pressed="true" autorepeat="true"/>
1239 </map>
1240 <map keycode="O" pressed="false">
1241 <event keycode="O" unicode="0x153" pressed="false"/>
1242 <next-state name="Normal"/>
1243 </map>
1244
1245 <!-- Simple shift second time goes Upper-Case -->
1246 <map keycode="Right Shift" pressed="true">
1247 <next-state name="RShift-Ligature"/>
1248 </map>
1249 <map keycode="Left Shift" pressed="true">
1250 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1251 <next-state name="RShift-Ligature"/>
1252 </map>
1253
1254 <!-- Abort operation: print j -->
1255 <map keycode="Space" pressed="true">
1256 <event keycode="J" unicode="0x6A" pressed="true" autorepeat="false"/>
1257 </map>
1258 <map keycode="Space" pressed="false">
1259 <event keycode="J" unicode="0x6A" pressed="false"/>
1260 <next-state name="Normal"/>
1261 </map>
1262</state>
1263
1264
1265<!-- Ligatured Lower-Case Characters: æ, œ... because we still press Shift and we are in Caps -->
1266<state name="RShift-Caps-Ligature">
1267 <!-- Caps + RS + (J) + A = æ -->
1268 <map keycode="A" pressed="true">
1269 <event keycode="A" unicode="0xE6" pressed="true" autorepeat="true"/>
1270 </map>
1271 <map keycode="A" pressed="false">
1272 <event keycode="A" unicode="0xE6" pressed="false"/>
1273 <next-state name="Caps"/>
1274 </map>
1275
1276 <!-- Caps + RS + (J) + O = œ -->
1277 <map keycode="O" pressed="true">
1278 <event keycode="O" unicode="0x153" pressed="true" autorepeat="true"/>
1279 </map>
1280 <map keycode="O" pressed="false">
1281 <event keycode="O" unicode="0x153" pressed="false"/>
1282 <next-state name="Caps"/>
1283 </map>
1284
1285 <!-- Release shift to go upper-case -->
1286 <map keycode="Right Shift" pressed="false">
1287 <next-state name="RShift-Caps-Ligature-Upper"/>
1288 </map>
1289 <map keycode="Left Shift" pressed="false">
1290 <event keycode="Shift" unicode="-1" pressed="false"/>
1291 <next-state name="RShift-Caps-Ligature-Upper"/>
1292 </map>
1293
1294 <!-- Abort operation: print j -->
1295 <map keycode="Space" pressed="true">
1296 <event keycode="J" unicode="0x6A" pressed="true" autorepeat="false"/>
1297 </map>
1298 <map keycode="Space" pressed="false">
1299 <event keycode="J" unicode="0x6A" pressed="false"/>
1300 <next-state name="Caps"/>
1301 </map>
1302</state>
1303
1304
1305<!-- Ligatured Upper-Case Characters: Æ, Œ... because we have released RShift but we are in Caps -->
1306<state name="RShift-Caps-Ligature-Upper">
1307 <!-- Caps + RS + (J) + A = Æ -->
1308 <map keycode="A" pressed="true">
1309 <event keycode="A" unicode="0xC6" pressed="true" modifiers="Shift" autorepeat="true"/>
1310 </map>
1311 <map keycode="A" pressed="false">
1312 <event keycode="A" unicode="0xC6" pressed="false" modifiers="Shift"/>
1313 <next-state name="Caps"/>
1314 </map>
1315
1316 <!-- Caps + RS + (J) + O = Œ -->
1317 <map keycode="O" pressed="true">
1318 <event keycode="O" unicode="0x152" pressed="true" modifiers="Shift" autorepeat="true"/>
1319 </map>
1320 <map keycode="O" pressed="false">
1321 <event keycode="O" unicode="0x152" pressed="false" modifiers="Shift"/>
1322 <next-state name="Caps"/>
1323 </map>
1324
1325 <!-- Simple shift second time goes Lower-Case -->
1326 <map keycode="Right Shift" pressed="true">
1327 <next-state name="RShift-Caps-Ligature"/>
1328 </map>
1329 <map keycode="Left Shift" pressed="true">
1330 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1331 <next-state name="RShift-Caps-Ligature"/>
1332 </map>
1333
1334 <!-- Abort operation: print J -->
1335 <map keycode="Space" pressed="true">
1336 <event keycode="J" unicode="0x4A" pressed="true" autorepeat="false"/>
1337 </map>
1338 <map keycode="Space" pressed="false">
1339 <event keycode="J" unicode="0x4A" pressed="false"/>
1340 <next-state name="Caps"/>
1341 </map>
1342</state>
1343
1344
1345
1346
1347<!-- Trema Accentuated Upper-Case Characters: Ä, Ë... because we still press Shift -->
1348<state name="RShift-Trema">
1349 <!-- RS + (B) + A = Ä -->
1350 <map keycode="A" pressed="true">
1351 <event keycode="A" unicode="0xC4" pressed="true" modifiers="Shift" autorepeat="true"/>
1352 </map>
1353 <map keycode="A" pressed="false">
1354 <event keycode="A" unicode="0xC4" pressed="false" modifiers="Shift"/>
1355 <next-state name="Normal"/>
1356 </map>
1357
1358 <!-- RS + (B) + E = Ë -->
1359 <map keycode="E" pressed="true">
1360 <event keycode="E" unicode="0xCB" pressed="true" modifiers="Shift" autorepeat="true"/>
1361 </map>
1362 <map keycode="E" pressed="false">
1363 <event keycode="E" unicode="0xCB" pressed="false" modifiers="Shift"/>
1364 <next-state name="Normal"/>
1365 </map>
1366
1367 <!-- RS + (B) + I = Ï -->
1368 <map keycode="I" pressed="true">
1369 <event keycode="I" unicode="0xCF" pressed="true" modifiers="Shift" autorepeat="true"/>
1370 </map>
1371 <map keycode="I" pressed="false">
1372 <event keycode="I" unicode="0xCF" pressed="false" modifiers="Shift"/>
1373 <next-state name="Normal"/>
1374 </map>
1375
1376 <!-- RS + (B) + O = Ö -->
1377 <map keycode="O" pressed="true">
1378 <event keycode="O" unicode="0xD6" pressed="true" modifiers="Shift" autorepeat="true"/>
1379 </map>
1380 <map keycode="O" pressed="false">
1381 <event keycode="O" unicode="0xD6" pressed="false" modifiers="Shift"/>
1382 <next-state name="Normal"/>
1383 </map>
1384
1385 <!-- RS + (B) + U = Ü -->
1386 <map keycode="U" pressed="true">
1387 <event keycode="U" unicode="0xDC" pressed="true" modifiers="Shift" autorepeat="true"/>
1388 </map>
1389 <map keycode="U" pressed="false">
1390 <event keycode="U" unicode="0xDC" pressed="false" modifiers="Shift"/>
1391 <next-state name="Normal"/>
1392 </map>
1393
1394 <!-- Release shift to do lower-case -->
1395 <map keycode="Right Shift" pressed="false">
1396 <next-state name="RShift-Trema-Lower"/>
1397 </map>
1398 <map keycode="Left Shift" pressed="false">
1399 <event keycode="Shift" unicode="-1" pressed="false"/>
1400 <next-state name="RShift-Trema-Lower"/>
1401 </map>
1402
1403 <!-- Abort operation: print ¨ -->
1404 <map keycode="Space" pressed="true">
1405 <event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
1406 </map>
1407 <map keycode="Space" pressed="false">
1408 <event keycode="B" unicode="0xA8" pressed="false"/>
1409 <next-state name="Normal"/>
1410 </map>
1411</state>
1412
1413
1414<!-- Trema Accentuated Lower-Case Characters: ä, ë... because we have released RShift -->
1415<state name="RShift-Trema-Lower">
1416 <!-- RS + (B) + A = ä -->
1417 <map keycode="A" pressed="true">
1418 <event keycode="A" unicode="0xE4" pressed="true" autorepeat="true"/>
1419 </map>
1420 <map keycode="A" pressed="false">
1421 <event keycode="A" unicode="0xE4" pressed="false"/>
1422 <next-state name="Normal"/>
1423 </map>
1424
1425 <!-- RS + (B) + E = ë -->
1426 <map keycode="E" pressed="true">
1427 <event keycode="E" unicode="0xEB" pressed="true" autorepeat="true"/>
1428 </map>
1429 <map keycode="E" pressed="false">
1430 <event keycode="E" unicode="0xEB" pressed="false"/>
1431 <next-state name="Normal"/>
1432 </map>
1433
1434 <!-- RS + (B) + I = ï -->
1435 <map keycode="I" pressed="true">
1436 <event keycode="I" unicode="0xEF" pressed="true" autorepeat="true"/>
1437 </map>
1438 <map keycode="I" pressed="false">
1439 <event keycode="I" unicode="0xEF" pressed="false"/>
1440 <next-state name="Normal"/>
1441 </map>
1442
1443 <!-- RS + (B) + O = ö -->
1444 <map keycode="O" pressed="true">
1445 <event keycode="O" unicode="0xF6" pressed="true" autorepeat="true"/>
1446 </map>
1447 <map keycode="O" pressed="false">
1448 <event keycode="O" unicode="0xF6" pressed="false"/>
1449 <next-state name="Normal"/>
1450 </map>
1451
1452 <!-- RS + (B) + U = ü -->
1453 <map keycode="U" pressed="true">
1454 <event keycode="U" unicode="0xFC" pressed="true" autorepeat="true"/>
1455 </map>
1456 <map keycode="U" pressed="false">
1457 <event keycode="U" unicode="0xFC" pressed="false"/>
1458 <next-state name="Normal"/>
1459 </map>
1460
1461 <!-- RS + (B) + Y = ÿ -->
1462 <map keycode="Y" pressed="true">
1463 <event keycode="Y" unicode="0xFF" pressed="true" autorepeat="true"/>
1464 </map>
1465 <map keycode="Y" pressed="false">
1466 <event keycode="Y" unicode="0xFF" pressed="false"/>
1467 <next-state name="Normal"/>
1468 </map>
1469
1470 <!-- Simple shift second time goes Upper-Case -->
1471 <map keycode="Right Shift" pressed="true">
1472 <next-state name="RShift-Trema"/>
1473 </map>
1474 <map keycode="Left Shift" pressed="true">
1475 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1476 <next-state name="RShift-Trema"/>
1477 </map>
1478
1479 <!-- Abort operation: print ¨ -->
1480 <map keycode="Space" pressed="true">
1481 <event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
1482 </map>
1483 <map keycode="Space" pressed="false">
1484 <event keycode="B" unicode="0xA8" pressed="false"/>
1485 <next-state name="Normal"/>
1486 </map>
1487</state>
1488
1489
1490<!-- Trema Accentuated Lower-Case Characters: ä, ë... because we still press Shift and we are in Caps -->
1491<state name="RShift-Caps-Trema">
1492 <!-- Caps + RS + (B) + A = ä -->
1493 <map keycode="A" pressed="true">
1494 <event keycode="A" unicode="0xE4" pressed="true" autorepeat="true"/>
1495 </map>
1496 <map keycode="A" pressed="false">
1497 <event keycode="A" unicode="0xE4" pressed="false"/>
1498 <next-state name="Caps"/>
1499 </map>
1500
1501 <!-- Caps + RS + (B) + E = ë -->
1502 <map keycode="E" pressed="true">
1503 <event keycode="E" unicode="0xEB" pressed="true" autorepeat="true"/>
1504 </map>
1505 <map keycode="E" pressed="false">
1506 <event keycode="E" unicode="0xEB" pressed="false"/>
1507 <next-state name="Caps"/>
1508 </map>
1509
1510 <!-- Caps + RS + (B) + I = ï -->
1511 <map keycode="I" pressed="true">
1512 <event keycode="I" unicode="0xEF" pressed="true" autorepeat="true"/>
1513 </map>
1514 <map keycode="I" pressed="false">
1515 <event keycode="I" unicode="0xEF" pressed="false"/>
1516 <next-state name="Caps"/>
1517 </map>
1518
1519 <!-- Caps + RS + (B) + O = ö -->
1520 <map keycode="O" pressed="true">
1521 <event keycode="O" unicode="0xF6" pressed="true" autorepeat="true"/>
1522 </map>
1523 <map keycode="O" pressed="false">
1524 <event keycode="O" unicode="0xF6" pressed="false"/>
1525 <next-state name="Caps"/>
1526 </map>
1527
1528 <!-- Caps + RS + (B) + U = ü -->
1529 <map keycode="U" pressed="true">
1530 <event keycode="U" unicode="0xFC" pressed="true" autorepeat="true"/>
1531 </map>
1532 <map keycode="U" pressed="false">
1533 <event keycode="U" unicode="0xFC" pressed="false"/>
1534 <next-state name="Caps"/>
1535 </map>
1536
1537 <!-- Caps + RS + (B) + Y = ÿ -->
1538 <map keycode="Y" pressed="true">
1539 <event keycode="Y" unicode="0xFF" pressed="true" autorepeat="true"/>
1540 </map>
1541 <map keycode="Y" pressed="false">
1542 <event keycode="Y" unicode="0xFF" pressed="false"/>
1543 <next-state name="Caps"/>
1544 </map>
1545
1546 <!-- Release shift to go upper-case -->
1547 <map keycode="Right Shift" pressed="false">
1548 <next-state name="RShift-Caps-Trema-Upper"/>
1549 </map>
1550 <map keycode="Left Shift" pressed="false">
1551 <event keycode="Shift" unicode="-1" pressed="false"/>
1552 <next-state name="RShift-Caps-Trema-Upper"/>
1553 </map>
1554
1555 <!-- Abort operation: print ¨ -->
1556 <map keycode="Space" pressed="true">
1557 <event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
1558 </map>
1559 <map keycode="Space" pressed="false">
1560 <event keycode="B" unicode="0xA8" pressed="false"/>
1561 <next-state name="Caps"/>
1562 </map>
1563</state>
1564
1565
1566<!-- Trema Accentuated Upper-Case Characters: Ä, Ë... because we have released RShift but we are in Caps -->
1567<state name="RShift-Caps-Trema-Upper">
1568 <!-- Caps + RS + (B) + A = Ä -->
1569 <map keycode="A" pressed="true">
1570 <event keycode="A" unicode="0xC4" pressed="true" modifiers="Shift" autorepeat="true"/>
1571 </map>
1572 <map keycode="A" pressed="false">
1573 <event keycode="A" unicode="0xC4" pressed="false" modifiers="Shift"/>
1574 <next-state name="Caps"/>
1575 </map>
1576
1577 <!-- Caps + RS + (B) + E = Ë -->
1578 <map keycode="E" pressed="true">
1579 <event keycode="E" unicode="0xCB" pressed="true" modifiers="Shift" autorepeat="true"/>
1580 </map>
1581 <map keycode="E" pressed="false">
1582 <event keycode="E" unicode="0xCB" pressed="false" modifiers="Shift"/>
1583 <next-state name="Caps"/>
1584 </map>
1585
1586 <!-- Caps + RS + (B) + I = Ï -->
1587 <map keycode="I" pressed="true">
1588 <event keycode="I" unicode="0xCF" pressed="true" modifiers="Shift" autorepeat="true"/>
1589 </map>
1590 <map keycode="I" pressed="false">
1591 <event keycode="I" unicode="0xCF" pressed="false" modifiers="Shift"/>
1592 <next-state name="Caps"/>
1593 </map>
1594
1595 <!-- Caps + RS + (B) + O = Ö -->
1596 <map keycode="O" pressed="true">
1597 <event keycode="O" unicode="0xD6" pressed="true" modifiers="Shift" autorepeat="true"/>
1598 </map>
1599 <map keycode="O" pressed="false">
1600 <event keycode="O" unicode="0xD6" pressed="false" modifiers="Shift"/>
1601 <next-state name="Caps"/>
1602 </map>
1603
1604 <!-- Caps + RS + (B) + U = Ü -->
1605 <map keycode="U" pressed="true">
1606 <event keycode="U" unicode="0xDC" pressed="true" modifiers="Shift" autorepeat="true"/>
1607 </map>
1608 <map keycode="U" pressed="false">
1609 <event keycode="U" unicode="0xDC" pressed="false" modifiers="Shift"/>
1610 <next-state name="Caps"/>
1611 </map>
1612
1613 <!-- Simple shift second time goes Lower-Case -->
1614 <map keycode="Right Shift" pressed="true">
1615 <next-state name="RShift-Caps-Trema"/>
1616 </map>
1617 <map keycode="Left Shift" pressed="true">
1618 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1619 <next-state name="RShift-Caps-Trema"/>
1620 </map>
1621
1622 <!-- Abort operation: print ¨ -->
1623 <map keycode="Space" pressed="true">
1624 <event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
1625 </map>
1626 <map keycode="Space" pressed="false">
1627 <event keycode="B" unicode="0xA8" pressed="false"/>
1628 <next-state name="Caps"/>
1629 </map>
1630</state>
1631
1632
1633
1634
1635<!-- Tilde Upper-Case Characters: Ã, Ñ... because we still press Shift -->
1636<state name="RShift-Tilde">
1637 <!-- RS + (N) + A = Ã -->
1638 <map keycode="A" pressed="true">
1639 <event keycode="A" unicode="0xC3" pressed="true" modifiers="Shift" autorepeat="true"/>
1640 </map>
1641 <map keycode="A" pressed="false">
1642 <event keycode="A" unicode="0xC3" pressed="false" modifiers="Shift"/>
1643 <next-state name="Normal"/>
1644 </map>
1645
1646 <!-- RS + (N) + N = Ñ -->
1647 <map keycode="N" pressed="true">
1648 <event keycode="N" unicode="0xD1" pressed="true" modifiers="Shift" autorepeat="true"/>
1649 </map>
1650 <map keycode="N" pressed="false">
1651 <event keycode="N" unicode="0xD1" pressed="false" modifiers="Shift"/>
1652 <next-state name="Normal"/>
1653 </map>
1654
1655 <!-- RS + (N) + O = Õ -->
1656 <map keycode="O" pressed="true">
1657 <event keycode="O" unicode="0xD5" pressed="true" modifiers="Shift" autorepeat="true"/>
1658 </map>
1659 <map keycode="O" pressed="false">
1660 <event keycode="O" unicode="0xD5" pressed="false" modifiers="Shift"/>
1661 <next-state name="Normal"/>
1662 </map>
1663
1664 <!-- Release shift to do lower-case -->
1665 <map keycode="Right Shift" pressed="false">
1666 <next-state name="RShift-Tilde-Lower"/>
1667 </map>
1668 <map keycode="Left Shift" pressed="false">
1669 <event keycode="Shift" unicode="-1" pressed="false"/>
1670 <next-state name="RShift-Tilde-Lower"/>
1671 </map>
1672
1673 <!-- Abort operation: print ~ -->
1674 <map keycode="Space" pressed="true">
1675 <event keycode="N" unicode="0x7E" pressed="true" autorepeat="false"/>
1676 </map>
1677 <map keycode="Space" pressed="false">
1678 <event keycode="N" unicode="0x7E" pressed="false"/>
1679 <next-state name="Normal"/>
1680 </map>
1681</state>
1682
1683
1684<!-- Tilde Lower-Case Characters: ã, ñ, õ... because we have released RShift -->
1685<state name="RShift-Tilde-Lower">
1686 <!-- RS + (N) + A = ã -->
1687 <map keycode="A" pressed="true">
1688 <event keycode="A" unicode="0xE3" pressed="true" autorepeat="true"/>
1689 </map>
1690 <map keycode="A" pressed="false">
1691 <event keycode="A" unicode="0xE3" pressed="false"/>
1692 <next-state name="Normal"/>
1693 </map>
1694
1695 <!-- RS + (N) + N = ñ -->
1696 <map keycode="N" pressed="true">
1697 <event keycode="N" unicode="0xF1" pressed="true" autorepeat="true"/>
1698 </map>
1699 <map keycode="N" pressed="false">
1700 <event keycode="N" unicode="0xF1" pressed="false"/>
1701 <next-state name="Normal"/>
1702 </map>
1703
1704 <!-- RS + (N) + O = õ -->
1705 <map keycode="O" pressed="true">
1706 <event keycode="O" unicode="0xF5" pressed="true" autorepeat="true"/>
1707 </map>
1708 <map keycode="O" pressed="false">
1709 <event keycode="O" unicode="0xF5" pressed="false"/>
1710 <next-state name="Normal"/>
1711 </map>
1712
1713 <!-- Simple shift second time goes Upper-Case -->
1714 <map keycode="Right Shift" pressed="true">
1715 <next-state name="RShift-Tilde"/>
1716 </map>
1717 <map keycode="Left Shift" pressed="true">
1718 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1719 <next-state name="RShift-Tilde"/>
1720 </map>
1721
1722 <!-- Abort operation: print ¨ -->
1723 <map keycode="Space" pressed="true">
1724 <event keycode="B" unicode="0xA8" pressed="true" autorepeat="false"/>
1725 </map>
1726 <map keycode="Space" pressed="false">
1727 <event keycode="B" unicode="0xA8" pressed="false"/>
1728 <next-state name="Normal"/>
1729 </map>
1730</state>
1731
1732
1733<!-- Tilde Lower-Case Characters: ã, ñ, õ... because we still press Shift and we are in Caps -->
1734<state name="RShift-Caps-Tilde">
1735 <!-- Caps + RS + (N) + A = ã -->
1736 <map keycode="A" pressed="true">
1737 <event keycode="A" unicode="0xE3" pressed="true" autorepeat="true"/>
1738 </map>
1739 <map keycode="A" pressed="false">
1740 <event keycode="A" unicode="0xE3" pressed="false"/>
1741 <next-state name="Caps"/>
1742 </map>
1743
1744 <!-- Caps + RS + (N) + N = ñ -->
1745 <map keycode="N" pressed="true">
1746 <event keycode="N" unicode="0xF1" pressed="true" autorepeat="true"/>
1747 </map>
1748 <map keycode="N" pressed="false">
1749 <event keycode="N" unicode="0xF1" pressed="false"/>
1750 <next-state name="Caps"/>
1751 </map>
1752
1753 <!-- Caps + RS + (N) + O = õ -->
1754 <map keycode="O" pressed="true">
1755 <event keycode="O" unicode="0xF5" pressed="true" autorepeat="true"/>
1756 </map>
1757 <map keycode="O" pressed="false">
1758 <event keycode="O" unicode="0xF5" pressed="false"/>
1759 <next-state name="Caps"/>
1760 </map>
1761
1762 <!-- Release shift to go upper-case -->
1763 <map keycode="Right Shift" pressed="false">
1764 <next-state name="RShift-Caps-Tilde-Upper"/>
1765 </map>
1766 <map keycode="Left Shift" pressed="false">
1767 <event keycode="Shift" unicode="-1" pressed="false"/>
1768 <next-state name="RShift-Caps-Tilde-Upper"/>
1769 </map>
1770
1771 <!-- Abort operation: print ~ -->
1772 <map keycode="Space" pressed="true">
1773 <event keycode="N" unicode="0x7E" pressed="true" autorepeat="false"/>
1774 </map>
1775 <map keycode="Space" pressed="false">
1776 <event keycode="N" unicode="0x7E" pressed="false"/>
1777 <next-state name="Caps"/>
1778 </map>
1779</state>
1780
1781
1782<!-- Tilde Upper-Case Characters: Ã, Ñ, Õ... because we have released RShift but we are in Caps -->
1783<state name="RShift-Caps-Tilde-Upper">
1784 <!-- Caps + RS + (N) + A = Ã -->
1785 <map keycode="A" pressed="true">
1786 <event keycode="A" unicode="0xC3" pressed="true" modifiers="Shift" autorepeat="true"/>
1787 </map>
1788 <map keycode="A" pressed="false">
1789 <event keycode="A" unicode="0xC3" pressed="false" modifiers="Shift"/>
1790 <next-state name="Caps"/>
1791 </map>
1792
1793 <!-- Caps + RS + (N) + N = Ñ -->
1794 <map keycode="N" pressed="true">
1795 <event keycode="N" unicode="0xD1" pressed="true" modifiers="Shift" autorepeat="true"/>
1796 </map>
1797 <map keycode="N" pressed="false">
1798 <event keycode="N" unicode="0xD1" pressed="false" modifiers="Shift"/>
1799 <next-state name="Caps"/>
1800 </map>
1801
1802 <!-- Caps + RS + (N) + O = Õ -->
1803 <map keycode="O" pressed="true">
1804 <event keycode="O" unicode="0xD5" pressed="true" modifiers="Shift" autorepeat="true"/>
1805 </map>
1806 <map keycode="O" pressed="false">
1807 <event keycode="O" unicode="0xD5" pressed="false" modifiers="Shift"/>
1808 <next-state name="Caps"/>
1809 </map>
1810
1811 <!-- Simple shift second time goes Lower-Case -->
1812 <map keycode="Right Shift" pressed="true">
1813 <next-state name="RShift-Caps-Tilde"/>
1814 </map>
1815 <map keycode="Left Shift" pressed="true">
1816 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1817 <next-state name="RShift-Caps-Tilde"/>
1818 </map>
1819
1820 <!-- Abort operation: print ~ -->
1821 <map keycode="Space" pressed="true">
1822 <event keycode="N" unicode="0x7E" pressed="true" autorepeat="false"/>
1823 </map>
1824 <map keycode="Space" pressed="false">
1825 <event keycode="N" unicode="0x7E" pressed="false"/>
1826 <next-state name="Caps"/>
1827 </map>
1828</state>
1829
1830
1831
1832
1833<!-- Inversed Characters: ¡, ¿... -->
1834<state name="RShift-Inversed">
1835 <!-- RS + (I) + A = ¡ -->
1836 <map keycode="A" pressed="true">
1837 <event keycode="A" unicode="0xA1" pressed="true" modifiers="Shift" autorepeat="true"/>
1838 </map>
1839 <map keycode="A" pressed="false">
1840 <event keycode="A" unicode="0xA1" pressed="false" modifiers="Shift"/>
1841 <next-state name="Normal"/>
1842 </map>
1843
1844 <!-- RS + (I) + / = ¿ -->
1845 <map keycode="Slash" pressed="true">
1846 <event keycode="Slash" unicode="0xBF" pressed="true" modifiers="Shift" autorepeat="true"/>
1847 </map>
1848 <map keycode="N" pressed="false">
1849 <event keycode="N" unicode="0xBF" pressed="false" modifiers="Shift"/>
1850 <next-state name="Normal"/>
1851 </map>
1852
1853 <!-- Shift has no action -->
1854 <map keycode="Right Shift" pressed="true">
1855 <next-state name="RShift-Inversed"/>
1856 </map>
1857 <map keycode="Right Shift" pressed="false">
1858 <next-state name="RShift-Inversed"/>
1859 </map>
1860 <map keycode="Left Shift" pressed="true">
1861 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1862 <next-state name="RShift-Inversed"/>
1863 </map>
1864 <map keycode="Left Shift" pressed="false">
1865 <event keycode="Shift" unicode="-1" pressed="false"/>
1866 <next-state name="RShift-Inversed"/>
1867 </map>
1868
1869 <!-- Abort operation: print ¬ -->
1870 <map keycode="Space" pressed="true">
1871 <event keycode="I" unicode="0xAC" pressed="true" autorepeat="false"/>
1872 </map>
1873 <map keycode="Space" pressed="false">
1874 <event keycode="I" unicode="0xAC" pressed="false"/>
1875 <next-state name="Normal"/>
1876 </map>
1877</state>
1878
1879
1880<!-- Inversed Characters: ¡, ¿... -->
1881<state name="RShift-Caps-Inversed">
1882 <!-- Caps + RS + (I) + A = ¡ -->
1883 <map keycode="A" pressed="true">
1884 <event keycode="A" unicode="0xA1" pressed="true" autorepeat="true"/>
1885 </map>
1886 <map keycode="A" pressed="false">
1887 <event keycode="A" unicode="0xA1" pressed="false"/>
1888 <next-state name="Caps"/>
1889 </map>
1890
1891 <!-- Caps + RS + (I) + / = ¿ -->
1892 <map keycode="Slash" pressed="true">
1893 <event keycode="Slash" unicode="0xBF" pressed="true" autorepeat="true"/>
1894 </map>
1895 <map keycode="Slash" pressed="false">
1896 <event keycode="Slash" unicode="0xBF" pressed="false"/>
1897 <next-state name="Caps"/>
1898 </map>
1899
1900 <!-- Shift has no effect -->
1901 <map keycode="Right Shift" pressed="true">
1902 <next-state name="RShift-Caps-Inversed"/>
1903 </map>
1904 <map keycode="Right Shift" pressed="false">
1905 <next-state name="RShift-Caps-Inversed"/>
1906 </map>
1907 <map keycode="Left Shift" pressed="true">
1908 <event keycode="Shift" unicode="-1" pressed="true" modifiers="Shift"/>
1909 <next-state name="RShift-Caps-Inversed"/>
1910 </map>
1911 <map keycode="Left Shift" pressed="false">
1912 <event keycode="Shift" unicode="-1" pressed="false"/>
1913 <next-state name="RShift-Caps-Inversed"/>
1914 </map>
1915
1916 <!-- Abort operation: print ¬ -->
1917 <map keycode="Space" pressed="true">
1918 <event keycode="I" unicode="0xAC" pressed="true" autorepeat="false"/>
1919 </map>
1920 <map keycode="Space" pressed="false">
1921 <event keycode="I" unicode="0xAC" pressed="false"/>
1922 <next-state name="Caps"/>
1923 </map>
1924</state>
1925
1926
1927</keymap>
diff --git a/share/zkb/ru.xml b/share/zkb/ru.xml
new file mode 100644
index 0000000..f0cc214
--- a/dev/null
+++ b/share/zkb/ru.xml
@@ -0,0 +1,542 @@
1<keymap>
2
3<include file="common.xml"/>
4
5<state name="LShift-RShift" parent="common"/>
6<state name="LShift-RShift-Caps" parent="common"/>
7
8<state name="LShift">
9 <map keycode="Right Shift" pressed="true">
10 <event keycode="Meta" unicode="-1" pressed="false"/>
11 <next-state name="LShift-RShift"/>
12 </map>
13</state>
14
15<state name="RShift">
16 <map keycode="E" pressed="true">
17 <event keycode="E" unicode="0x44D" pressed="true" autorepeat="true"/>
18 </map>
19 <map keycode="G" pressed="true">
20 <event keycode="G" unicode="0x436" pressed="true" autorepeat="true"/>
21 </map>
22 <map keycode="I" pressed="true">
23 <event keycode="I" unicode="0x44E" pressed="true" autorepeat="true"/>
24 </map>
25 <map keycode="Y" pressed="true">
26 <event keycode="Y" unicode="0x44C" pressed="true" autorepeat="true"/>
27 </map>
28
29 <map keycode="E" pressed="false">
30 <event keycode="E" unicode="0x44D" pressed="false"/>
31 </map>
32 <map keycode="G" pressed="false">
33 <event keycode="G" unicode="0x436" pressed="false"/>
34 </map>
35 <map keycode="I" pressed="false">
36 <event keycode="I" unicode="0x44E" pressed="false"/>
37 </map>
38 <map keycode="Y" pressed="false">
39 <event keycode="Y" unicode="0x44C" pressed="false"/>
40 </map>
41
42 <map keycode="Left Shift" pressed="false">
43 <event keycode="Shift" unicode="-1" pressed="false"/>
44 <next-state name="LShift-RShift"/>
45 </map>
46</state>
47
48<state name="LShift-Caps">
49 <map keycode="Right Shift" pressed="true">
50 <event keycode="Meta" unicode="-1" pressed="false"/>
51 <next-state name="LShift-RShift-Caps"/>
52 </map>
53</state>
54
55<state name="LShift-Num">
56 <map keycode="Left Shift" pressed="false">
57 <event keycode="Shift" unicode="-1" pressed="false"/>
58 <next-state name="Num"/>
59 </map>
60
61 <map keycode="Fn" pressed="true">
62 <event keycode="F22" unicode="-1" modifiers="Control" pressed="true"/>
63 <next-state name="LShift-Fn-Num"/>
64 </map>
65</state>
66
67<state name="RShift-Caps">
68 <map keycode="E" pressed="true">
69 <event keycode="E" unicode="0x42D" pressed="true" autorepeat="true"/>
70 </map>
71 <map keycode="G" pressed="true">
72 <event keycode="G" unicode="0x416" pressed="true" autorepeat="true"/>
73 </map>
74 <map keycode="I" pressed="true">
75 <event keycode="I" unicode="0x42E" pressed="true" autorepeat="true"/>
76 </map>
77 <map keycode="Y" pressed="true">
78 <event keycode="Y" unicode="0x42C" pressed="true" autorepeat="true"/>
79 </map>
80
81 <map keycode="E" pressed="false">
82 <event keycode="E" unicode="0x42D" pressed="false"/>
83 </map>
84 <map keycode="G" pressed="false">
85 <event keycode="G" unicode="0x416" pressed="false"/>
86 </map>
87 <map keycode="I" pressed="false">
88 <event keycode="I" unicode="0x42E" pressed="false"/>
89 </map>
90 <map keycode="Y" pressed="false">
91 <event keycode="Y" unicode="0x42C" pressed="false"/>
92 </map>
93
94 <map keycode="Left Shift" pressed="true">
95 <event keycode="Shift" unicode="-1" pressed="false"/>
96 <next-state name="LShift-RShift-Caps"/>
97 </map>
98</state>
99
100<state name="LShift-RShift">
101 <map keycode="E" pressed="true">
102 <event keycode="E" unicode="0x42D" pressed="true" autorepeat="true"/>
103 </map>
104 <map keycode="G" pressed="true">
105 <event keycode="G" unicode="0x416" pressed="true" autorepeat="true"/>
106 </map>
107 <map keycode="I" pressed="true">
108 <event keycode="I" unicode="0x42E" pressed="true" autorepeat="true"/>
109 </map>
110 <map keycode="Y" pressed="true">
111 <event keycode="Y" unicode="0x42C" pressed="true" autorepeat="true"/>
112 </map>
113
114 <map keycode="E" pressed="false">
115 <event keycode="E" unicode="0x42D" pressed="false"/>
116 </map>
117 <map keycode="G" pressed="false">
118 <event keycode="G" unicode="0x416" pressed="false"/>
119 </map>
120 <map keycode="I" pressed="false">
121 <event keycode="I" unicode="0x42E" pressed="false"/>
122 </map>
123 <map keycode="Y" pressed="false">
124 <event keycode="Y" unicode="0x42C" pressed="false"/>
125 </map>
126
127 <map keycode="Left Shift" pressed="false">
128 <event keycode="Shift" unicode="-1" pressed="false"/>
129 <next-state name="RShift"/>
130 </map>
131
132 <map keycode="Right Shift" pressed="false">
133 <event keycode="Meta" unicode="-1" pressed="false"/>
134 <next-state name="LShift"/>
135 </map>
136</state>
137
138<state name="LShift-RShift-Caps">
139 <map keycode="E" pressed="true">
140 <event keycode="E" unicode="0x44D" pressed="true" autorepeat="true"/>
141 </map>
142 <map keycode="G" pressed="true">
143 <event keycode="G" unicode="0x436" pressed="true" autorepeat="true"/>
144 </map>
145 <map keycode="I" pressed="true">
146 <event keycode="I" unicode="0x44E" pressed="true" autorepeat="true"/>
147 </map>
148 <map keycode="Y" pressed="true">
149 <event keycode="Y" unicode="0x44C" pressed="true" autorepeat="true"/>
150 </map>
151
152 <map keycode="E" pressed="false">
153 <event keycode="E" unicode="0x44D" pressed="false"/>
154 </map>
155 <map keycode="G" pressed="false">
156 <event keycode="G" unicode="0x436" pressed="false"/>
157 </map>
158 <map keycode="I" pressed="false">
159 <event keycode="I" unicode="0x44E" pressed="false"/>
160 </map>
161 <map keycode="Y" pressed="false">
162 <event keycode="Y" unicode="0x44C" pressed="false"/>
163 </map>
164
165 <map keycode="Left Shift" pressed="false">
166 <event keycode="Shift" unicode="-1" pressed="false"/>
167 <next-state name="RShift-Caps"/>
168 </map>
169
170 <map keycode="Right Shift" pressed="false">
171 <event keycode="Meta" unicode="-1" pressed="false"/>
172 <next-state name="LShift-Caps"/>
173 </map>
174</state>
175
176<state name="upper-case">
177 <map keycode="Apostrophe" pressed="true">
178 <event keycode="QuoteDbl" unicode="34" pressed="true" autorepeat="true"/>
179 </map>
180 <map keycode="Comma" pressed="true">
181 <event keycode="Semicolon" unicode="59" pressed="true" autorepeat="true"/>
182 </map>
183 <map keycode="Period" pressed="true">
184 <event keycode="Colon" unicode="58" pressed="true" autorepeat="true"/>
185 </map>
186 <map keycode="Slash" pressed="true">
187 <event keycode="Question" unicode="63" pressed="true" autorepeat="true"/>
188 </map>
189 <map keycode="A" pressed="true">
190 <event keycode="A" unicode="0x410" pressed="true" autorepeat="true"/>
191 </map>
192 <map keycode="B" pressed="true">
193 <event keycode="B" unicode="0x411" pressed="true" autorepeat="true"/>
194 </map>
195 <map keycode="C" pressed="true">
196 <event keycode="C" unicode="0x426" pressed="true" autorepeat="true"/>
197 </map>
198 <map keycode="D" pressed="true">
199 <event keycode="D" unicode="0x414" pressed="true" autorepeat="true"/>
200 </map>
201 <map keycode="E" pressed="true">
202 <event keycode="E" unicode="0x415" pressed="true" autorepeat="true"/>
203 </map>
204 <map keycode="F" pressed="true">
205 <event keycode="F" unicode="0x424" pressed="true" autorepeat="true"/>
206 </map>
207 <map keycode="G" pressed="true">
208 <event keycode="G" unicode="0x413" pressed="true" autorepeat="true"/>
209 </map>
210 <map keycode="H" pressed="true">
211 <event keycode="H" unicode="0x425" pressed="true" autorepeat="true"/>
212 </map>
213 <map keycode="I" pressed="true">
214 <event keycode="I" unicode="0x418" pressed="true" autorepeat="true"/>
215 </map>
216 <map keycode="J" pressed="true">
217 <event keycode="J" unicode="0x419" pressed="true" autorepeat="true"/>
218 </map>
219 <map keycode="K" pressed="true">
220 <event keycode="K" unicode="0x41A" pressed="true" autorepeat="true"/>
221 </map>
222 <map keycode="L" pressed="true">
223 <event keycode="L" unicode="0x41B" pressed="true" autorepeat="true"/>
224 </map>
225 <map keycode="M" pressed="true">
226 <event keycode="M" unicode="0x41C" pressed="true" autorepeat="true"/>
227 </map>
228 <map keycode="N" pressed="true">
229 <event keycode="N" unicode="0x41D" pressed="true" autorepeat="true"/>
230 </map>
231 <map keycode="O" pressed="true">
232 <event keycode="O" unicode="0x41E" pressed="true" autorepeat="true"/>
233 </map>
234 <map keycode="P" pressed="true">
235 <event keycode="P" unicode="0x41F" pressed="true" autorepeat="true"/>
236 </map>
237 <map keycode="Q" pressed="true">
238 <event keycode="Q" unicode="0x42F" pressed="true" autorepeat="true"/>
239 </map>
240 <map keycode="R" pressed="true">
241 <event keycode="R" unicode="0x420" pressed="true" autorepeat="true"/>
242 </map>
243 <map keycode="S" pressed="true">
244 <event keycode="S" unicode="0x421" pressed="true" autorepeat="true"/>
245 </map>
246 <map keycode="T" pressed="true">
247 <event keycode="T" unicode="0x422" pressed="true" autorepeat="true"/>
248 </map>
249 <map keycode="U" pressed="true">
250 <event keycode="U" unicode="0x423" pressed="true" autorepeat="true"/>
251 </map>
252 <map keycode="V" pressed="true">
253 <event keycode="V" unicode="0x412" pressed="true" autorepeat="true"/>
254 </map>
255 <map keycode="W" pressed="true">
256 <event keycode="W" unicode="0x428" pressed="true" autorepeat="true"/>
257 </map>
258 <map keycode="X" pressed="true">
259 <event keycode="X" unicode="0x427" pressed="true" autorepeat="true"/>
260 </map>
261 <map keycode="Y" pressed="true">
262 <event keycode="Y" unicode="0x42B" pressed="true" autorepeat="true"/>
263 </map>
264 <map keycode="Z" pressed="true">
265 <event keycode="Z" unicode="0x417" pressed="true" autorepeat="true"/>
266 </map>
267 <map keycode="Apostrophe" pressed="false">
268 <event keycode="QuoteDbl" unicode="34" pressed="false"/>
269 </map>
270 <map keycode="Comma" pressed="false">
271 <event keycode="Semicolon" unicode="59" pressed="false"/>
272 </map>
273 <map keycode="Period" pressed="false">
274 <event keycode="Colon" unicode="58" pressed="false"/>
275 </map>
276 <map keycode="Slash" pressed="false">
277 <event keycode="Question" unicode="63" pressed="false"/>
278 </map>
279 <map keycode="A" pressed="false">
280 <event keycode="A" unicode="0x410" pressed="false"/>
281 </map>
282 <map keycode="B" pressed="false">
283 <event keycode="B" unicode="0x411" pressed="false"/>
284 </map>
285 <map keycode="C" pressed="false">
286 <event keycode="C" unicode="0x426" pressed="false"/>
287 </map>
288 <map keycode="D" pressed="false">
289 <event keycode="D" unicode="0x414" pressed="false"/>
290 </map>
291 <map keycode="E" pressed="false">
292 <event keycode="E" unicode="0x415" pressed="false"/>
293 </map>
294 <map keycode="F" pressed="false">
295 <event keycode="F" unicode="0x424" pressed="false"/>
296 </map>
297 <map keycode="G" pressed="false">
298 <event keycode="G" unicode="0x413" pressed="false"/>
299 </map>
300 <map keycode="H" pressed="false">
301 <event keycode="H" unicode="0x425" pressed="false"/>
302 </map>
303 <map keycode="I" pressed="false">
304 <event keycode="I" unicode="0x418" pressed="false"/>
305 </map>
306 <map keycode="J" pressed="false">
307 <event keycode="J" unicode="0x419" pressed="false"/>
308 </map>
309 <map keycode="K" pressed="false">
310 <event keycode="K" unicode="0x41A" pressed="false"/>
311 </map>
312 <map keycode="L" pressed="false">
313 <event keycode="L" unicode="0x41B" pressed="false"/>
314 </map>
315 <map keycode="M" pressed="false">
316 <event keycode="M" unicode="0x41C" pressed="false"/>
317 </map>
318 <map keycode="N" pressed="false">
319 <event keycode="N" unicode="0x41D" pressed="false"/>
320 </map>
321 <map keycode="O" pressed="false">
322 <event keycode="O" unicode="0x41E" pressed="false"/>
323 </map>
324 <map keycode="P" pressed="false">
325 <event keycode="P" unicode="0x41F" pressed="false"/>
326 </map>
327 <map keycode="Q" pressed="false">
328 <event keycode="Q" unicode="0x42F" pressed="false"/>
329 </map>
330 <map keycode="R" pressed="false">
331 <event keycode="R" unicode="0x420" pressed="false"/>
332 </map>
333 <map keycode="S" pressed="false">
334 <event keycode="S" unicode="0x421" pressed="false"/>
335 </map>
336 <map keycode="T" pressed="false">
337 <event keycode="T" unicode="0x422" pressed="false"/>
338 </map>
339 <map keycode="U" pressed="false">
340 <event keycode="U" unicode="0x423" pressed="false"/>
341 </map>
342 <map keycode="V" pressed="false">
343 <event keycode="V" unicode="0x412" pressed="false"/>
344 </map>
345 <map keycode="W" pressed="false">
346 <event keycode="W" unicode="0x428" pressed="false"/>
347 </map>
348 <map keycode="X" pressed="false">
349 <event keycode="X" unicode="0x427" pressed="false"/>
350 </map>
351 <map keycode="Y" pressed="false">
352 <event keycode="Y" unicode="0x42B" pressed="false"/>
353 </map>
354 <map keycode="Z" pressed="false">
355 <event keycode="Z" unicode="0x417" pressed="false"/>
356 </map>
357</state>
358
359<state name="lower-case">
360 <map keycode="Apostrophe" pressed="true">
361 <event keycode="QuoteDbl" unicode="34" pressed="true" autorepeat="true"/>
362 </map>
363 <map keycode="Comma" pressed="true">
364 <event keycode="Semicolon" unicode="59" pressed="true" autorepeat="true"/>
365 </map>
366 <map keycode="Period" pressed="true">
367 <event keycode="Colon" unicode="58" pressed="true" autorepeat="true"/>
368 </map>
369 <map keycode="Slash" pressed="true">
370 <event keycode="Question" unicode="63" pressed="true" autorepeat="true"/>
371 </map>
372 <map keycode="A" pressed="true">
373 <event keycode="A" unicode="0x430" pressed="true" autorepeat="true"/>
374 </map>
375 <map keycode="B" pressed="true">
376 <event keycode="B" unicode="0x431" pressed="true" autorepeat="true"/>
377 </map>
378 <map keycode="C" pressed="true">
379 <event keycode="C" unicode="0x446" pressed="true" autorepeat="true"/>
380 </map>
381 <map keycode="D" pressed="true">
382 <event keycode="D" unicode="0x434" pressed="true" autorepeat="true"/>
383 </map>
384 <map keycode="E" pressed="true">
385 <event keycode="E" unicode="0x435" pressed="true" autorepeat="true"/>
386 </map>
387 <map keycode="F" pressed="true">
388 <event keycode="F" unicode="0x444" pressed="true" autorepeat="true"/>
389 </map>
390 <map keycode="G" pressed="true">
391 <event keycode="G" unicode="0x433" pressed="true" autorepeat="true"/>
392 </map>
393 <map keycode="H" pressed="true">
394 <event keycode="H" unicode="0x445" pressed="true" autorepeat="true"/>
395 </map>
396 <map keycode="I" pressed="true">
397 <event keycode="I" unicode="0x438" pressed="true" autorepeat="true"/>
398 </map>
399 <map keycode="J" pressed="true">
400 <event keycode="J" unicode="0x439" pressed="true" autorepeat="true"/>
401 </map>
402 <map keycode="K" pressed="true">
403 <event keycode="K" unicode="0x43A" pressed="true" autorepeat="true"/>
404 </map>
405 <map keycode="L" pressed="true">
406 <event keycode="L" unicode="0x43B" pressed="true" autorepeat="true"/>
407 </map>
408 <map keycode="M" pressed="true">
409 <event keycode="M" unicode="0x43C" pressed="true" autorepeat="true"/>
410 </map>
411 <map keycode="N" pressed="true">
412 <event keycode="N" unicode="0x43D" pressed="true" autorepeat="true"/>
413 </map>
414 <map keycode="O" pressed="true">
415 <event keycode="O" unicode="0x43E" pressed="true" autorepeat="true"/>
416 </map>
417 <map keycode="P" pressed="true">
418 <event keycode="P" unicode="0x43F" pressed="true" autorepeat="true"/>
419 </map>
420 <map keycode="Q" pressed="true">
421 <event keycode="Q" unicode="0x44F" pressed="true" autorepeat="true"/>
422 </map>
423 <map keycode="R" pressed="true">
424 <event keycode="R" unicode="0x440" pressed="true" autorepeat="true"/>
425 </map>
426 <map keycode="S" pressed="true">
427 <event keycode="S" unicode="0x441" pressed="true" autorepeat="true"/>
428 </map>
429 <map keycode="T" pressed="true">
430 <event keycode="T" unicode="0x442" pressed="true" autorepeat="true"/>
431 </map>
432 <map keycode="U" pressed="true">
433 <event keycode="U" unicode="0x443" pressed="true" autorepeat="true"/>
434 </map>
435 <map keycode="V" pressed="true">
436 <event keycode="V" unicode="0x432" pressed="true" autorepeat="true"/>
437 </map>
438 <map keycode="W" pressed="true">
439 <event keycode="W" unicode="0x448" pressed="true" autorepeat="true"/>
440 </map>
441 <map keycode="X" pressed="true">
442 <event keycode="X" unicode="0x447" pressed="true" autorepeat="true"/>
443 </map>
444 <map keycode="Y" pressed="true">
445 <event keycode="Y" unicode="0x44B" pressed="true" autorepeat="true"/>
446 </map>
447 <map keycode="Z" pressed="true">
448 <event keycode="Z" unicode="0x437" pressed="true" autorepeat="true"/>
449 </map>
450 <map keycode="Apostrophe" pressed="false">
451 <event keycode="QuoteDbl" unicode="34" pressed="false"/>
452 </map>
453 <map keycode="Comma" pressed="false">
454 <event keycode="Semicolon" unicode="59" pressed="false"/>
455 </map>
456 <map keycode="Period" pressed="false">
457 <event keycode="Colon" unicode="58" pressed="false"/>
458 </map>
459 <map keycode="Slash" pressed="false">
460 <event keycode="Question" unicode="63" pressed="false"/>
461 </map>
462 <map keycode="A" pressed="false">
463 <event keycode="A" unicode="0x430" pressed="false"/>
464 </map>
465 <map keycode="B" pressed="false">
466 <event keycode="B" unicode="0x431" pressed="false"/>
467 </map>
468 <map keycode="C" pressed="false">
469 <event keycode="C" unicode="0x446" pressed="false"/>
470 </map>
471 <map keycode="D" pressed="false">
472 <event keycode="D" unicode="0x434" pressed="false"/>
473 </map>
474 <map keycode="E" pressed="false">
475 <event keycode="E" unicode="0x435" pressed="false"/>
476 </map>
477 <map keycode="F" pressed="false">
478 <event keycode="F" unicode="0x444" pressed="false"/>
479 </map>
480 <map keycode="G" pressed="false">
481 <event keycode="G" unicode="0x433" pressed="false"/>
482 </map>
483 <map keycode="H" pressed="false">
484 <event keycode="H" unicode="0x445" pressed="false"/>
485 </map>
486 <map keycode="I" pressed="false">
487 <event keycode="I" unicode="0x438" pressed="false"/>
488 </map>
489 <map keycode="J" pressed="false">
490 <event keycode="J" unicode="0x439" pressed="false"/>
491 </map>
492 <map keycode="K" pressed="false">
493 <event keycode="K" unicode="0x43A" pressed="false"/>
494 </map>
495 <map keycode="L" pressed="false">
496 <event keycode="L" unicode="0x43B" pressed="false"/>
497 </map>
498 <map keycode="M" pressed="false">
499 <event keycode="M" unicode="0x43C" pressed="false"/>
500 </map>
501 <map keycode="N" pressed="false">
502 <event keycode="N" unicode="0x43D" pressed="false"/>
503 </map>
504 <map keycode="O" pressed="false">
505 <event keycode="O" unicode="0x43E" pressed="false"/>
506 </map>
507 <map keycode="P" pressed="false">
508 <event keycode="P" unicode="0x43F" pressed="false"/>
509 </map>
510 <map keycode="Q" pressed="false">
511 <event keycode="Q" unicode="0x44F" pressed="false"/>
512 </map>
513 <map keycode="R" pressed="false">
514 <event keycode="R" unicode="0x440" pressed="false"/>
515 </map>
516 <map keycode="S" pressed="false">
517 <event keycode="S" unicode="0x441" pressed="false"/>
518 </map>
519 <map keycode="T" pressed="false">
520 <event keycode="T" unicode="0x442" pressed="false"/>
521 </map>
522 <map keycode="U" pressed="false">
523 <event keycode="U" unicode="0x443" pressed="false"/>
524 </map>
525 <map keycode="V" pressed="false">
526 <event keycode="V" unicode="0x432" pressed="false"/>
527 </map>
528 <map keycode="W" pressed="false">
529 <event keycode="W" unicode="0x448" pressed="false"/>
530 </map>
531 <map keycode="X" pressed="false">
532 <event keycode="X" unicode="0x447" pressed="false"/>
533 </map>
534 <map keycode="Y" pressed="false">
535 <event keycode="Y" unicode="0x44B" pressed="false"/>
536 </map>
537 <map keycode="Z" pressed="false">
538 <event keycode="Z" unicode="0x437" pressed="false"/>
539 </map>
540</state>
541
542</keymap>
diff --git a/share/zkb/zkb.xml.sample b/share/zkb/zkb.xml.sample
new file mode 100644
index 0000000..7fc07a9
--- a/dev/null
+++ b/share/zkb/zkb.xml.sample
@@ -0,0 +1,55 @@
1<keymap autorepeat-delay="400" autorepeat-period="80" author="keyzcfg">
2 <label name="EN" state="km0:*"/>
3 <label name="BG" state="km1:*"/>
4 <include file="en.xml" prefix="km0"/>
5 <include file="bg.xml" prefix="km1"/>
6 <state name="km0:LShift">
7 <map keycode="Middle" pressed="true">
8 <next-state name="km1:LShift"/>
9 </map>
10 </state>
11
12 <state name="km0:LShift-Caps">
13 <map keycode="Middle" pressed="true">
14 <next-state name="km1:LShift-Caps"/>
15 </map>
16 </state>
17
18 <state name="km0:LShift-Num">
19 <map keycode="Middle" pressed="true">
20 <next-state name="km1:LShift-Num"/>
21 </map>
22 </state>
23
24 <state name="km0:LShift-Num-Caps">
25 <map keycode="Middle" pressed="true">
26 <next-state name="km1:LShift-Num-Caps"/>
27 </map>
28 </state>
29
30 <state name="km1:LShift">
31 <map keycode="Middle" pressed="true">
32 <next-state name="km0:LShift"/>
33 </map>
34 </state>
35
36 <state name="km1:LShift-Caps">
37 <map keycode="Middle" pressed="true">
38 <next-state name="km0:LShift-Caps"/>
39 </map>
40 </state>
41
42 <state name="km1:LShift-Num">
43 <map keycode="Middle" pressed="true">
44 <next-state name="km0:LShift-Num"/>
45 </map>
46 </state>
47
48 <state name="km1:LShift-Num-Caps">
49 <map keycode="Middle" pressed="true">
50 <next-state name="km0:LShift-Num-Caps"/>
51 </map>
52 </state>
53
54 <state name="km0:Normal" default="true"/>
55</keymap>
diff --git a/share/zkb/zkb.xml.sample.num b/share/zkb/zkb.xml.sample.num
new file mode 100644
index 0000000..667e6a5
--- a/dev/null
+++ b/share/zkb/zkb.xml.sample.num
@@ -0,0 +1,55 @@
1<keymap autorepeat-delay="400" autorepeat-period="80" author="keyzcfg">
2 <label name="EN" state="km0:*"/>
3 <label name="BG" state="km1:*"/>
4 <include file="en.xml" prefix="km0"/>
5 <include file="bg.xml" prefix="km1"/>
6 <state name="km0:LShift">
7 <map keycode="4173" pressed="true">
8 <next-state name="km1:LShift"/>
9 </map>
10 </state>
11
12 <state name="km0:LShift-Caps">
13 <map keycode="4173" pressed="true">
14 <next-state name="km1:LShift-Caps"/>
15 </map>
16 </state>
17
18 <state name="km0:LShift-Num">
19 <map keycode="4173" pressed="true">
20 <next-state name="km1:LShift-Num"/>
21 </map>
22 </state>
23
24 <state name="km0:LShift-Num-Caps">
25 <map keycode="4173" pressed="true">
26 <next-state name="km1:LShift-Num-Caps"/>
27 </map>
28 </state>
29
30 <state name="km1:LShift">
31 <map keycode="4173" pressed="true">
32 <next-state name="km0:LShift"/>
33 </map>
34 </state>
35
36 <state name="km1:LShift-Caps">
37 <map keycode="4173" pressed="true">
38 <next-state name="km0:LShift-Caps"/>
39 </map>
40 </state>
41
42 <state name="km1:LShift-Num">
43 <map keycode="4173" pressed="true">
44 <next-state name="km0:LShift-Num"/>
45 </map>
46 </state>
47
48 <state name="km1:LShift-Num-Caps">
49 <map keycode="4173" pressed="true">
50 <next-state name="km0:LShift-Num-Caps"/>
51 </map>
52 </state>
53
54 <state name="km0:Normal" default="true"/>
55</keymap> \ No newline at end of file