Compare commits

...

307 Commits

Author SHA1 Message Date
5230171d47 Most x11 references removed, some x* files renamed to w*, for wayland; project compiling and running. 2019-01-31 22:02:44 -02:00
436740b64a Removing tabs first 2019-01-31 20:50:55 -02:00
e212262f29 Stop key-repeat when the server receives a new D-Bus event.
Key-repeat timer should be cleared when the server receives a new D-Bus.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=857977
2012-10-01 11:55:04 +09:00
c71167d893 Fix out-of-tree build. 2012-10-01 11:55:00 +09:00
2d4e4c7a13 Fix compiler warnings. 2012-10-01 11:37:47 +09:00
695f8df5b8 Bump version to 1.0.8. 2012-08-15 17:28:23 +09:00
2e822cb6a6 Don't crash when all the keyboards are removed. 2012-08-15 17:27:20 +09:00
f2a90935a3 Make "visible" property per client instead of per context. 2012-04-24 18:38:32 +09:00
cee741eca0 Fix initial window size. 2012-04-24 12:48:35 +09:00
b5b59e77d6 Check errors when retrieving XKB layout information. 2012-04-24 11:58:41 +09:00
cce883808e Simplify eek-xkb-layout.c. 2012-04-24 11:01:42 +09:00
8faae7ef08 Use git.mk. 2012-04-24 10:38:36 +09:00
4538ef38a1 Revert "Remove eek-xkb*."
This reverts commit ee12d02402.
2012-04-24 10:06:09 +09:00
ee12d02402 Remove eek-xkb*. 2012-04-23 18:35:15 +09:00
7050fa41a0 G_CONST_RETURN -> const. 2012-04-23 17:09:48 +09:00
4a346211b8 Show tooltips. 2012-04-23 16:43:06 +09:00
4df2ecc8ae Don't abort when failed to load keyboard. 2012-04-16 14:37:18 +09:00
03995ec6b2 Bump version to 1.0.7777777. 2012-04-13 16:48:50 +09:00
6059146b42 Fix gobject-introspection annotation. 2012-04-13 16:44:41 +09:00
30811ae656 Fix jp-kana keyboard. 2012-04-13 16:44:01 +09:00
b8015bbef5 Simplify geometry XML format by folding row element. 2012-04-06 15:57:30 +09:00
157d7c57fd Don't check if dbus-glib-1 is installed. 2012-04-02 16:31:53 +09:00
03963036d1 Fix EekXklLayout initialization. 2012-04-02 10:38:14 +09:00
5099f7db88 Bump version to 1.0.6. 2012-03-30 17:41:46 +09:00
ab8cd246bf Fix make distcheck. 2012-03-30 17:40:16 +09:00
528981f913 Drop IBus dependency when compiling. 2012-03-30 17:23:47 +09:00
3fd5eb789c Fix EekboardContext::key_activated signature. 2012-03-30 16:27:48 +09:00
9c09777c09 Place preferences key on the right bottom corner. 2012-03-29 19:08:54 +09:00
7298d320e0 Refine keysym handling. 2012-03-29 16:27:56 +09:00
39154fa5ad Fix keysym replace logic. 2012-03-28 19:03:34 +09:00
6db99bee25 Don't enumerate over keys when find_by_keycode. 2012-03-28 14:43:49 +09:00
ee0505c100 Add keyboard selection dialog to preferences. 2012-03-28 12:54:22 +09:00
1943749cb6 Drop GTK2 support. 2012-03-23 18:07:05 +09:00
5763ed20bf Remove eekxml. 2012-03-23 18:07:05 +09:00
7eead1c1ff Fix some mistakes. 2012-03-23 18:07:05 +09:00
048e08b59a Factor out symbols from keyboard file. 2012-03-23 18:07:01 +09:00
523bd9b788 Remove unused code. 2012-03-19 10:53:27 +09:00
f442733b33 Fix some mistakes.
* remove useless g_obect_{set,get}_property call.
* free GError on error.
2012-03-16 18:15:50 +09:00
a6fe5bd859 Use GInitable to define EekXklLayout. 2012-03-16 17:36:20 +09:00
32a1d23c2a Simplify codebase.
* Drop clutter support.
* Unify eek-xkb into eek-xkl.
* Generate vapi from gir instead of gi.
2012-03-16 16:32:33 +09:00
06644945cf Remove python binding. 2012-03-16 15:47:36 +09:00
1774a2c23e Update version to 1.0.5. 2011-11-25 14:37:44 +09:00
668b974dd7 Improve border rendering without theme. 2011-10-14 10:04:16 +09:00
4427f81dd9 Fix eek-0.90 vala binding.
Mark struct types in eek-0.90.metadata; add eek-text.h to eek-0.90.files.
2011-10-12 11:33:56 +09:00
9490428535 Don't call g_log_set_always_fatal() in eekboard-server. 2011-10-11 11:37:02 +09:00
8d70eedc5f Update to 1.0.4. 2011-09-30 11:50:40 +09:00
74550d2424 Fix label alignment when the text is RTL. 2011-09-30 11:48:36 +09:00
148d8e7524 Revive eekboard -k option to specify keyboard from command line. 2011-09-28 15:07:46 +09:00
aca9a4dcb6 Fix some mistakes. 2011-09-15 17:47:38 +09:00
953c35bdac Change window strut when monitor changed. 2011-09-15 17:47:26 +09:00
596b33f149 Fix commit 15f7b0ec. 2011-09-12 17:24:36 +09:00
ef3ea618d2 Change the type of gsettings key "keyboard" from s to as.
Also rename it to "keyboards".
2011-09-12 15:33:59 +09:00
362b210a31 Set icon in keyboard files. 2011-09-12 13:47:39 +09:00
15f7b0ecff Send fake key event for each character in EekText symbol. 2011-09-12 12:51:17 +09:00
f72e9f5293 Copy pressed_keys list before sending released/cancelled signal (RHBZ#737396). 2011-09-12 11:06:52 +09:00
0d93f31eea Add window size constraint option in gsettings. 2011-09-02 18:18:47 +09:00
f1af125d24 Update to 1.0.3. 2011-09-02 17:06:02 +09:00
a6c08bee7b Allow 0xXXXX in mim2remap.el. 2011-09-01 15:08:43 +09:00
c2d2c8660f Add more keyboards convertd from m17n-db. 2011-09-01 12:51:03 +09:00
db3538af64 Send DestroyContext when EekboardClient#dispose. 2011-09-01 11:19:41 +09:00
04ac7fb19e Fix typo. 2011-08-31 16:22:42 +09:00
53e853fbc9 Change D-Bus signal name KeyPressed to KeyActivated. 2011-08-31 10:00:00 +09:00
747ce4e00b Add all subdirs to SUBDIRS regardless of automake conditionals. 2011-08-30 18:55:31 +09:00
5f6eb76d7f Add inscript keyboards. 2011-08-30 18:17:47 +09:00
3777620574 Preserve symbol attributes when serializing/deserializing XML. 2011-08-30 18:17:47 +09:00
b02ae1b7cc Support text symbol.
a
2011-08-30 18:17:45 +09:00
88816018d8 Rewrite mim2remap in elisp to properly parse *.mim files. 2011-08-30 16:23:11 +09:00
06e7e2afac Fix python binding. 2011-08-26 13:04:35 +09:00
ce2c4ed0f4 Update to 1.0.2. 2011-08-25 10:34:11 +09:00
099ca60975 Update doc comments. 2011-08-25 10:31:41 +09:00
43ab623fac Make sure that preferences dialog is kept above. 2011-08-25 07:11:50 +09:00
bcc9a8fd60 Swap ISO_Level3_Shift with Control_L in keyboard XML. 2011-08-25 07:11:40 +09:00
6fb96ea5d6 Fix crash in key replace logic. 2011-08-25 05:39:51 +09:00
2f64b3ee13 Fix doc comments. 2011-08-24 17:59:57 +09:00
d4a78e5dc7 Suppress compile warnings. 2011-08-24 17:44:31 +09:00
71033f5739 Update gtk-doc sections. 2011-08-24 17:43:55 +09:00
17444509fe Mark some files to be translated. 2011-08-24 17:43:12 +09:00
42baa22cdc Add doc comment for libeekboard. 2011-08-24 17:43:00 +09:00
f07de8cd3b Add a button to launch preferences dialog. 2011-08-24 17:05:52 +09:00
0772898b83 Improve icon rendering. 2011-08-24 17:05:41 +09:00
828b2d66d1 Save delay/interval as uint, instead of int. 2011-08-24 17:04:50 +09:00
8ab4fb7946 Implement preferences dialog. 2011-08-24 15:24:59 +09:00
e91a059f0f Ignore some files. 2011-08-24 11:10:28 +09:00
093d83ed89 Use AM_V_GEN for generating keysym-entries headers. 2011-08-24 11:03:46 +09:00
5c0381e4f0 Fix VAPIGEN macro. 2011-08-24 11:02:13 +09:00
657c6f8e35 Use GI instead of pygtk2 in mim2remap. 2011-08-24 11:01:33 +09:00
4bb984daf3 Rewrite simple-client in python. 2011-08-23 18:08:56 +09:00
e46a3f89ed Add theme option in gsettings. 2011-08-23 17:49:43 +09:00
6843cd62dd Fix vala binding. 2011-08-23 17:10:39 +09:00
52ffc77fdd Fix make distcheck. 2011-08-23 17:10:17 +09:00
158542ec0a Replace eekboard-xml and eekboard-inscript with eekxml and mim2remap. 2011-08-23 16:29:10 +09:00
360da8a3c9 Update vala binding. 2011-08-23 14:17:07 +09:00
65d1186317 Update python binding. 2011-08-23 10:27:29 +09:00
b7b4d68a9a Fix fullscreen mode and D-Bus service entry. 2011-08-22 22:24:17 +09:00
952f70b433 Fix typo. 2011-08-22 18:05:25 +09:00
74de8e5056 Fix clutter build. 2011-08-22 16:17:58 +09:00
9d88c1c5da Fix memleaks; add doc comments. 2011-08-22 16:12:23 +09:00
a6bde78168 Highlight locked modifiers. 2011-08-22 14:44:46 +09:00
bb85885e5d Revamp server-client API. 2011-08-20 13:17:16 +09:00
dd085be73d Fix GTK2 build. 2011-08-19 07:56:25 +09:00
f576310cdf Update keyboards. 2011-08-19 07:52:46 +09:00
70e1c98987 Rescale jp-kana.xml. 2011-08-18 18:34:59 +09:00
4f03aa82fe Rename kana.xml -> jp-kana.xml. 2011-08-18 18:29:24 +09:00
383c93a415 Fix fit-size calculation. 2011-08-18 18:06:52 +09:00
860fbe8ede Add kana keyboard. 2011-08-18 17:19:38 +09:00
39900bd987 Allow non-keysym symbols in XML. 2011-08-18 17:02:39 +09:00
5c09147551 Optimize container element traversal. 2011-08-18 17:01:48 +09:00
f0929a9bd8 Add Thai keyboard. 2011-08-18 15:23:57 +09:00
786496b3c4 Fix system (xklavier) layout handling. 2011-08-18 14:32:53 +09:00
e5f5c8273e Make GTK3 default. 2011-08-18 14:25:40 +09:00
ca250699ef Remove --model/layouts/options from eekboard-xml. 2011-08-18 12:48:32 +09:00
7f41af3ee7 Change xkb: keyboard type format.
It is now "MODEL/L0(V0);L1(V1);...;Ln(Vn)/O0;O1;...;On".
2011-08-18 12:47:38 +09:00
260dc3fddd Fix example/simple-client. 2011-08-18 12:16:39 +09:00
052c40cc26 Remove serialization code for EekKey, EekSection, and EekKeyboard. 2011-08-18 12:00:54 +09:00
1b5bab9c18 Add eek_init(). 2011-08-18 11:53:44 +09:00
6a7b256676 Remove unnecessary null initialization. 2011-08-18 11:31:01 +09:00
0e135129e2 Read keyboard type from GSettings. 2011-08-18 11:18:55 +09:00
7af6bf13ed Support feedback sounds. 2011-08-18 11:18:27 +09:00
91ed49b65a Make server responsible for loading keyboard files. 2011-08-17 18:19:36 +09:00
84f614528f Use GList instead of GSList in eek-container. 2011-08-17 13:23:19 +09:00
7c0e29fc86 Allow both -l and -d to be given to eekboard-xml. 2011-08-17 13:21:49 +09:00
1f9e4bd576 Fix dock support. 2011-08-16 18:03:20 +09:00
fc0a577dfb Suggest to use ibus focus-listener rather than atspi. 2011-08-16 17:34:15 +09:00
69d16ddce5 Use org.freedesktop.IBus.Panel.Focus{In,Out} instead of InputContext. 2011-08-16 17:24:07 +09:00
984813b154 Adjust the default values of key-repeat options.
Also make "auto-hide-delay" type integer rather than double.
2011-08-16 16:30:17 +09:00
b6beeedc26 Improve key-repeat behavior. 2011-08-16 16:30:13 +09:00
55f7a0d0dc Make sure large key does not overlap with the small key. 2011-08-15 18:13:55 +09:00
7919cc191e Capture motion-notify event. 2011-08-15 18:10:57 +09:00
db0c5088b7 Apply active style to the key under the large key. 2011-08-15 17:49:02 +09:00
cc4b9a6b45 Add cursor keys to us-qwerty map. 2011-08-15 17:25:22 +09:00
f4e33a4ad4 Make sure that large key bounds do not overflow the widget allocation. 2011-08-15 16:45:11 +09:00
0e0fe9ed51 Support key repeat. 2011-08-15 15:18:52 +09:00
20c1f8cbe3 Update to 1.0.1. 2011-08-15 12:50:02 +09:00
f2ee3b4966 Add auto-hide-delay option.
Also fixes GSettings unref in client-main.c.
2011-08-15 12:17:07 +09:00
57a072746e Release dragged key when unmap. 2011-08-15 12:16:44 +09:00
497f21a5bd Remove unused local var. 2011-08-12 16:44:05 +09:00
099c242ad7 Update to 1.0.0. 2011-08-12 16:41:44 +09:00
109eff420c Check "start-fullscreen" GSettings key. 2011-08-12 16:40:45 +09:00
0896096a70 Fix --enable-* configure options. 2011-08-12 16:40:20 +09:00
2d2aea009e Rewrite 15c0a9da using cairo_pattern_set_extend. 2011-08-12 16:25:56 +09:00
0425b4e094 Make sure that IBusBus is connected when setting up DBus message filter. 2011-08-12 15:01:14 +09:00
15c0a9dadf Blank background around a large key when key release. 2011-08-12 15:00:46 +09:00
e09c563cd8 Don't close gdk default display. 2011-06-15 18:08:51 +09:00
218a4a50f6 Make sure to own IBusBus reference in client. 2011-06-15 18:03:40 +09:00
9ab228e8f0 Simplify XKB keycode replace logic. 2011-06-15 17:10:14 +09:00
b30db118f2 Use XkbGetMap instead of XkbGetKeyboard in client. 2011-06-15 15:50:06 +09:00
cccb4f45cd Fix modifier handling when sending keycode with XTest. 2011-06-15 12:53:11 +09:00
54c9d6e35d Use XkbChangeMap to reduce traffic between X server. 2011-06-15 12:26:57 +09:00
da7d11e387 Follow monitors-changed event. 2011-06-14 12:39:46 +09:00
d9073183a7 Borrow XKB keyboard mapping change logic from Caribou. 2011-06-14 12:29:54 +09:00
78480f7577 Make X dock support optional. 2011-06-14 07:14:45 +09:00
1dbf0d70da Add IBus to optional dependencies. 2011-06-14 04:54:41 +09:00
44ee2a9913 Simplify the last commit. 2011-06-14 04:54:28 +09:00
a3a5a51f74 Make the window as dock when fullscreen mode. 2011-06-14 04:23:42 +09:00
1ae4426ec8 Make sure XTest extension is available. 2011-06-13 18:52:06 +09:00
270760bd16 Fix configure output. 2011-06-13 18:37:51 +09:00
5bb20e44fb Place keyboard at the center of screen if fullscreen mode is enabled. 2011-06-13 18:29:06 +09:00
26a2ab725e Move focus-listener setting to dconf from command line option. 2011-06-13 18:28:32 +09:00
9d73b89a4e Use libXtst directly instead of via libfakekey. 2011-06-13 15:26:59 +09:00
606f335496 Unify focus listener configure options. 2011-06-13 14:54:10 +09:00
fe9a02e514 Keep a reference to GSettings handle until server-context is disposed. 2011-06-10 16:57:06 +09:00
f76a835e33 Implement IBus based activation. 2011-06-10 11:43:03 +09:00
e199add701 Don't check clutter-gtk if clutter is disabled. 2011-06-10 11:23:40 +09:00
a744096dd7 Fix URL in *.pc.in. 2011-05-27 17:37:25 +09:00
51a18849c0 Fix clutter-gtk check. 2011-04-28 17:27:59 +09:00
bd303ef10b Add guard to prevent eekboard/eekboard-*.h from being included directly. 2011-04-28 16:47:35 +09:00
1e9ec77b65 Add Vala language binding of libeekboard. 2011-04-28 14:57:56 +09:00
4b409de5ba Add guard to prevent individual headers from being included directly. 2011-04-28 13:03:21 +09:00
66cea3a0b5 Update vala binding API version. 2011-04-28 12:31:24 +09:00
0add617834 Autodetect fakekey, at-spi2-core, clutter, clutter-gtk, python, and vala. 2011-04-28 10:58:42 +09:00
70b0d95d9b Change D-Bus interface name and object path to fedorahosted ones. 2011-04-27 18:25:53 +09:00
cae9c89b64 Allow eekboard UI toolkit to be changed at runtime. 2011-04-27 17:54:20 +09:00
a9d9274e78 Add short label for Meta_{L,R}. 2011-04-22 17:07:44 +09:00
2211fb6b1e 0.90.7 released. 2011-04-22 15:12:05 +09:00
34569679f0 Ignore some files. 2011-04-22 14:44:44 +09:00
816e1f0d51 Fix Clutter build. 2011-04-22 14:41:36 +09:00
de62d74ac5 Fix GTK-DOC comments. 2011-04-22 14:41:29 +09:00
d71c79f268 Fix glib-mkenums error. 2011-04-21 16:24:19 +09:00
ee948cb2ae Update dependencies. 2011-04-19 15:44:12 +09:00
ba59a850d1 Fix compilation error when --disable-atspi. 2011-04-19 15:43:02 +09:00
b7999842a9 Display more information about build. 2011-04-19 15:41:15 +09:00
2dd0ae47db Add autostart desktop file. 2011-04-19 15:41:07 +09:00
926d9346e1 Use at-spi2 instead of at-spi1. 2011-04-19 15:12:01 +09:00
ac8764b9b7 Fix compiler warnings. 2011-04-19 11:56:00 +09:00
4cf3f24fbc Don't check GConf2 if CSPI-1.0 is disabled; disable CSPI-1.0 by default. 2011-04-19 11:29:58 +09:00
0691766a31 Don't include cspi/spi.h if CSPI-1.0 is disabled. 2011-04-19 10:20:37 +09:00
77c00a10da Replace the eekboard-desktop-client reference in desktop file with "eekboard".
https://bugzilla.redhat.com/show_bug.cgi?id=696523
2011-04-14 18:38:46 +09:00
8c407ae482 Use G_DEFINE_BOXED_TYPE. 2011-04-12 11:09:28 +09:00
8d2d612547 Use us-qwerty keyboard by default. 2011-03-28 14:48:07 +09:00
80dc26b7f4 Fix make distcheck. 2011-03-23 18:53:44 +09:00
fbe7b9ec1a Hard-code dynamic modifier masks for XML layout. 2011-03-23 17:59:43 +09:00
048fccd6e0 Use GEnumTypes. 2011-03-23 17:25:29 +09:00
638d41e0b6 Check keycode before passing it to fakekey_send_keyevent(). 2011-03-23 14:49:33 +09:00
4271eb6b3e Pick keyboard file in $(keyboarddir). 2011-03-22 18:23:04 +09:00
d25bfd8ba7 Update README. 2011-03-12 07:19:05 +09:00
0739fbf464 Fix packaging mistake of *.desktop file. 2011-03-11 18:17:41 +09:00
d1b38f8eb2 0.90.6 released. 2011-03-11 18:05:41 +09:00
e6d17fa4cb Fix the last commit. 2011-03-11 17:39:55 +09:00
d62b8b49a2 Fix the last commit. 2011-03-11 17:18:29 +09:00
149dd7dc8b Ignore some files. 2011-03-11 14:26:57 +09:00
0177f96795 Move eekboard-client from src to examples; rename eekboard-desktop-client to eekboard. 2011-03-11 14:25:48 +09:00
ec56773dc6 Don't hardcode gtk.main_quit() in inscript.py. 2011-03-11 13:24:22 +09:00
881bf34ec4 Handle the case when both shift and altgr keys are pressed. 2011-03-11 13:11:05 +09:00
6787308061 Set label/category anyway if inscript key cannot convert to keyval. 2011-03-11 12:53:54 +09:00
0cd01bf165 Fix make distcheck. 2011-03-11 12:53:35 +09:00
132ae3899f Terminate eekboard-inscript when the window is closed. 2011-03-11 12:06:07 +09:00
72f84fa4ef Export EekSymbolCategory in python binding. 2011-03-11 12:06:00 +09:00
16d81f3f71 Generate inscript keyboard on-the-fly. 2011-03-11 11:38:53 +09:00
42a0ea148b Handle "destroyed" signal in eekboard-inscript. 2011-03-10 19:38:42 +09:00
2021311a4e Add destroyed signal in python binding. 2011-03-10 19:37:30 +09:00
b64e91dffa Latch modifiers in eekboard-inscript. 2011-03-10 19:18:56 +09:00
57bb7030fb Fix toggle English feature. 2011-03-10 18:54:53 +09:00
425fe7829b Add toggle English. 2011-03-10 18:43:24 +09:00
aa88315924 Set AltGr mask in python binding. 2011-03-10 18:24:09 +09:00
39a59fb049 Serialize alt_gr_mask. 2011-03-10 18:23:49 +09:00
e0993a5e55 Add eekboard-inscript. 2011-03-10 18:14:06 +09:00
4eb59ba7ed Display client name as window title. 2011-03-10 18:11:48 +09:00
cc9fb31e61 Add examples. 2011-03-10 17:17:37 +09:00
c44ebecfb2 Improve font size computation. 2011-03-10 17:16:31 +09:00
f60e1d763e Move EekSymbolMatrix code from eek-types.[ch] to eek-symbol-matrix.[ch]. 2011-03-09 11:57:02 +09:00
5c3cb477ef Let PopContext return error if the current context is not owned by the client. 2011-03-08 19:00:04 +09:00
5fd4005967 Add transfer mode annotation for eekboard_eekboard_create_context(). 2011-03-08 14:39:41 +09:00
76d1b8f7fb 0.90.4 released. 2011-03-08 11:27:49 +09:00
2bbc65958a Doc and typo fix for eekboard_context_set_fullscreen(). 2011-03-08 11:27:20 +09:00
cbdd0fd2ba Add eekboard/eekboard-eekboard.c to POTFILES.skip. 2011-03-08 11:26:49 +09:00
2f7aa77c11 Fix focus listener logic. 2011-03-08 11:26:15 +09:00
bed39570ff Add eek-theme-private.h in distribution. 2011-03-08 11:25:59 +09:00
8bc3b204b4 Add credit. 2011-03-08 11:25:19 +09:00
fa030ebcbb Fix fullscreen code. 2011-03-08 11:03:48 +09:00
af365024b7 Update default theme. 2011-03-08 10:43:17 +09:00
c742877b77 Add "SetFullscreen" D-Bus method. 2011-03-08 10:42:57 +09:00
ace4391b79 Use font from style. 2011-03-08 10:41:45 +09:00
627cbf2898 Pass base_font during size calculation. 2011-03-08 07:04:12 +09:00
baae80fa41 Port st-theme-context.[ch] to eek-theme-context.[ch]. 2011-03-08 06:58:20 +09:00
9be07710dd Fix clutter build. 2011-03-08 06:27:59 +09:00
163e005561 Simplify "blank background" code. 2011-03-08 06:04:41 +09:00
d8e691d3f5 Optimize redraw on key release. 2011-03-08 05:53:00 +09:00
85a1a6ba24 Abolish EekThemeNodePrivate. 2011-03-08 05:17:20 +09:00
828a59b298 Fix typo. 2011-03-07 19:17:32 +09:00
f1b91c0223 Add border style configuration (WIP). 2011-03-07 19:01:10 +09:00
cadb0f18a9 Fix gradient drawing. 2011-03-07 16:51:01 +09:00
2a8d7cf0a8 Revert to use fakekey_send_event. 2011-03-07 16:49:38 +09:00
c9b54ba87f Remove eek-theme-private.h. 2011-03-07 14:40:04 +09:00
d57ae91995 Move level change logic from key-pressed to key-released handler. 2011-03-07 14:39:35 +09:00
dd86b132ce Set pseudo class "active" to EekKey if the key is pressed. 2011-03-07 12:38:32 +09:00
3967558bae Add setter function of pseudo class. 2011-03-07 12:37:58 +09:00
668ce51f3c Mark EekKey::pressed as G_SIGNAL_RUN_FIRST. 2011-03-07 12:37:25 +09:00
1db2a4aeea Use g_object_set_qdata() to attach theme-node to element. 2011-03-07 10:42:27 +09:00
e20425f385 Add eek-theme-private.h. 2011-03-04 19:35:50 +09:00
a20224f969 Add default theme. 2011-03-04 19:23:08 +09:00
d66318a031 Fix the last commit. 2011-03-04 19:04:39 +09:00
37c2579253 Merge theme handling code (WIP). 2011-03-04 18:52:25 +09:00
23ab2a343f Fix coding style. 2011-03-04 14:28:20 +09:00
e6dfc595ab Lower gobject-introspection version requirement. 2011-03-04 13:01:17 +09:00
98e15d7741 Resolve AltGr modifier at run time. 2011-03-04 10:42:31 +09:00
38b226b46f Clear allocation box when drawing keyboard. 2011-03-03 18:18:04 +09:00
c53b4d398e Remove floating ref from a serialized keyboard. 2011-03-03 17:31:09 +09:00
fbcf6b6c65 Fix infloop when multiple clients are disconnected after another. 2011-03-03 17:02:12 +09:00
09c95b20da Add "Destroy" D-Bus signal to server for debug. 2011-03-03 16:36:10 +09:00
a7f81c3cfb Destroy clutter texture cache properly. 2011-03-03 16:04:24 +09:00
a66256f390 Fix coding style. 2011-03-03 15:53:51 +09:00
8b7da18641 Make eekboard-xml build with clutter. 2011-03-03 15:25:39 +09:00
a9c0356611 Fix XML serialization of EekOutline to include corner_radius. 2011-03-03 15:06:03 +09:00
b25a9a5407 Add comments. 2011-03-03 15:06:03 +09:00
8b632356e9 Fix memleaks. 2011-03-03 15:05:59 +09:00
b8a01d794e Check if the server is active. 2011-03-03 12:23:31 +09:00
cfd33921a1 Fix crash with clutter build. 2011-03-02 18:49:39 +09:00
979aa010b9 Update gobject-introspection version requirement. 2011-03-02 18:40:01 +09:00
de064ba0c0 Update version to 0.90.3. 2011-03-02 17:05:01 +09:00
ff200d9562 Add xklutil.h to noinst_HEADERS. 2011-03-02 17:05:01 +09:00
a8148683d3 Fix typo in desktop-client.c. 2011-03-02 17:01:09 +09:00
838a15d31a Add doc for EekKeysym. 2011-03-02 16:56:16 +09:00
2d66bf24fb Add doc for EekSymbol. 2011-03-02 16:52:30 +09:00
64bc7cc955 Fix commit ab08955a. 2011-03-02 16:45:35 +09:00
362f8ec0cb Add xkl options to eekboard-desktop-client. 2011-03-02 16:39:13 +09:00
d99a40df94 Compile xklutil.c at once. 2011-03-02 16:38:40 +09:00
ab08955a5f Make the return value of eek_symbol_get_label const. 2011-03-02 16:15:16 +09:00
577fcd7f9e Add files to POTFILES.*. 2011-03-02 16:10:56 +09:00
7da92bf04c Make the window not maximizable (RHBZ#680406). 2011-03-02 16:05:51 +09:00
f7caf6fe49 Handle Num_Lock correctly (RHBZ#680826). 2011-03-02 15:44:35 +09:00
d111edd76a Update doc index. 2011-03-02 11:49:30 +09:00
b2657c06a8 Move symbol-index property per-element instead of per-keyboard. 2011-03-02 11:47:09 +09:00
fccf9e8805 Fix icon position calculation. 2011-03-01 16:25:37 +09:00
7fc80705dd Fix serializing nullable properties of EekSymbol. 2011-03-01 12:51:59 +09:00
9007f31c0a Fix icon size calculation. 2011-03-01 12:51:46 +09:00
18f8e5b98b Draw key with icon if EekSymbol has "icon-name" property. 2011-03-01 11:57:07 +09:00
0087f74178 Make input context have multiple keyboards. 2011-02-28 18:19:04 +09:00
639ad8df91 Add -g option to eekboard-xml. 2011-02-28 12:24:27 +09:00
e8af3dacf1 Assign LETTER category to letter keysyms. 2011-02-28 12:24:16 +09:00
5d42fb8294 Read keysym label from XML attribute. 2011-02-25 18:18:05 +09:00
4440a2f1ac Release dragged key when gtk keyboard is disposed. 2011-02-25 18:17:05 +09:00
c9cee89d7e Fix translation. 2011-02-25 13:14:17 +09:00
1c3d20ad6f Add command-line option to specify D-Bus type and address. 2011-02-25 11:10:36 +09:00
40862fcf12 0.90.2 released. 2011-02-24 17:40:24 +09:00
110b25a64b Update translation. 2011-02-24 17:39:15 +09:00
f1a44ddebb Rebuild eek.types when compiling doc from tarball. 2011-02-24 17:38:22 +09:00
fc00d86c7e Avoid I_() from being translated. 2011-02-24 17:37:42 +09:00
4a822fe52c Fix typo. 2011-02-24 14:45:19 +09:00
6587f00c2a Reuse window. 2011-02-24 14:43:13 +09:00
3b77502b97 Add Python binding. 2011-02-24 13:14:33 +09:00
d7554b9735 Doc fix. 2011-02-24 11:43:15 +09:00
798df5c136 Use g_intern_static_string for signal names. 2011-02-24 10:37:48 +09:00
22c70976db Remove unused get_keyboard function. 2011-02-24 10:37:48 +09:00
3eeb7cd8ab Rename EekboardServer to EekboardEekboard. 2011-02-24 10:37:48 +09:00
7ef245d739 Fix clutter build. 2011-02-24 10:36:00 +09:00
9a6b3b3e2d Update ServerContext#enabled before showing/hiding window. 2011-02-23 19:40:01 +09:00
715c9ca022 Add padding to EekboardServerClass and EekboardContextClass. 2011-02-23 18:48:40 +09:00
203 changed files with 24628 additions and 11010 deletions

74
.gitignore vendored
View File

@ -1,74 +0,0 @@
*.la
*.lo
*.loT
*.o
*.so
*~
Makefile
Makefile.in
.deps
.libs
INSTALL
aclocal.m4
autom4te.cache
compile
config.guess
config.h
config.h.in
config.log
config.rpath
config.status
config.sub
configure
depcomp
install-sh
libtool
ltmain.sh
missing
stamp-h1
libkeyactor*.tar.*
mkinstalldirs
m4/*.m4
gtk-doc.make
eek/eek-special-keysym-entries.h
eek/eek-unicode-keysym-entries.h
eek/eek-xkeysym-keysym-entries.h
eek/eek-marshalers.[ch]
eek/*.pc
eek/*.gir
eek/*.typelib
eekboard/*.pc
eekboard/*.gir
eekboard/*.typelib
tests/eek-simple-test
tests/eek-xkb-test
tests/eek-xml-test
src/eekboard-server
src/eekboard-client
src/eekboard-system-client
src/eekboard-xml
docs/reference/eek/*.stamp
docs/reference/eek/*.txt
!/docs/reference/eek/eek-sections.txt
docs/reference/eek/xml
docs/reference/eek/html
docs/reference/eek/eek.signals
docs/reference/eek/eek.args
docs/reference/eek/eek.hierarchy
docs/reference/eek/eek.interfaces
docs/reference/eek/eek.prerequisites
docs/reference/eekboard/*.stamp
docs/reference/eekboard/*.txt
!/docs/reference/eekboard/eekboard-sections.txt
docs/reference/eekboard/xml
docs/reference/eekboard/html
docs/reference/eekboard/eekboard.signals
docs/reference/eekboard/eekboard.args
docs/reference/eekboard/eekboard.hierarchy
docs/reference/eekboard/eekboard.interfaces
docs/reference/eekboard/eekboard.prerequisites
po/*.gmo
po/Makefile.in.in
po/POTFILES
po/stamp-it
bindings/vala/*.vapi

38
AUTHORS
View File

@ -1,6 +1,36 @@
eekboard is written by Daiki Ueno <ueno@unixuser.org> eekboard is written by Daiki Ueno <ueno@unixuser.org>. The following
files contain code derived from other free software packages:
Cairo keyboard drawing functions are borrowed from the libgnomekbd eek/eek-keyboard-drawing.h
library by Sergey V. Udaltsov <svu@gnome.org>. See the comments in eek/eek-keyboard-drawing.c
eek/eek-drawing.c for detail.
These files contain code derived from the libgnomekbd library.
Copyright (C) 2006 Sergey V. Udaltsov <svu@gnome.org>
eek/eek-theme.h
eek/eek-theme.c
eek/eek-theme-context.h
eek/eek-theme-context.c
eek/eek-theme-node.h
eek/eek-theme-node.c
These files contain code derived from gnome-shell.
Copyright 2008-2010 Red Hat, Inc.
Copyright 2009 Steve Frécinaux
Copyright 2009, 2010 Florian Müllner
Copyright 2010 Adel Gadllah
Copyright 2010 Giovanni Campagna
Copyright 2003-2004 Dodji Seketeli
data/icons/8x8/Makefile.am
data/icons/16x16/Makefile.am
data/icons/22x22/Makefile.am
data/icons/24x24/Makefile.am
data/icons/32x32/Makefile.am
data/icons/48x48/Makefile.am
data/icons/scalable/Makefile.am
These files contain code derived from im-chooser.
Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved.

View File

@ -17,5 +17,23 @@
# 02110-1301 USA # 02110-1301 USA
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
SUBDIRS = eek eekboard src tests bindings docs po data SUBDIRS = eek eekboard src tests bindings docs po data examples
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-introspection DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-introspection
GITIGNOREFILES = \
INSTALL \
aclocal.m4 \
compile \
config.guess \
config.h.in \
config.sub \
depcomp \
gtk-doc.make \
install-sh \
ltmain.sh \
m4 \
missing \
mkinstalldirs \
$(NULL)
-include $(top_srcdir)/git.mk

58
README
View File

@ -3,12 +3,12 @@ eekboard - an easy to use virtual keyboard toolkit -*- outline -*-
eekboard is a virtual keyboard software package, including a set of eekboard is a virtual keyboard software package, including a set of
tools to implement desktop virtual keyboards. tools to implement desktop virtual keyboards.
* How to build * Building
** Dependencies ** Dependencies
REQUIRED: GLib2, GTK, GConf2, PangoCairo, libxklavier REQUIRED: GLib2, GTK, PangoCairo, libxklavier, libcroco
OPTIONAL: fakekey, CSPI, Clutter, Clutter-Gtk, Vala, gobject-introspection OPTIONAL: libXtst, at-spi2-core, IBus, Clutter, Clutter-Gtk, Python, Vala, gobject-introspection, libcanberra
** Build from git repo ** Build from git repo
@ -24,52 +24,12 @@ OPTIONAL: fakekey, CSPI, Clutter, Clutter-Gtk, Vala, gobject-introspection
$ make $ make
$ sudo make install $ sudo make install
* How to test * Running
eekboard currently includes 4 tools to implement your own virtual $ eekboard
keyboard. $ eekboard -f # show/hide automatically based on focus-in/focus-out events
** eekboard-server Even though eekboard -f watches a11y events by default, it currently
works better with IBus. To use IBus, do:
eekboard-server is a D-Bus server which is responsible for drawing $ gsettings set org.fedorahosted.eekboard focus-listener 'ibus'
interactive on-screen keyboards. Since it has a D-Bus service
activation entry, you will not need to start it manually, but you can
do that with:
$ eekboard-server &
** eekboard-desktop-client
eekboard-desktop-client is a client of eekboard-server. It listens
desktop events (keyboard change, focus in/out, and keystroke) and
generates key events when some keys are pressed on the on-screen
keyboard. It can be started with:
$ eekboard-desktop-client
** eekboard-xml
eekboard-xml is a tool to manipulate XML keyboard description used by
eekboard-client tool and in the eekboard library.
To dump the current system keyboard layout into an XML file:
$ eekboard-xml --dump > keyboard.xml
You can display the dumped layout with:
$ eekboard-xml --load keyboard.xml
** eekboard-client
eekboard-client is a simple test client of eekboard-server. To upload
the keyboard description to the server, display it, and listen
key events.
$ eekboard-client --set-keyboard keyboard.xml --show-keyboard --listen
KeyPressed XXXXX
KeyReleased XXXXX
* Documentation
See file:docs/reference/eek/html/index.html

View File

@ -16,8 +16,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA # 02110-1301 USA
if ENABLE_VALA
SUBDIRS = vala SUBDIRS = vala
else
SUBDIRS = -include $(top_srcdir)/git.mk
endif

View File

@ -16,35 +16,77 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA # 02110-1301 USA
NULL =
if ENABLE_VALA
vapidir = $(datadir)/vala/vapi vapidir = $(datadir)/vala/vapi
dist_vapi_DATA = \ dist_vapi_DATA = \
eek-$(EEK_API_VERSION).vapi \ eek-$(EEK_API_VERSION).vapi \
eek-clutter-$(EEK_API_VERSION).vapi \ eek-$(EEK_API_VERSION).deps \
eek-gtk-$(EEK_API_VERSION).vapi \ eek-gtk-$(EEK_API_VERSION).vapi \
eek-xkb-$(EEK_API_VERSION).vapi \ eek-gtk-$(EEK_API_VERSION).deps \
eek-xkl-$(EEK_API_VERSION).vapi $(NULL)
MAINTAINERCLEANFILES = $(dist_vapi_DATA)
eek-$(EEK_API_VERSION).vapi: EXTRA_DIST = \
vapigen --library eek-$(EEK_API_VERSION) \ Eek-$(EEK_API_VERSION).metadata \
eek-$(EEK_API_VERSION)/eek-$(EEK_API_VERSION).gi EekGtk-$(EEK_API_VERSION).metadata \
$(NULL)
eek-clutter-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi GITIGNOREFILES = \
vapigen --vapidir=$(builddir) --library eek-clutter-$(EEK_API_VERSION) \ eek-$(EEK_API_VERSION).vapi \
--pkg eek-$(EEK_API_VERSION) --pkg clutter-1.0 \ eek-gtk-$(EEK_API_VERSION).vapi \
eek-clutter-$(EEK_API_VERSION)/eek-clutter-$(EEK_API_VERSION).gi $(NULL)
eek-gtk-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi maintainer-clean-local:
vapigen --vapidir=$(builddir) --library eek-gtk-$(EEK_API_VERSION) \ rm -f *.vapi
--pkg eek-$(EEK_API_VERSION) --pkg gtk+-2.0 \
eek-gtk-$(EEK_API_VERSION)/eek-gtk-$(EEK_API_VERSION).gi
eek-xkb-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi eek_vapi_deps = \
vapigen --vapidir=$(builddir) --library eek-xkb-$(EEK_API_VERSION) \ $(srcdir)/Eek-$(EEK_API_VERSION).metadata \
| \
$(top_builddir)/eek/Eek-$(EEK_API_VERSION).gir \
$(NULL)
eek-$(EEK_API_VERSION).vapi: $(eek_vapi_deps)
$(VAPIGEN_V)$(VAPIGEN) \
--library eek-$(EEK_API_VERSION) \
--pkg gio-2.0 \
--metadatadir=$(srcdir) \
$(top_builddir)/eek/Eek-$(EEK_API_VERSION).gir
eek_gtk_vapi_deps = \
$(srcdir)/EekGtk-$(EEK_API_VERSION).metadata \
| \
$(top_builddir)/eek/EekGtk-$(EEK_API_VERSION).gir \
$(NULL)
eek-gtk-$(EEK_API_VERSION).vapi: $(eek_gtk_vapi_deps)
$(VAPIGEN_V)$(VAPIGEN) --vapidir=$(builddir) \
--library eek-gtk-$(EEK_API_VERSION) \
--pkg eek-$(EEK_API_VERSION) \ --pkg eek-$(EEK_API_VERSION) \
eek-xkb-$(EEK_API_VERSION)/eek-xkb-$(EEK_API_VERSION).gi --pkg gio-2.0 \
--pkg gtk+-3.0 \
--metadatadir=$(srcdir) \
$(top_builddir)/eek/EekGtk-$(EEK_API_VERSION).gir
eek-xkl-$(EEK_API_VERSION).vapi: eek-xkb-$(EEK_API_VERSION).vapi # eek_xkl_vapi_deps = \
vapigen --vapidir=$(builddir) --library eek-xkl-$(EEK_API_VERSION) \ # $(srcdir)/EekXkl-$(EEK_API_VERSION).metadata \
--pkg eek-$(EEK_API_VERSION) --pkg eek-xkb-$(EEK_API_VERSION) \ # | \
eek-xkl-$(EEK_API_VERSION)/eek-xkl-$(EEK_API_VERSION).gi # $(top_builddir)/eek/EekXkl-$(EEK_API_VERSION).gir \
# $(NULL)
#
# eek-xkl-$(EEK_API_VERSION).vapi: $(eek_xkl_vapi_deps)
# $(VAPIGEN_V)$(VAPIGEN) \
# --vapidir=$(builddir) \
# --library eek-xkl-$(EEK_API_VERSION) \
# --pkg eek-$(EEK_API_VERSION) \
# --pkg gio-2.0 \
# --metadatadir=$(srcdir) \
# $(top_builddir)/eek/EekXkl-$(EEK_API_VERSION).gir
# set up the verbosity rules to avoid some build noise
VAPIGEN_V = $(VAPIGEN_V_$(V))
VAPIGEN_V_ = $(VAPIGEN_V_$(AM_DEFAULT_VERBOSITY))
VAPIGEN_V_0 = @echo " VAPIG " $@;
endif
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1 @@
gio-2.0

View File

@ -1,9 +0,0 @@
include/eek-0.1/eek/eek-layout.h
include/eek-0.1/eek/eek-element.h
include/eek-0.1/eek/eek-container.h
include/eek-0.1/eek/eek-keyboard.h
include/eek-0.1/eek/eek-section.h
include/eek-0.1/eek/eek-key.h
include/eek-0.1/eek/eek-types.h
include/eek-0.1/eek/eek-keysym.h
lib/libeek.so

View File

@ -1,680 +0,0 @@
<?xml version="1.0"?>
<api version="1.0">
<namespace name="Eek">
<function name="keysym_get_category" symbol="eek_keysym_get_category">
<return-type type="EekKeysymCategory"/>
<parameters>
<parameter name="keysym" type="guint"/>
</parameters>
</function>
<function name="keysym_to_string" symbol="eek_keysym_to_string">
<return-type type="gchar*"/>
<parameters>
<parameter name="keysym" type="guint"/>
</parameters>
</function>
<callback name="EekCallback">
<return-type type="void"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="user_data" type="gpointer"/>
</parameters>
</callback>
<callback name="EekCompareFunc">
<return-type type="gint"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="user_data" type="gpointer"/>
</parameters>
</callback>
<boxed name="EekBounds" type-name="EekBounds" get-type="eek_bounds_get_type">
<field name="x" type="gdouble"/>
<field name="y" type="gdouble"/>
<field name="width" type="gdouble"/>
<field name="height" type="gdouble"/>
</boxed>
<boxed name="EekKeysymMatrix" type-name="EekKeysymMatrix" get-type="eek_keysym_matrix_get_type">
<field name="data" type="guint*"/>
<field name="num_groups" type="gint"/>
<field name="num_levels" type="gint"/>
</boxed>
<boxed name="EekOutline" type-name="EekOutline" get-type="eek_outline_get_type">
<field name="corner_radius" type="gdouble"/>
<field name="points" type="EekPoint*"/>
<field name="num_points" type="gint"/>
</boxed>
<boxed name="EekPoint" type-name="EekPoint" get-type="eek_point_get_type">
<field name="x" type="gdouble"/>
<field name="y" type="gdouble"/>
</boxed>
<enum name="EekKeysymCategory">
<member name="EEK_KEYSYM_CATEGORY_LETTER" value="0"/>
<member name="EEK_KEYSYM_CATEGORY_FUNCTION" value="1"/>
<member name="EEK_KEYSYM_CATEGORY_KEYNAME" value="2"/>
<member name="EEK_KEYSYM_CATEGORY_UNKNOWN" value="3"/>
<member name="EEK_KEYSYM_CATEGORY_LAST" value="3"/>
</enum>
<enum name="EekOrientation">
<member name="EEK_ORIENTATION_VERTICAL" value="0"/>
<member name="EEK_ORIENTATION_HORIZONTAL" value="1"/>
<member name="EEK_ORIENTATION_INVALID" value="-1"/>
</enum>
<object name="EekContainer" parent="EekElement" type-name="EekContainer" get-type="eek_container_get_type">
<method name="find" symbol="eek_container_find">
<return-type type="EekElement*"/>
<parameters>
<parameter name="container" type="EekContainer*"/>
<parameter name="func" type="EekCompareFunc"/>
<parameter name="user_data" type="gpointer"/>
</parameters>
</method>
<method name="find_by_position" symbol="eek_container_find_by_position">
<return-type type="EekElement*"/>
<parameters>
<parameter name="container" type="EekContainer*"/>
<parameter name="x" type="gdouble"/>
<parameter name="y" type="gdouble"/>
</parameters>
</method>
<method name="foreach_child" symbol="eek_container_foreach_child">
<return-type type="void"/>
<parameters>
<parameter name="container" type="EekContainer*"/>
<parameter name="callback" type="EekCallback"/>
<parameter name="user_data" type="gpointer"/>
</parameters>
</method>
<signal name="child-added" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekContainer*"/>
<parameter name="element" type="EekElement*"/>
</parameters>
</signal>
<signal name="child-removed" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekContainer*"/>
<parameter name="element" type="EekElement*"/>
</parameters>
</signal>
<vfunc name="add_child">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekContainer*"/>
<parameter name="element" type="EekElement*"/>
</parameters>
</vfunc>
<vfunc name="find">
<return-type type="EekElement*"/>
<parameters>
<parameter name="self" type="EekContainer*"/>
<parameter name="func" type="EekCompareFunc"/>
<parameter name="user_data" type="gpointer"/>
</parameters>
</vfunc>
<vfunc name="foreach_child">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekContainer*"/>
<parameter name="callback" type="EekCallback"/>
<parameter name="user_data" type="gpointer"/>
</parameters>
</vfunc>
<vfunc name="remove_child">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekContainer*"/>
<parameter name="element" type="EekElement*"/>
</parameters>
</vfunc>
</object>
<object name="EekElement" parent="GInitiallyUnowned" type-name="EekElement" get-type="eek_element_get_type">
<method name="get_absolute_position" symbol="eek_element_get_absolute_position">
<return-type type="void"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="x" type="gdouble*"/>
<parameter name="y" type="gdouble*"/>
</parameters>
</method>
<method name="get_bounds" symbol="eek_element_get_bounds">
<return-type type="void"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="bounds" type="EekBounds*"/>
</parameters>
</method>
<method name="get_name" symbol="eek_element_get_name">
<return-type type="gchar*"/>
<parameters>
<parameter name="element" type="EekElement*"/>
</parameters>
</method>
<method name="get_parent" symbol="eek_element_get_parent">
<return-type type="EekElement*"/>
<parameters>
<parameter name="element" type="EekElement*"/>
</parameters>
</method>
<method name="set_bounds" symbol="eek_element_set_bounds">
<return-type type="void"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="bounds" type="EekBounds*"/>
</parameters>
</method>
<method name="set_name" symbol="eek_element_set_name">
<return-type type="void"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="name" type="gchar*"/>
</parameters>
</method>
<method name="set_parent" symbol="eek_element_set_parent">
<return-type type="void"/>
<parameters>
<parameter name="element" type="EekElement*"/>
<parameter name="parent" type="EekElement*"/>
</parameters>
</method>
<property name="bounds" type="EekBounds*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="name" type="char*" readable="1" writable="1" construct="0" construct-only="0"/>
<vfunc name="get_bounds">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekElement*"/>
<parameter name="bounds" type="EekBounds*"/>
</parameters>
</vfunc>
<vfunc name="get_name">
<return-type type="gchar*"/>
<parameters>
<parameter name="self" type="EekElement*"/>
</parameters>
</vfunc>
<vfunc name="get_parent">
<return-type type="EekElement*"/>
<parameters>
<parameter name="self" type="EekElement*"/>
</parameters>
</vfunc>
<vfunc name="set_bounds">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekElement*"/>
<parameter name="bounds" type="EekBounds*"/>
</parameters>
</vfunc>
<vfunc name="set_name">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekElement*"/>
<parameter name="name" type="gchar*"/>
</parameters>
</vfunc>
<vfunc name="set_parent">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekElement*"/>
<parameter name="parent" type="EekElement*"/>
</parameters>
</vfunc>
</object>
<object name="EekKey" parent="EekElement" type-name="EekKey" get-type="eek_key_get_type">
<method name="get_index" symbol="eek_key_get_index">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="column" type="gint*"/>
<parameter name="row" type="gint*"/>
</parameters>
</method>
<method name="get_keycode" symbol="eek_key_get_keycode">
<return-type type="guint"/>
<parameters>
<parameter name="key" type="EekKey*"/>
</parameters>
</method>
<method name="get_keysym" symbol="eek_key_get_keysym">
<return-type type="guint"/>
<parameters>
<parameter name="key" type="EekKey*"/>
</parameters>
</method>
<method name="get_keysym_index" symbol="eek_key_get_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="group" type="gint*"/>
<parameter name="level" type="gint*"/>
</parameters>
</method>
<method name="get_keysyms" symbol="eek_key_get_keysyms">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="keysyms" type="guint**"/>
<parameter name="num_groups" type="gint*"/>
<parameter name="num_levels" type="gint*"/>
</parameters>
</method>
<method name="get_outline" symbol="eek_key_get_outline">
<return-type type="EekOutline*"/>
<parameters>
<parameter name="key" type="EekKey*"/>
</parameters>
</method>
<method name="set_index" symbol="eek_key_set_index">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="column" type="gint"/>
<parameter name="row" type="gint"/>
</parameters>
</method>
<method name="set_keycode" symbol="eek_key_set_keycode">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="keycode" type="guint"/>
</parameters>
</method>
<method name="set_keysym_index" symbol="eek_key_set_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="group" type="gint"/>
<parameter name="level" type="gint"/>
</parameters>
</method>
<method name="set_keysyms" symbol="eek_key_set_keysyms">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="keysyms" type="guint*"/>
<parameter name="num_groups" type="gint"/>
<parameter name="num_levels" type="gint"/>
</parameters>
</method>
<method name="set_outline" symbol="eek_key_set_outline">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
<parameter name="outline" type="EekOutline*"/>
</parameters>
</method>
<property name="column" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="group" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="keycode" type="guint" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="keysyms" type="EekKeysymMatrix*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="level" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="outline" type="gpointer" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="row" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<signal name="pressed" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
</parameters>
</signal>
<signal name="released" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="key" type="EekKey*"/>
</parameters>
</signal>
<vfunc name="get_index">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="column" type="gint*"/>
<parameter name="row" type="gint*"/>
</parameters>
</vfunc>
<vfunc name="get_keycode">
<return-type type="guint"/>
<parameters>
<parameter name="self" type="EekKey*"/>
</parameters>
</vfunc>
<vfunc name="get_keysym">
<return-type type="guint"/>
<parameters>
<parameter name="self" type="EekKey*"/>
</parameters>
</vfunc>
<vfunc name="get_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="group" type="gint*"/>
<parameter name="level" type="gint*"/>
</parameters>
</vfunc>
<vfunc name="get_keysyms">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="keysyms" type="guint**"/>
<parameter name="num_groups" type="gint*"/>
<parameter name="num_levels" type="gint*"/>
</parameters>
</vfunc>
<vfunc name="get_outline">
<return-type type="EekOutline*"/>
<parameters>
<parameter name="self" type="EekKey*"/>
</parameters>
</vfunc>
<vfunc name="set_index">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="column" type="gint"/>
<parameter name="row" type="gint"/>
</parameters>
</vfunc>
<vfunc name="set_keycode">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="keycode" type="guint"/>
</parameters>
</vfunc>
<vfunc name="set_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="group" type="gint"/>
<parameter name="level" type="gint"/>
</parameters>
</vfunc>
<vfunc name="set_keysyms">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="keysyms" type="guint*"/>
<parameter name="num_groups" type="gint"/>
<parameter name="num_levels" type="gint"/>
</parameters>
</vfunc>
<vfunc name="set_outline">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKey*"/>
<parameter name="outline" type="EekOutline*"/>
</parameters>
</vfunc>
</object>
<object name="EekKeyboard" parent="EekContainer" type-name="EekKeyboard" get-type="eek_keyboard_get_type">
<method name="create_section" symbol="eek_keyboard_create_section">
<return-type type="EekSection*"/>
<parameters>
<parameter name="keyboard" type="EekKeyboard*"/>
</parameters>
</method>
<method name="find_key_by_keycode" symbol="eek_keyboard_find_key_by_keycode">
<return-type type="EekKey*"/>
<parameters>
<parameter name="keyboard" type="EekKeyboard*"/>
<parameter name="keycode" type="guint"/>
</parameters>
</method>
<method name="get_keysym_index" symbol="eek_keyboard_get_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="keyboard" type="EekKeyboard*"/>
<parameter name="group" type="gint*"/>
<parameter name="level" type="gint*"/>
</parameters>
</method>
<method name="realize" symbol="eek_keyboard_realize">
<return-type type="void"/>
<parameters>
<parameter name="keyboard" type="EekKeyboard*"/>
</parameters>
</method>
<method name="set_keysym_index" symbol="eek_keyboard_set_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="keyboard" type="EekKeyboard*"/>
<parameter name="group" type="gint"/>
<parameter name="level" type="gint"/>
</parameters>
</method>
<method name="set_layout" symbol="eek_keyboard_set_layout">
<return-type type="void"/>
<parameters>
<parameter name="keyboard" type="EekKeyboard*"/>
<parameter name="layout" type="EekLayout*"/>
</parameters>
</method>
<property name="group" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="level" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<signal name="key-pressed" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="object" type="EekKeyboard*"/>
<parameter name="p0" type="EekKey*"/>
</parameters>
</signal>
<signal name="key-released" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="object" type="EekKeyboard*"/>
<parameter name="p0" type="EekKey*"/>
</parameters>
</signal>
<vfunc name="create_section">
<return-type type="EekSection*"/>
<parameters>
<parameter name="self" type="EekKeyboard*"/>
</parameters>
</vfunc>
<vfunc name="find_key_by_keycode">
<return-type type="EekKey*"/>
<parameters>
<parameter name="self" type="EekKeyboard*"/>
<parameter name="keycode" type="guint"/>
</parameters>
</vfunc>
<vfunc name="get_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKeyboard*"/>
<parameter name="group" type="gint*"/>
<parameter name="level" type="gint*"/>
</parameters>
</vfunc>
<vfunc name="realize">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKeyboard*"/>
</parameters>
</vfunc>
<vfunc name="set_keysym_index">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKeyboard*"/>
<parameter name="group" type="gint"/>
<parameter name="level" type="gint"/>
</parameters>
</vfunc>
<vfunc name="set_layout">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekKeyboard*"/>
<parameter name="layout" type="EekLayout*"/>
</parameters>
</vfunc>
</object>
<object name="EekSection" parent="EekContainer" type-name="EekSection" get-type="eek_section_get_type">
<method name="add_row" symbol="eek_section_add_row">
<return-type type="void"/>
<parameters>
<parameter name="section" type="EekSection*"/>
<parameter name="num_columns" type="gint"/>
<parameter name="orientation" type="EekOrientation"/>
</parameters>
</method>
<method name="create_key" symbol="eek_section_create_key">
<return-type type="EekKey*"/>
<parameters>
<parameter name="section" type="EekSection*"/>
<parameter name="column" type="gint"/>
<parameter name="row" type="gint"/>
</parameters>
</method>
<method name="find_key_by_keycode" symbol="eek_section_find_key_by_keycode">
<return-type type="EekKey*"/>
<parameters>
<parameter name="section" type="EekSection*"/>
<parameter name="keycode" type="guint"/>
</parameters>
</method>
<method name="get_angle" symbol="eek_section_get_angle">
<return-type type="gint"/>
<parameters>
<parameter name="section" type="EekSection*"/>
</parameters>
</method>
<method name="get_n_rows" symbol="eek_section_get_n_rows">
<return-type type="gint"/>
<parameters>
<parameter name="section" type="EekSection*"/>
</parameters>
</method>
<method name="get_row" symbol="eek_section_get_row">
<return-type type="void"/>
<parameters>
<parameter name="section" type="EekSection*"/>
<parameter name="index" type="gint"/>
<parameter name="num_columns" type="gint*"/>
<parameter name="orientation" type="EekOrientation*"/>
</parameters>
</method>
<method name="set_angle" symbol="eek_section_set_angle">
<return-type type="void"/>
<parameters>
<parameter name="section" type="EekSection*"/>
<parameter name="angle" type="gint"/>
</parameters>
</method>
<property name="angle" type="gint" readable="1" writable="1" construct="0" construct-only="0"/>
<signal name="key-pressed" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="object" type="EekSection*"/>
<parameter name="p0" type="EekKey*"/>
</parameters>
</signal>
<signal name="key-released" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="object" type="EekSection*"/>
<parameter name="p0" type="EekKey*"/>
</parameters>
</signal>
<vfunc name="add_row">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekSection*"/>
<parameter name="num_columns" type="gint"/>
<parameter name="orientation" type="EekOrientation"/>
</parameters>
</vfunc>
<vfunc name="create_key">
<return-type type="EekKey*"/>
<parameters>
<parameter name="self" type="EekSection*"/>
<parameter name="row" type="gint"/>
<parameter name="column" type="gint"/>
</parameters>
</vfunc>
<vfunc name="find_key_by_keycode">
<return-type type="EekKey*"/>
<parameters>
<parameter name="self" type="EekSection*"/>
<parameter name="keycode" type="guint"/>
</parameters>
</vfunc>
<vfunc name="get_angle">
<return-type type="gint"/>
<parameters>
<parameter name="self" type="EekSection*"/>
</parameters>
</vfunc>
<vfunc name="get_n_rows">
<return-type type="gint"/>
<parameters>
<parameter name="self" type="EekSection*"/>
</parameters>
</vfunc>
<vfunc name="get_row">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekSection*"/>
<parameter name="index" type="gint"/>
<parameter name="num_columns" type="gint*"/>
<parameter name="orientation" type="EekOrientation*"/>
</parameters>
</vfunc>
<vfunc name="set_angle">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekSection*"/>
<parameter name="angle" type="gint"/>
</parameters>
</vfunc>
</object>
<interface name="EekLayout" type-name="EekLayout" get-type="eek_layout_get_type">
<method name="apply" symbol="eek_layout_apply">
<return-type type="void"/>
<parameters>
<parameter name="layout" type="EekLayout*"/>
<parameter name="keyboard" type="EekKeyboard*"/>
</parameters>
</method>
<method name="get_group" symbol="eek_layout_get_group">
<return-type type="gint"/>
<parameters>
<parameter name="layout" type="EekLayout*"/>
</parameters>
</method>
<signal name="changed" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekLayout*"/>
</parameters>
</signal>
<signal name="group-changed" when="FIRST">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekLayout*"/>
<parameter name="group" type="gint"/>
</parameters>
</signal>
<vfunc name="apply">
<return-type type="void"/>
<parameters>
<parameter name="self" type="EekLayout*"/>
<parameter name="keyboard" type="EekKeyboard*"/>
</parameters>
</vfunc>
<vfunc name="get_group">
<return-type type="gint"/>
<parameters>
<parameter name="self" type="EekLayout*"/>
</parameters>
</vfunc>
</interface>
<constant name="EEK_CONTAINER_H" type="int" value="1"/>
<constant name="EEK_ELEMENT_H" type="int" value="1"/>
<constant name="EEK_KEYBOARD_H" type="int" value="1"/>
<constant name="EEK_KEYSYM_H" type="int" value="1"/>
<constant name="EEK_KEY_H" type="int" value="1"/>
<constant name="EEK_LAYOUT_H" type="int" value="1"/>
<constant name="EEK_SECTION_H" type="int" value="1"/>
<constant name="EEK_TYPES_H" type="int" value="1"/>
</namespace>
</api>

View File

@ -1 +0,0 @@
Eek

View File

@ -1,6 +0,0 @@
include/eek-0.1/eek/eek-clutter-keyboard.h
include/eek-0.1/eek/eek-clutter-section.h
include/eek-0.1/eek/eek-clutter-key.h
include/eek-0.1/eek/eek-clutter-drawing-context.h
lib/libeek-clutter.so

View File

@ -1,85 +0,0 @@
<?xml version="1.0"?>
<api version="1.0">
<namespace name="EekClutter">
<object name="EekClutterDrawingContext" parent="GInitiallyUnowned" type-name="EekClutterDrawingContext" get-type="eek_clutter_drawing_context_get_type">
<method name="get_category_font" symbol="eek_clutter_drawing_context_get_category_font">
<return-type type="PangoFontDescription*"/>
<parameters>
<parameter name="context" type="EekClutterDrawingContext*"/>
<parameter name="category" type="EekKeysymCategory"/>
</parameters>
</method>
<method name="get_outline_texture" symbol="eek_clutter_drawing_context_get_outline_texture">
<return-type type="ClutterActor*"/>
<parameters>
<parameter name="context" type="EekClutterDrawingContext*"/>
<parameter name="outline" type="EekOutline*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_clutter_drawing_context_new">
<return-type type="EekClutterDrawingContext*"/>
</constructor>
<method name="set_category_font" symbol="eek_clutter_drawing_context_set_category_font">
<return-type type="void"/>
<parameters>
<parameter name="context" type="EekClutterDrawingContext*"/>
<parameter name="category" type="EekKeysymCategory"/>
<parameter name="fonts" type="PangoFontDescription*"/>
</parameters>
</method>
<method name="set_outline_texture" symbol="eek_clutter_drawing_context_set_outline_texture">
<return-type type="void"/>
<parameters>
<parameter name="context" type="EekClutterDrawingContext*"/>
<parameter name="outline" type="EekOutline*"/>
<parameter name="texture" type="ClutterActor*"/>
</parameters>
</method>
</object>
<object name="EekClutterKey" parent="EekKey" type-name="EekClutterKey" get-type="eek_clutter_key_get_type">
<method name="get_actor" symbol="eek_clutter_key_get_actor">
<return-type type="ClutterActor*"/>
<parameters>
<parameter name="key" type="EekClutterKey*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_clutter_key_new">
<return-type type="EekKey*"/>
<parameters>
<parameter name="context" type="EekClutterDrawingContext*"/>
<parameter name="column" type="gint"/>
<parameter name="row" type="gint"/>
</parameters>
</constructor>
</object>
<object name="EekClutterKeyboard" parent="EekKeyboard" type-name="EekClutterKeyboard" get-type="eek_clutter_keyboard_get_type">
<method name="get_actor" symbol="eek_clutter_keyboard_get_actor">
<return-type type="ClutterActor*"/>
<parameters>
<parameter name="keyboard" type="EekClutterKeyboard*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_clutter_keyboard_new">
<return-type type="EekKeyboard*"/>
</constructor>
</object>
<object name="EekClutterSection" parent="EekSection" type-name="EekClutterSection" get-type="eek_clutter_section_get_type">
<method name="get_actor" symbol="eek_clutter_section_get_actor">
<return-type type="ClutterActor*"/>
<parameters>
<parameter name="section" type="EekClutterSection*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_clutter_section_new">
<return-type type="EekSection*"/>
<parameters>
<parameter name="context" type="EekClutterDrawingContext*"/>
</parameters>
</constructor>
</object>
<constant name="EEK_CLUTTER_DRAWING_CONTEXT_H" type="int" value="1"/>
<constant name="EEK_CLUTTER_KEYBOARD_H" type="int" value="1"/>
<constant name="EEK_CLUTTER_KEY_H" type="int" value="1"/>
<constant name="EEK_CLUTTER_SECTION_H" type="int" value="1"/>
</namespace>
</api>

View File

@ -1 +0,0 @@
EekClutter cheader_filename="eek/eek-clutter.h"

View File

@ -1 +0,0 @@
EekClutter

View File

@ -0,0 +1 @@
eek-0.90

View File

@ -1,3 +0,0 @@
include/eek-0.1/eek/eek-gtk-keyboard.h
include/eek-0.1/eek/eek-gtk.h
lib/libeek-gtk.so

View File

@ -1,18 +0,0 @@
<?xml version="1.0"?>
<api version="1.0">
<namespace name="EekGtk">
<object name="EekGtkKeyboard" parent="EekKeyboard" type-name="EekGtkKeyboard" get-type="eek_gtk_keyboard_get_type">
<method name="get_widget" symbol="eek_gtk_keyboard_get_widget">
<return-type type="GtkWidget*"/>
<parameters>
<parameter name="keyboard" type="EekGtkKeyboard*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_gtk_keyboard_new">
<return-type type="EekKeyboard*"/>
</constructor>
</object>
<constant name="EEK_GTK_H" type="int" value="1"/>
<constant name="EEK_GTK_KEYBOARD_H" type="int" value="1"/>
</namespace>
</api>

View File

@ -1 +0,0 @@
EekGtk

View File

@ -1,2 +0,0 @@
include/eek-0.1/eek/eek-xkb-layout.h
lib/libeek-xkb.so

View File

@ -1,65 +0,0 @@
<?xml version="1.0"?>
<api version="1.0">
<namespace name="EekXkb">
<object name="EekXkbLayout" parent="GInitiallyUnowned" type-name="EekXkbLayout" get-type="eek_xkb_layout_get_type">
<implements>
<interface name="EekLayout"/>
</implements>
<method name="get_geometry" symbol="eek_xkb_layout_get_geometry">
<return-type type="gchar*"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
</parameters>
</method>
<method name="get_keycodes" symbol="eek_xkb_layout_get_keycodes">
<return-type type="gchar*"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
</parameters>
</method>
<method name="get_symbols" symbol="eek_xkb_layout_get_symbols">
<return-type type="gchar*"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_xkb_layout_new">
<return-type type="EekLayout*"/>
</constructor>
<method name="set_geometry" symbol="eek_xkb_layout_set_geometry">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
<parameter name="geometry" type="gchar*"/>
</parameters>
</method>
<method name="set_keycodes" symbol="eek_xkb_layout_set_keycodes">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
<parameter name="keycodes" type="gchar*"/>
</parameters>
</method>
<!--
<method name="set_names" symbol="eek_xkb_layout_set_names">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
<parameter name="names" type="XkbComponentNamesRec*"/>
</parameters>
</method>
-->
<method name="set_symbols" symbol="eek_xkb_layout_set_symbols">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXkbLayout*"/>
<parameter name="symbols" type="gchar*"/>
</parameters>
</method>
<property name="geometry" type="char*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="keycodes" type="char*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="symbols" type="char*" readable="1" writable="1" construct="0" construct-only="0"/>
</object>
<constant name="EEK_XKB_LAYOUT_H" type="int" value="1"/>
</namespace>
</api>

View File

@ -1 +0,0 @@
EekXkb cheader_filename="eek/eek-xkb.h"

View File

@ -1 +0,0 @@
EekXkb

View File

@ -0,0 +1,2 @@
eek-0.90
x11

View File

@ -1,3 +0,0 @@
include/eek-0.1/eek/eek-xkl-layout.h
lib/libeek-xkl.so

View File

@ -1,91 +0,0 @@
<?xml version="1.0"?>
<api version="1.0">
<namespace name="EekXkl">
<object name="EekXklLayout" parent="EekXkbLayout" type-name="EekXklLayout" get-type="eek_xkl_layout_get_type">
<implements>
<interface name="EekLayout"/>
</implements>
<method name="disable_option" symbol="eek_xkl_layout_disable_option">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="option" type="gchar*"/>
</parameters>
</method>
<method name="enable_option" symbol="eek_xkl_layout_enable_option">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="option" type="gchar*"/>
</parameters>
</method>
<method name="get_layouts" symbol="eek_xkl_layout_get_layouts">
<return-type type="gchar**"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
</parameters>
</method>
<method name="get_model" symbol="eek_xkl_layout_get_model">
<return-type type="gchar*"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
</parameters>
</method>
<method name="get_option" symbol="eek_xkl_layout_get_option">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="option" type="gchar*"/>
</parameters>
</method>
<method name="get_options" symbol="eek_xkl_layout_get_options">
<return-type type="gchar**"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
</parameters>
</method>
<method name="get_variants" symbol="eek_xkl_layout_get_variants">
<return-type type="gchar**"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
</parameters>
</method>
<constructor name="new" symbol="eek_xkl_layout_new">
<return-type type="EekLayout*"/>
</constructor>
<method name="set_layouts" symbol="eek_xkl_layout_set_layouts">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="layouts" type="gchar**"/>
</parameters>
</method>
<method name="set_model" symbol="eek_xkl_layout_set_model">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="model" type="gchar*"/>
</parameters>
</method>
<method name="set_options" symbol="eek_xkl_layout_set_options">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="options" type="gchar**"/>
</parameters>
</method>
<method name="set_variants" symbol="eek_xkl_layout_set_variants">
<return-type type="gboolean"/>
<parameters>
<parameter name="layout" type="EekXklLayout*"/>
<parameter name="variants" type="gchar**"/>
</parameters>
</method>
<property name="layouts" type="GStrv*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="model" type="char*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="options" type="GStrv*" readable="1" writable="1" construct="0" construct-only="0"/>
<property name="variants" type="GStrv*" readable="1" writable="1" construct="0" construct-only="0"/>
</object>
<constant name="EEK_XKL_LAYOUT_H" type="int" value="1"/>
</namespace>
</api>

View File

@ -1 +0,0 @@
EekXkl

View File

@ -20,7 +20,7 @@ AC_PREREQ(2.63)
dnl AC_CONFIG_SRCDIR([configure.ac]) dnl AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_INIT([eekboard], [0.90.1], [ueno@unixuser.org]) AC_INIT([eekboard], [1.0.8], [ueno@unixuser.org])
dnl Init automake dnl Init automake
AM_INIT_AUTOMAKE AM_INIT_AUTOMAKE
@ -44,34 +44,13 @@ AC_HEADER_STDC
LT_INIT LT_INIT
IT_PROG_INTLTOOL([0.35.0]) IT_PROG_INTLTOOL([0.35.0])
AC_MSG_CHECKING([which gtk+ version to compile against]) GTK_API_VERSION=3.0
AC_ARG_WITH([gtk], GTK_REQUIRED=2.91.0
[AS_HELP_STRING([--with-gtk=2.0|3.0],[which gtk+ version to compile against (default: 2.0)])], EEK_API_VERSION=0.90
[case "$with_gtk" in EEK_API_MAJOR_VERSION=0
2.0|3.0) ;; EEK_API_MINOR_VERSION=90
*) AC_MSG_ERROR([invalid gtk version specified]) ;; EEK_API_PC_VERSION=0.90
esac], EEK_LIBRARY_SUFFIX="-$EEK_API_VERSION"
[with_gtk=2.0])
AC_MSG_RESULT([$with_gtk])
case "$with_gtk" in
2.0) GTK_API_VERSION=2.0
GTK_REQUIRED=2.14.0
EEK_API_VERSION=0.90
EEK_API_MAJOR_VERSION=0
EEK_API_MINOR_VERSION=90
EEK_API_PC_VERSION=0.90
EEK_LIBRARY_SUFFIX="-$EEK_API_VERSION"
;;
3.0) GTK_API_VERSION=3.0
GTK_REQUIRED=2.91.0
EEK_API_VERSION=0.90
EEK_API_MAJOR_VERSION=0
EEK_API_MINOR_VERSION=90
EEK_API_PC_VERSION=0.90
EEK_LIBRARY_SUFFIX="-$EEK_API_VERSION"
;;
esac
AC_SUBST([GTK_API_VERSION]) AC_SUBST([GTK_API_VERSION])
AC_SUBST([EEK_API_VERSION]) AC_SUBST([EEK_API_VERSION])
@ -81,104 +60,137 @@ AC_SUBST([EEK_API_PC_VERSION])
AC_SUBST([EEK_LIBRARY_SUFFIX]) AC_SUBST([EEK_LIBRARY_SUFFIX])
AC_SUBST([EEK_LIBRARY_SUFFIX_U],[AS_TR_SH([$EEK_LIBRARY_SUFFIX])]) AC_SUBST([EEK_LIBRARY_SUFFIX_U],[AS_TR_SH([$EEK_LIBRARY_SUFFIX])])
AM_CONDITIONAL([HAVE_GTK_2],[test "$with_gtk" = "2.0"])
AM_CONDITIONAL([HAVE_GTK_3],[test "$with_gtk" = "3.0"])
AM_PATH_GLIB_2_0 AM_PATH_GLIB_2_0
PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.25.4], , PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.26.0], ,
[AC_MSG_ERROR([GLib2 not found])]) [AC_MSG_ERROR([GLib2 not found])])
PKG_CHECK_MODULES([GIO2], [gio-2.0], , PKG_CHECK_MODULES([GIO2], [gio-2.0], ,
[AC_MSG_ERROR([Gio2 not found])]) [AC_MSG_ERROR([Gio2 not found])])
GLIB_GSETTINGS
PKG_CHECK_MODULES([PANGOCAIRO], [pangocairo], , PKG_CHECK_MODULES([PANGOCAIRO], [pangocairo], ,
[AC_MSG_ERROR([PangoCairo not found])]) [AC_MSG_ERROR([PangoCairo not found])])
PKG_CHECK_MODULES([GTK], [ PKG_CHECK_MODULES([GTK], [
gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gtk+-$GTK_API_VERSION >= $GTK_REQUIRED
gdk-$GTK_API_VERSION >= $GTK_REQUIRED], , gdk-$GTK_API_VERSION >= $GTK_REQUIRED], ,
[AC_MSG_ERROR([GTK not found])]) [AC_MSG_ERROR([GTK not found])])
PKG_CHECK_MODULES([GCONF2], [gconf-2.0], ,
[AC_MSG_ERROR([GConf not found])])
PKG_CHECK_MODULES([XKB], [x11], ,
[AC_MSG_ERROR([XKB support not found])])
PKG_CHECK_MODULES([LIBXKLAVIER], [libxklavier x11], , PKG_CHECK_MODULES([LIBXKLAVIER], [libxklavier x11], ,
[AC_MSG_ERROR([Libxklavier not found])]) [AC_MSG_ERROR([Libxklavier not found])])
PKG_CHECK_MODULES([LIBCROCO], [libcroco-0.6], ,
[AC_MSG_ERROR([libcroco not found])])
dnl use libfakekey to generate key events dnl use XTest to generate key events
AC_MSG_CHECKING([whether you enable fakekey]) AC_MSG_CHECKING([whether you enable XTest])
AC_ARG_ENABLE(fakekey, AC_ARG_ENABLE(xtest,
AS_HELP_STRING([--enable-fakekey=no/yes], AS_HELP_STRING([--enable-xtest=no/yes],
[Enable fakekey default=yes]),, [Enable XTest default=yes]),
enable_fakekey=yes) enable_xtest=$enableval,
enable_xtest=yes)
if test x$enable_fakekey = xyes; then if test x$enable_xtest = xyes; then
PKG_CHECK_MODULES([FAKEKEY], [libfakekey], , PKG_CHECK_MODULES([XTEST], [xtst], , enable_xtest=no)
[AC_MSG_ERROR([fakekey not found])]) if test x$enable_xtest = xyes; then
AC_DEFINE([HAVE_FAKEKEY], [1], [Define if fakekey is found]) AC_DEFINE([HAVE_XTEST], [1], [Define if XTest is found])
fi
fi fi
AM_CONDITIONAL(ENABLE_FAKEKEY, [test x$enable_fakekey = xyes]) AM_CONDITIONAL(ENABLE_XTEST, [test x$enable_xtest = xyes])
AC_MSG_RESULT($enable_fakekey) AC_MSG_RESULT($enable_xtest)
dnl use AT-SPI to capture focus/keystroke events dnl use X to mark the fullscreen window as dock
AC_MSG_CHECKING([whether you enable AT-SPI event handling]) AC_MSG_CHECKING([whether you enable X dock])
AC_ARG_ENABLE(cspi, AC_ARG_ENABLE(x-dock,
AS_HELP_STRING([--enable-cspi=no/yes], AS_HELP_STRING([--enable-x-dock=no/yes],
[Enable AT-SPI event handling default=yes]),, [Enable X dock default=yes]),
enable_cspi=yes) enable_x_dock=$enableval,
enable_x_dock=yes)
if test x$enable_cspi = xyes; then if test x$enable_x_dock = xyes; then
PKG_CHECK_MODULES([CSPI], [cspi-1.0], , PKG_CHECK_MODULES([XDOCK], [x11], , enable_x_dock=no)
[AC_MSG_ERROR([AT-SPI C not found])]) if test x$enable_x_dock = xyes; then
AC_DEFINE([HAVE_CSPI], [1], [Define if CSPI is found]) AC_DEFINE([HAVE_XDOCK], [1], [Define if X dock is found])
fi
fi fi
AC_MSG_RESULT($enable_cspi) AM_CONDITIONAL(ENABLE_XDOCK, [test x$enable_x_dock = xyes])
AM_CONDITIONAL(ENABLE_CSPI, [test x$enable_cspi = xyes]) AC_MSG_RESULT($enable_x_dock)
focus_listeners="ibus"
keystroke_listeners=""
dnl use AT-SPI 2 to capture focus/keystroke events
AC_MSG_CHECKING([whether you enable AT-SPI 2 event handling])
AC_ARG_ENABLE(atspi,
AS_HELP_STRING([--enable-atspi=no/yes],
[Enable AT-SPI 2 event handling default=yes]),
enable_atspi=$enableval,
enable_atspi=yes)
if test x$enable_atspi = xyes; then
PKG_CHECK_MODULES([ATSPI2], [atspi-2], , enable_atspi=no)
if test x$enable_atspi = xyes; then
AC_DEFINE([HAVE_ATSPI], [1], [Define if AT-SPI 2 is found])
focus_listeners="atspi $focus_listeners"
keystroke_listeners="atspi $keystroke_listeners"
fi
fi
AC_MSG_RESULT($enable_atspi)
AM_CONDITIONAL(ENABLE_ATSPI, [test x$enable_atspi = xyes])
if test -n "$focus_listeners"; then
AC_DEFINE(ENABLE_FOCUS_LISTENER, [1], [Define if eekboard can follow focus changes])
fi
GOBJECT_INTROSPECTION_CHECK([0.9.0])
dnl Vala langauge binding dnl Vala langauge binding
AC_MSG_CHECKING([whether you enable Vala language support]) AC_MSG_CHECKING([whether you enable Vala language support])
AC_ARG_ENABLE(vala, AC_ARG_ENABLE(vala,
AS_HELP_STRING([--enable-vala=no/yes], AS_HELP_STRING([--enable-vala=no/yes],
[Enable Vala language binding default=yes]),, [Enable Vala language binding default=yes]),
enable_vala=$enableval,
enable_vala=yes) enable_vala=yes)
if test x$enable_vala = xyes; then
if test "x$INTROSPECTION_SCANNER" = x; then
enable_vala=no
AC_MSG_WARN([GObject-Introspection must be enabled for Vala bindings])
fi
AM_PROG_VALAC([0.10.0])
have_vala=yes
AC_PATH_PROG(VALAC, valac, valac)
AC_SUBST(VALAC)
AC_SUBST(VALAFLAGS)
AC_PATH_PROG([VAPIGEN], [vapigen], [false])
if test "x$VAPIGEN" = "xfalse"; then
enable_vala=no
AC_MSG_WARN([vapigen not found. Was vala compiled with --enable-vapigen?])
fi
AC_SUBST(VAPIGEN)
fi
AC_MSG_RESULT($enable_vala) AC_MSG_RESULT($enable_vala)
AM_CONDITIONAL(ENABLE_VALA, [test x$enable_vala = xyes]) AM_CONDITIONAL(ENABLE_VALA, [test x$enable_vala = xyes])
dnl standalone application dnl libcanberra
AC_MSG_CHECKING([whether you enable eekboard]) AC_MSG_CHECKING([whether you enable libcanberra])
AC_ARG_ENABLE(eekboard, AC_ARG_ENABLE(libcanberra,
AS_HELP_STRING([--enable-eekboard=no/yes], AS_HELP_STRING([--enable-libcanberra=no/yes],
[Build standalone application "ekboard" default=yes]),, [Enable libcanberra user interface default=no]),
enable_eekboard=yes) enable_libcanberra=$enableval,
AC_MSG_RESULT($enable_eekboard) enable_libcanberra=yes)
AM_CONDITIONAL(ENABLE_EEKBOARD, [test x$enable_eekboard = xyes])
dnl Clutter if test x$enable_libcanberra = xyes; then
AC_MSG_CHECKING([whether you enable Clutter]) PKG_CHECK_MODULES([LIBCANBERRA], [libcanberra-gtk3], , enable_libcanberra=no)
AC_ARG_ENABLE(clutter, if test x$enable_libcanberra = xyes; then
AS_HELP_STRING([--enable-clutter=no/yes], AC_DEFINE([HAVE_LIBCANBERRA], [1], [Define if libcanberra is found])
[Enable Clutter user interface default=yes]),, fi
enable_clutter=no)
AC_MSG_RESULT($enable_clutter)
if test x$enable_clutter = xyes; then
PKG_CHECK_MODULES([CLUTTER], [clutter-1.0], ,
[AC_MSG_ERROR([Clutter not found -- install it or add --disable-clutter])])
AC_DEFINE([HAVE_CLUTTER], [1], [Define if Clutter is found])
have_clutter_gtk=0
need_swap_event_workaround=0
PKG_CHECK_MODULES([CLUTTER_GTK], [clutter-gtk-1.0], [have_clutter_gtk=1],
[PKG_CHECK_MODULES([CLUTTER_GTK], [clutter-gtk-0.10 clutter-x11-1.0],
[have_clutter_gtk=1; need_swap_event_workaround=1])])
AC_DEFINE_UNQUOTED([HAVE_CLUTTER_GTK], $have_clutter_gtk,
[Define if Clutter-Gtk is found])
AC_DEFINE_UNQUOTED([NEED_SWAP_EVENT_WORKAROUND], $need_swap_event_workaround,
[Define if GLX_INTEL_swap_event work around is needed])
fi fi
AM_CONDITIONAL(ENABLE_CLUTTER, [test x$enable_clutter = xyes]) AM_CONDITIONAL(ENABLE_LIBCANBERRA, [test x$enable_libcanberra = xyes])
AC_MSG_RESULT($enable_libcanberra)
GTK_DOC_CHECK([1.14],[--flavour no-tmpl]) GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
dnl to re-generate eek/*-keysym-labels.txt
AC_CHECK_PROGS([PYTHON], [python])
dnl define GETTEXT_* variables dnl define GETTEXT_* variables
GETTEXT_PACKAGE=$PACKAGE GETTEXT_PACKAGE=$PACKAGE
AC_SUBST(GETTEXT_PACKAGE) AC_SUBST(GETTEXT_PACKAGE)
@ -186,8 +198,6 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define to the read-only
AM_GLIB_GNU_GETTEXT AM_GLIB_GNU_GETTEXT
AM_GLIB_DEFINE_LOCALEDIR(EEKBOARD_LOCALEDIR) AM_GLIB_DEFINE_LOCALEDIR(EEKBOARD_LOCALEDIR)
GOBJECT_INTROSPECTION_CHECK([0.6.7])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile AC_CONFIG_FILES([Makefile
eek/Makefile eek/Makefile
@ -209,11 +219,12 @@ data/icons/24x24/Makefile
data/icons/32x32/Makefile data/icons/32x32/Makefile
data/icons/48x48/Makefile data/icons/48x48/Makefile
data/icons/scalable/Makefile data/icons/scalable/Makefile
data/themes/Makefile
data/keyboards/Makefile
examples/Makefile
examples/simple-client/Makefile
eek/eek-${EEK_API_VERSION}.pc eek/eek-${EEK_API_VERSION}.pc
eek/eek-clutter-${EEK_API_VERSION}.pc
eek/eek-gtk-${EEK_API_VERSION}.pc eek/eek-gtk-${EEK_API_VERSION}.pc
eek/eek-xkb-${EEK_API_VERSION}.pc
eek/eek-xkl-${EEK_API_VERSION}.pc
eekboard/eekboard-${EEK_API_VERSION}.pc]) eekboard/eekboard-${EEK_API_VERSION}.pc])
AC_OUTPUT AC_OUTPUT
AC_MSG_RESULT([ AC_MSG_RESULT([
@ -223,6 +234,11 @@ Build options:
Build shared libs $enable_shared Build shared libs $enable_shared
Build static libs $enable_static Build static libs $enable_static
CFLAGS $CFLAGS CFLAGS $CFLAGS
Build vala binding $enable_vala Build Vala binding $enable_vala
Sound support $enable_libcanberra
Build document $enable_gtk_doc Build document $enable_gtk_doc
Focus listeners $focus_listeners
Keystroke listeners $keystroke_listeners
]) ])

View File

@ -1 +1,35 @@
SUBDIRS = icons SUBDIRS = icons themes keyboards
@GSETTINGS_RULES@
@INTLTOOL_XML_NOMERGE_RULE@
gsettings_schemas_in_files = org.fedorahosted.eekboard.gschema.xml.in
gsettings_SCHEMAS = $(gsettings_schemas_in_files:.gschema.xml.in=.gschema.xml)
servicedir = $(datadir)/dbus-1/services
service_in_files = eekboard-server.service.in
service_DATA = $(service_in_files:.service.in=.service)
$(service_DATA): $(service_in_files) Makefile
$(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@
desktopdir = $(datadir)/applications
desktop_in_files = eekboard.desktop.in
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
if ENABLE_ATSPI
autostartdir = $(sysconfdir)/xdg/autostart
autostart_in_files = eekboard-autostart.desktop.in
autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
endif
@INTLTOOL_DESKTOP_RULE@
CLEANFILES = $(service_DATA) $(desktop_DATA) $(gsettings_SCHEMAS)
EXTRA_DIST = $(service_in_files) $(desktop_in_files) $(gsettings_schemas_in_files)
if ENABLE_ATSPI
CLEANFILES += $(autostart_DATA)
EXTRA_DIST += $(autostart_in_files)
endif
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1,6 @@
[Desktop Entry]
Name=Eekboard
Exec=eekboard -f
Type=Application
#AutostartCondition=GSettings org.gnome.desktop.a11y.applications screen-keyboard-enabled
X-GNOME-AutoRestart=true

View File

@ -1,3 +1,3 @@
[D-BUS Service] [D-BUS Service]
Name=com.redhat.Eekboard.Server Name=org.fedorahosted.Eekboard
Exec=@bindir@/eekboard-server Exec=@bindir@/eekboard-server

9
data/eekboard.desktop.in Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Eekboard
GenericName=Eekboard Virtual Keyboard
Comment=Virtual Keyboard
Exec=eekboard
Icon=eekboard
Terminal=false
Type=Application
Categories=GTK;Utility;

View File

@ -14,3 +14,4 @@ install-data-hook:
echo "*** $(gtk_update_icon_cache)"; \ echo "*** $(gtk_update_icon_cache)"; \
fi fi
-include $(top_srcdir)/git.mk

View File

@ -14,3 +14,4 @@ install-data-hook:
echo "*** $(gtk_update_icon_cache)"; \ echo "*** $(gtk_update_icon_cache)"; \
fi fi
-include $(top_srcdir)/git.mk

View File

@ -14,3 +14,4 @@ install-data-hook:
echo "*** $(gtk_update_icon_cache)"; \ echo "*** $(gtk_update_icon_cache)"; \
fi fi
-include $(top_srcdir)/git.mk

View File

@ -14,3 +14,4 @@ install-data-hook:
echo "*** $(gtk_update_icon_cache)"; \ echo "*** $(gtk_update_icon_cache)"; \
fi fi
-include $(top_srcdir)/git.mk

View File

@ -14,3 +14,4 @@ install-data-hook:
echo "*** $(gtk_update_icon_cache)"; \ echo "*** $(gtk_update_icon_cache)"; \
fi fi
-include $(top_srcdir)/git.mk

View File

@ -1 +1,3 @@
SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable
-include $(top_srcdir)/git.mk

View File

@ -12,3 +12,4 @@ install-data-hook:
echo "*** $(gtk_update_icon_cache)"; \ echo "*** $(gtk_update_icon_cache)"; \
fi fi
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1,40 @@
keyboardsdir = $(pkgdatadir)/keyboards
nobase_dist_keyboards_DATA = \
keyboards.xml \
geometry/compact.xml \
symbols/ar.xml \
symbols/be.xml \
symbols/fa.xml \
symbols/he.xml \
symbols/ja-kana.xml \
symbols/kk.xml \
symbols/ks.xml \
symbols/my.xml \
symbols/ru.xml \
symbols/th.xml \
symbols/ua.xml \
symbols/ug.xml \
symbols/us.xml \
symbols/zh-bopomofo.xml \
$(inscript_symbols) \
$(NULL)
inscript_symbols = \
symbols/as-inscript.xml \
symbols/bn-inscript.xml \
symbols/gu-inscript.xml \
symbols/hi-inscript.xml \
symbols/kn-inscript.xml \
symbols/ks-inscript.xml \
symbols/mai-inscript.xml \
symbols/ml-inscript.xml \
symbols/mr-inscript.xml \
symbols/or-inscript.xml \
symbols/pa-inscript.xml \
symbols/sd-inscript.xml \
symbols/ta-inscript.xml \
symbols/te-inscript.xml \
$(NULL)
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1,313 @@
<?xml version="1.0"?>
<geometry version="0.90">
<bounds x="0.000000" y="0.000000" width="640.0000" height="296.5853"/>
<section angle="0">
<bounds x="15.60975" y="15.60975" width="640.0000" height="39.02439"/>
<row orientation="1">
<key keycode="9" name="ESC" oref="outline2">
<bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="67" name="FK01" oref="outline2">
<bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="68" name="FK02" oref="outline2">
<bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="69" name="FK03" oref="outline2">
<bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="70" name="FK04" oref="outline2">
<bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="71" name="FK05" oref="outline2">
<bounds x="266.9268" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="72" name="FK06" oref="outline2">
<bounds x="307.5121" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="73" name="FK07" oref="outline2">
<bounds x="348.0975" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="74" name="FK08" oref="outline2">
<bounds x="388.6829" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="75" name="FK09" oref="outline2">
<bounds x="449.5609" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="76" name="FK10" oref="outline2">
<bounds x="490.1463" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="95" name="FK11" oref="outline2">
<bounds x="530.7317" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="96" name="FK12" oref="outline2">
<bounds x="571.3170" y="1.560976" width="37.46341" height="37.46341"/>
</key>
</row>
</section>
<section angle="0">
<bounds x="15.60975" y="78.04878" width="608.7804" height="201.3658"/>
<row orientation="1">
<key keycode="49" name="TLDE" oref="outline2">
<bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="10" name="AE01" oref="outline2">
<bounds x="43.70731" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="11" name="AE02" oref="outline2">
<bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="12" name="AE03" oref="outline2">
<bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="13" name="AE04" oref="outline2">
<bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="14" name="AE05" oref="outline2">
<bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="15" name="AE06" oref="outline2">
<bounds x="245.0731" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="16" name="AE07" oref="outline2">
<bounds x="285.6585" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="17" name="AE08" oref="outline2">
<bounds x="326.2439" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="18" name="AE09" oref="outline2">
<bounds x="366.8292" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="19" name="AE10" oref="outline2">
<bounds x="407.4146" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="20" name="AE11" oref="outline2">
<bounds x="448.0000" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="21" name="AE12" oref="outline2">
<bounds x="488.5853" y="1.560976" width="37.46341" height="37.46341"/>
</key>
<key keycode="22" name="BKSP" oref="outline13">
<bounds x="529.1707" y="1.560976" width="79.60975" height="37.46341"/>
</key>
</row>
<row orientation="1">
<key keycode="23" name="TAB" oref="outline4">
<bounds x="3.121951" y="42.14634" width="59.31707" height="37.46341"/>
</key>
<key keycode="24" name="AD01" oref="outline2">
<bounds x="65.56097" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="25" name="AD02" oref="outline2">
<bounds x="106.1463" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="26" name="AD03" oref="outline2">
<bounds x="145.1707" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="27" name="AD04" oref="outline2">
<bounds x="185.7560" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="28" name="AD05" oref="outline2">
<bounds x="226.3414" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="29" name="AD06" oref="outline2">
<bounds x="266.9268" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="30" name="AD07" oref="outline2">
<bounds x="307.5121" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="31" name="AD08" oref="outline2">
<bounds x="348.0975" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="32" name="AD09" oref="outline2">
<bounds x="388.6829" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="33" name="AD10" oref="outline2">
<bounds x="429.2682" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="34" name="AD11" oref="outline2">
<bounds x="468.2926" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="35" name="AD12" oref="outline2">
<bounds x="508.8780" y="42.14634" width="37.46341" height="37.46341"/>
</key>
<key keycode="51" name="BKSL" oref="outline5">
<bounds x="549.4634" y="42.14634" width="59.31707" height="37.46341"/>
</key>
</row>
<row orientation="1">
<key keycode="66" name="CAPS" oref="outline6">
<bounds x="3.121951" y="82.73170" width="68.68292" height="37.46341"/>
</key>
<key keycode="38" name="AC01" oref="outline2">
<bounds x="76.48780" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="39" name="AC02" oref="outline2">
<bounds x="115.5121" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="40" name="AC03" oref="outline2">
<bounds x="156.0975" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="41" name="AC04" oref="outline2">
<bounds x="196.6829" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="42" name="AC05" oref="outline2">
<bounds x="237.2682" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="43" name="AC06" oref="outline2">
<bounds x="277.8536" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="44" name="AC07" oref="outline2">
<bounds x="318.4390" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="45" name="AC08" oref="outline2">
<bounds x="359.0243" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="46" name="AC09" oref="outline2">
<bounds x="399.6097" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="47" name="AC10" oref="outline2">
<bounds x="438.6341" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="48" name="AC11" oref="outline2">
<bounds x="479.2195" y="82.73170" width="37.46341" height="37.46341"/>
</key>
<key keycode="36" name="RTRN" oref="outline7">
<bounds x="519.8048" y="82.73170" width="88.97561" height="37.46341"/>
</key>
</row>
<row orientation="1">
<key keycode="50" name="LFSH" oref="outline8">
<bounds x="3.121951" y="121.7560" width="88.97561" height="37.46341"/>
</key>
<key keycode="52" name="AB01" oref="outline2">
<bounds x="95.21951" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="53" name="AB02" oref="outline2">
<bounds x="135.8048" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="54" name="AB03" oref="outline2">
<bounds x="176.3902" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="55" name="AB04" oref="outline2">
<bounds x="215.4146" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="56" name="AB05" oref="outline2">
<bounds x="256.0000" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="57" name="AB06" oref="outline2">
<bounds x="296.5853" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="58" name="AB07" oref="outline2">
<bounds x="337.1707" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="59" name="AB08" oref="outline2">
<bounds x="377.7560" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="60" name="AB09" oref="outline2">
<bounds x="418.3414" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="61" name="AB10" oref="outline2">
<bounds x="458.9268" y="121.7560" width="37.46341" height="37.46341"/>
</key>
<key keycode="62" name="RTSH" oref="outline9">
<bounds x="499.5121" y="121.7560" width="109.2682" height="37.46341"/>
</key>
</row>
<row orientation="1">
<key keycode="149" name="I149" oref="outline10">
<bounds x="3.121951" y="162.3414" width="37.46341" height="37.46341"/>
</key>
<key keycode="37" name="LCTL" oref="outline1">
<bounds x="62.43902" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="64" name="LALT" oref="outline1">
<bounds x="113.9512" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="65" name="SPCE" oref="outline3">
<bounds x="165.4634" y="162.3414" width="217.5853" height="37.46341"/>
</key>
<key keycode="113" name="LEFT" oref="outline1">
<bounds x="368.0487" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="111" name="UP" oref="outline1">
<bounds x="419.43894" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="116" name="DOWN" oref="outline1">
<bounds x="470.82918" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="114" name="RGHT" oref="outline1">
<bounds x="522.21942" y="162.3414" width="48.39024" height="37.46341"/>
</key>
<key keycode="150" name="I150" oref="outline10">
<bounds x="573.60966" y="162.3414" width="37.46341" height="37.46341"/>
</key>
</row>
</section>
<outline id="outline2" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="37.46341" y="0.000000"/>
<point x="37.46341" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline1" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="48.39024" y="0.000000"/>
<point x="48.39024" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline4" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="59.31707" y="0.000000"/>
<point x="59.31707" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline5" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="59.31707" y="0.000000"/>
<point x="59.31707" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline6" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="68.68292" y="0.000000"/>
<point x="68.68292" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline7" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="88.97561" y="0.000000"/>
<point x="88.97561" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline8" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="88.97561" y="0.000000"/>
<point x="88.97561" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline9" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="109.2682" y="0.000000"/>
<point x="109.2682" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline10" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="37.46341" y="0.000000"/>
<point x="37.46341" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline13" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="79.60975" y="0.000000"/>
<point x="79.60975" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
<outline id="outline3" corner-radius="1.000000">
<point x="0.000000" y="0.000000"/>
<point x="217.5853" y="0.000000"/>
<point x="217.5853" y="37.46341"/>
<point x="0.000000" y="37.46341"/>
</outline>
</geometry>

View File

@ -0,0 +1,88 @@
<?xml version="1.0"?>
<keyboards version="0.90">
<keyboard id="ar" name="ar"
geometry="compact" symbols="ar"
longname="Arabic" language="ar"/>
<keyboard id="be" name="be"
geometry="compact" symbols="be"
longname="Belarusian" language="be"/>
<keyboard id="fa" name="fa"
geometry="compact" symbols="fa"
longname="Farsi (ISIRI 2901-1994)" language="fa"/>
<keyboard id="he" name="he"
geometry="compact" symbols="he"
longname="Hebrew" language="he"/>
<keyboard id="ja" name="ja"
geometry="compact" symbols="ja-kana"
longname="Japanese (Kana)" language="ja"/>
<keyboard id="kk" name="kk"
geometry="compact" symbols="kk"
longname="Kazakh" language="kk"/>
<keyboard id="ks" name="ks"
geometry="compact" symbols="ks"
longname="Kashmiri" language="ks"/>
<keyboard id="my" name="my"
geometry="compact" symbols="my"
longname="Myanmar" language="my"/>
<keyboard id="ru" name="ru"
geometry="compact" symbols="us"
longname="Russian" language="ru"/>
<keyboard id="th" name="th"
geometry="compact" symbols="th"
longname="Thai" language="th"/>
<keyboard id="ua" name="ua"
geometry="compact" symbols="ua"
longname="Ukrainian" language="ua"/>
<keyboard id="ug" name="ug"
geometry="compact" symbols="ug"
longname="Uyghur" language="ug"/>
<keyboard id="us" name="us"
geometry="compact" symbols="us"
longname="US" language="en"/>
<keyboard id="zh-bopomofo" name="zh-bopomofo"
geometry="compact" symbols="zh-bopomofo"
longname="Chinese (Bopomofo)" language="zh"/>
<!-- Indic Inscript keyboards converted from m17n-lib -->
<keyboard id="as-inscript" name="as-inscript"
geometry="compact" symbols="as-inscript"
longname="Assamese (Inscript)" language="as"/>
<keyboard id="bn-inscript" name="bn-inscript"
geometry="compact" symbols="bn-inscript"
longname="Bengali (Inscript)" language="bn"/>
<keyboard id="gu-inscript" name="gu-inscript"
geometry="compact" symbols="gu-inscript"
longname="Gujarati (Inscript)" language="gu"/>
<keyboard id="hi-inscript" name="hi-inscript"
geometry="compact" symbols="hi-inscript"
longname="Hindi (Inscript)" language="hi"/>
<keyboard id="kn-inscript" name="kn-inscript"
geometry="compact" symbols="kn-inscript"
longname="Kannada (Inscript)" language="kn"/>
<keyboard id="ks-inscript" name="ks-inscript"
geometry="compact" symbols="ks-inscript"
longname="Kashmiri Devanagari (Inscript)" language="ks"/>
<keyboard id="mai-inscript" name="mai-inscript"
geometry="compact" symbols="mai-inscript"
longname="Maithili (Inscript)" language="mai"/>
<keyboard id="ml-inscript" name="ml-inscript"
geometry="compact" symbols="ml-inscript"
longname="Malayalam (Inscript)" language="ml-inscript"/>
<keyboard id="mr-inscript" name="mr-inscript"
geometry="compact" symbols="mr-inscript"
longname="Marathi (Inscript)" language="mr"/>
<keyboard id="or-inscript" name="or-inscript"
geometry="compact" symbols="or-inscript"
longname="Oriya (Inscript)" language="or"/>
<keyboard id="pa-inscript" name="pa-inscript"
geometry="compact" symbols="pa-inscript"
longname="Punjabi (Inscript)" language="pa"/>
<keyboard id="sd-inscript" name="sd-inscript"
geometry="compact" symbols="sd-inscript"
longname="Sindhi (Inscript)" language="sd"/>
<keyboard id="ta-inscript" name="ta-inscript"
geometry="compact" symbols="ta-inscript"
longname="Tamil (Inscript)" language="ta"/>
<keyboard id="te-inscript" name="te-inscript"
geometry="compact" symbols="te-inscript"
longname="Telugu (Inscript)" language="te"/>
</keyboards>

View File

@ -0,0 +1,181 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">ّ</text>
</key>
<key keycode="10" name="AE01">
<text category="letter">١</text>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<text category="letter">٢</text>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<text category="letter">٣</text>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<text category="letter">٤</text>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<text category="letter">٥</text>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter">٦</text>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<text category="letter">٧</text>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<text category="letter">٨</text>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<text category="letter">٩</text>
<text category="letter">)</text>
</key>
<key keycode="19" name="AE10">
<text category="letter">٠</text>
<text category="letter">(</text>
</key>
<key keycode="24" name="AD01">
<text category="letter">ض</text>
<text category="letter">َ</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ص</text>
<text category="letter">ً</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">ث</text>
<text category="letter">ُ</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">ق</text>
<text category="letter">ٌ</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">ف</text>
<text category="letter">لإ</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">غ</text>
<text category="letter">إ</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">ع</text>
<text category="letter">`</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ه</text>
<text category="letter">÷</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">خ</text>
<text category="letter">×</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">ح</text>
<text category="letter">؛</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">ج</text>
<text category="letter">&gt;</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">د</text>
<text category="letter">&lt;</text>
</key>
<key keycode="38" name="AC01">
<text category="letter">ش</text>
<text category="letter">ِ</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">س</text>
<text category="letter">ٍ</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">ي</text>
<text category="letter">]</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ب</text>
<text category="letter">[</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">ل</text>
<text category="letter">لأ</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">ا</text>
<text category="letter">أ</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">ت</text>
<text category="letter">ـ</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">ن</text>
<text category="letter">،</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">م</text>
<text category="letter">/</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">ك</text>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="52" name="AB01">
<text category="letter">ئ</text>
<text category="letter">~</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ء</text>
<text category="letter">ْ</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">ؤ</text>
<text category="letter">}</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">ر</text>
<text category="letter">{</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">لا</text>
<text category="letter">لآ</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">ى</text>
<text category="letter">آ</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">ة</text>
<text category="letter">&apos;</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">و</text>
<text category="letter">,</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">ز</text>
<text category="letter">.</text>
</key>
<key keycode="61" name="AB10">
<text category="letter">ظ</text>
<text category="letter">؟</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">~</text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">্ৰ</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">ৰ্</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">জ্ঞ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">ত্ৰ</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">ক্ষ</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">শ্ৰ</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ি</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter">J</text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter">V</text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter">B</text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter">N</text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">Ё</text>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<text category="letter">&quot;</text>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<text category="letter"></text>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<text category="letter">;</text>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<text category="letter">:</text>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<text category="letter">?</text>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<text category="letter">*</text>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<text category="letter">_</text>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<text category="letter">+</text>
</key>
<key keycode="24" name="AD01">
<text category="letter">й</text>
<text category="letter">Й</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ц</text>
<text category="letter">Ц</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">у</text>
<text category="letter">У</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">к</text>
<text category="letter">К</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">е</text>
<text category="letter">Е</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">н</text>
<text category="letter">Н</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">г</text>
<text category="letter">Г</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ш</text>
<text category="letter">Ш</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">ў</text>
<text category="letter">Ў</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">з</text>
<text category="letter">З</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">х</text>
<text category="letter">Х</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">&apos;</text>
<text category="letter">&apos;</text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter">ф</text>
<text category="letter">Ф</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">ы</text>
<text category="letter">Ы</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">в</text>
<text category="letter">В</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">а</text>
<text category="letter">А</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">п</text>
<text category="letter">П</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">р</text>
<text category="letter">Р</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">о</text>
<text category="letter">О</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">л</text>
<text category="letter">Л</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">д</text>
<text category="letter">Д</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">ж</text>
<text category="letter">Ж</text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">Э</text>
</key>
<key keycode="52" name="AB01">
<text category="letter">я</text>
<text category="letter">Я</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ч</text>
<text category="letter">Ч</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">с</text>
<text category="letter">С</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">м</text>
<text category="letter">М</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">і</text>
<text category="letter">І</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">т</text>
<text category="letter">Т</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">ь</text>
<text category="letter">Ь</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">б</text>
<text category="letter">Б</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">ю</text>
<text category="letter">Ю</text>
</key>
<key keycode="61" name="AB10">
<text category="letter">.</text>
<text category="letter">,</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">~</text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">^</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">&amp;</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">*</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ি</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter">J</text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter">z</text>
<text category="letter">Z</text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter">V</text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter">B</text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter">N</text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<text category="letter">۱</text>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<text category="letter">۲</text>
<text category="letter">٬</text>
</key>
<key keycode="12" name="AE03">
<text category="letter">۳</text>
<text category="letter">٫</text>
</key>
<key keycode="13" name="AE04">
<text category="letter">۴</text>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<text category="letter">۵</text>
<text category="letter">٪</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter">۶</text>
<text category="letter">×</text>
</key>
<key keycode="16" name="AE07">
<text category="letter">۷</text>
<text category="letter">،</text>
</key>
<key keycode="17" name="AE08">
<text category="letter">۸</text>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<text category="letter">۹</text>
<text category="letter">)</text>
</key>
<key keycode="19" name="AE10">
<text category="letter">۰</text>
<text category="letter">(</text>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<keysym keyval="95">underscore</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="24" name="AD01">
<text category="letter">ض</text>
<text category="letter">ْ</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ص</text>
<text category="letter">ٌ</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">ث</text>
<text category="letter">ٍ</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">ق</text>
<text category="letter">ً</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">ف</text>
<text category="letter">ُ</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">غ</text>
<text category="letter">ِ</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">ع</text>
<text category="letter">َ</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ه</text>
<text category="letter">ّ</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">خ</text>
<text category="letter">]</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">ح</text>
<text category="letter">[</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">ج</text>
<text category="letter">}</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">چ</text>
<text category="letter">{</text>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="38" name="AC01">
<text category="letter">ش</text>
<text category="letter">ؤ</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">س</text>
<text category="letter">ئ</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">ی</text>
<text category="letter">ي</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ب</text>
<text category="letter">إ</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">ل</text>
<text category="letter">أ</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">ا</text>
<text category="letter">آ</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">ت</text>
<text category="letter">ة</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">ن</text>
<text category="letter">»</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">م</text>
<text category="letter">«</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">ک</text>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">؛</text>
</key>
<key keycode="52" name="AB01">
<text category="letter">ظ</text>
<text category="letter">ك</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ط</text>
<keysym keyval="88">X</keysym>
</key>
<key keycode="54" name="AB03">
<text category="letter">ز</text>
<text category="letter">ژ</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">ر</text>
<keysym keyval="86">V</keysym>
</key>
<key keycode="56" name="AB05">
<text category="letter">ذ</text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter">د</text>
<text name="N" category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter">پ</text>
<text category="letter">ء</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">و</text>
<text category="letter">&gt;</text>
</key>
<key keycode="60" name="AB09">
<keysym keyval="46">period</keysym>
<text category="letter">&lt;</text>
</key>
<key keycode="61" name="AB10">
<keysym keyval="47">slash</keysym>
<text category="letter">؟</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">~</text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">જ્ઞ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">ત્ર</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">ક્ષ</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">શ્ર</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">િ</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter">&quot;</text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter">&apos;</text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter">?</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<text category="letter">)</text>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<text category="letter">(</text>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<keysym keyval="95">underscore</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="24" name="AD01">
<text category="letter">/</text>
<keysym keyval="81">Q</keysym>
</key>
<key keycode="25" name="AD02">
<text category="letter">&apos;</text>
<keysym keyval="87">W</keysym>
</key>
<key keycode="26" name="AD03">
<text category="letter">ק</text>
<keysym keyval="69">E</keysym>
</key>
<key keycode="27" name="AD04">
<text category="letter">ר</text>
<keysym keyval="82">R</keysym>
</key>
<key keycode="28" name="AD05">
<text category="letter">א</text>
<keysym keyval="84">T</keysym>
</key>
<key keycode="29" name="AD06">
<text category="letter">ט</text>
<keysym keyval="89">Y</keysym>
</key>
<key keycode="30" name="AD07">
<text category="letter">ו</text>
<keysym keyval="85">U</keysym>
</key>
<key keycode="31" name="AD08">
<text category="letter">ן</text>
<keysym keyval="73">I</keysym>
</key>
<key keycode="32" name="AD09">
<text category="letter">ם</text>
<keysym keyval="79">O</keysym>
</key>
<key keycode="33" name="AD10">
<text category="letter">פ</text>
<keysym keyval="80">P</keysym>
</key>
<key keycode="34" name="AD11">
<text category="letter">]</text>
<text category="letter">}</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">[</text>
<text category="letter">{</text>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="38" name="AC01">
<text category="letter">ש</text>
<keysym keyval="65">A</keysym>
</key>
<key keycode="39" name="AC02">
<text category="letter">ד</text>
<keysym keyval="83">S</keysym>
</key>
<key keycode="40" name="AC03">
<text category="letter">ג</text>
<keysym keyval="68">D</keysym>
</key>
<key keycode="41" name="AC04">
<text category="letter">כ</text>
<keysym keyval="70">F</keysym>
</key>
<key keycode="42" name="AC05">
<text category="letter">ע</text>
<keysym keyval="71">G</keysym>
</key>
<key keycode="43" name="AC06">
<text category="letter">י</text>
<keysym keyval="72">H</keysym>
</key>
<key keycode="44" name="AC07">
<text category="letter">ח</text>
<keysym keyval="74">J</keysym>
</key>
<key keycode="45" name="AC08">
<text category="letter">ל</text>
<keysym keyval="75">K</keysym>
</key>
<key keycode="46" name="AC09">
<text category="letter">ך</text>
<keysym keyval="76">L</keysym>
</key>
<key keycode="47" name="AC10">
<text category="letter">ף</text>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="52" name="AB01">
<text category="letter">ז</text>
<keysym keyval="90">Z</keysym>
</key>
<key keycode="53" name="AB02">
<text category="letter">ס</text>
<keysym keyval="88">X</keysym>
</key>
<key keycode="54" name="AB03">
<text category="letter">ב</text>
<keysym keyval="67">C</keysym>
</key>
<key keycode="55" name="AB04">
<text category="letter">ה</text>
<keysym keyval="86">V</keysym>
</key>
<key keycode="56" name="AB05">
<text category="letter">נ</text>
<keysym keyval="66">B</keysym>
</key>
<key keycode="57" name="AB06">
<text category="letter">מ</text>
<keysym keyval="78">N</keysym>
</key>
<key keycode="58" name="AB07">
<text category="letter">צ</text>
<keysym keyval="77">M</keysym>
</key>
<key keycode="59" name="AB08">
<text category="letter">ת</text>
<text category="letter">&gt;</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">ץ</text>
<text category="letter">&lt;</text>
</key>
<key keycode="61" name="AB10">
<text category="letter">.</text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ज्ञ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">त्र</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">क्ष</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">श्र</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter">्‌</text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ि</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,154 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="1246"></keysym>
<keysym keyval="1247"></keysym>
</key>
<key keycode="10" name="AE01">
<keysym keyval="1223"></keysym>
</key>
<key keycode="11" name="AE02">
<keysym keyval="1228"></keysym>
</key>
<key keycode="12" name="AE03">
<keysym keyval="1201"></keysym>
<keysym keyval="1191"></keysym>
</key>
<key keycode="13" name="AE04">
<keysym keyval="1203"></keysym>
<keysym keyval="1193"></keysym>
</key>
<key keycode="14" name="AE05">
<keysym keyval="1204"></keysym>
<keysym keyval="1194"></keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="1205"></keysym>
<keysym keyval="1195"></keysym>
</key>
<key keycode="16" name="AE07">
<keysym keyval="1236"></keysym>
<keysym keyval="1196"></keysym>
</key>
<key keycode="17" name="AE08">
<keysym keyval="1237"></keysym>
<keysym keyval="1197"></keysym>
</key>
<key keycode="18" name="AE09">
<keysym keyval="1238"></keysym>
<keysym keyval="1198"></keysym>
</key>
<key keycode="19" name="AE10">
<keysym keyval="1244"></keysym>
<keysym keyval="1190"></keysym>
</key>
<key keycode="20" name="AE11">
<keysym keyval="1230"></keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="1229"></keysym>
</key>
<key keycode="24" name="AD01">
<keysym keyval="1216"></keysym>
</key>
<key keycode="25" name="AD02">
<keysym keyval="1219"></keysym>
</key>
<key keycode="26" name="AD03">
<keysym keyval="1202"></keysym>
<keysym keyval="1192"></keysym>
</key>
<key keycode="27" name="AD04">
<keysym keyval="1213"></keysym>
</key>
<key keycode="28" name="AD05">
<keysym keyval="1206"></keysym>
</key>
<key keycode="29" name="AD06">
<keysym keyval="1245"></keysym>
</key>
<key keycode="30" name="AD07">
<keysym keyval="1221"></keysym>
</key>
<key keycode="31" name="AD08">
<keysym keyval="1222"></keysym>
</key>
<key keycode="32" name="AD09">
<keysym keyval="1239"></keysym>
</key>
<key keycode="33" name="AD10">
<keysym keyval="1214"></keysym>
</key>
<key keycode="34" name="AD11">
<keysym keyval="1233"></keysym>
</key>
<key keycode="35" name="AD12">
<keysym keyval="1243"></keysym>
</key>
<key keycode="38" name="AC01">
<keysym keyval="1217"></keysym>
</key>
<key keycode="39" name="AC02">
<keysym keyval="1220"></keysym>
</key>
<key keycode="40" name="AC03">
<keysym keyval="1212"></keysym>
</key>
<key keycode="41" name="AC04">
<keysym keyval="1226"></keysym>
</key>
<key keycode="42" name="AC05">
<keysym keyval="1207"></keysym>
</key>
<key keycode="43" name="AC06">
<keysym keyval="1208"></keysym>
</key>
<key keycode="44" name="AC07">
<keysym keyval="1231"></keysym>
</key>
<key keycode="45" name="AC08">
<keysym keyval="1225"></keysym>
</key>
<key keycode="46" name="AC09">
<keysym keyval="1240"></keysym>
</key>
<key keycode="47" name="AC10">
<keysym keyval="1242"></keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="1209"></keysym>
</key>
<key keycode="52" name="AB01">
<keysym keyval="1218"></keysym>
<keysym keyval="1199"></keysym>
</key>
<key keycode="53" name="AB02">
<keysym keyval="1211"></keysym>
</key>
<key keycode="54" name="AB03">
<keysym keyval="1215"></keysym>
</key>
<key keycode="55" name="AB04">
<keysym keyval="1227"></keysym>
</key>
<key keycode="56" name="AB05">
<keysym keyval="1210"></keysym>
</key>
<key keycode="57" name="AB06">
<keysym keyval="1232"></keysym>
</key>
<key keycode="58" name="AB07">
<keysym keyval="1235"></keysym>
</key>
<key keycode="59" name="AB08">
<keysym keyval="1224"></keysym>
</key>
<key keycode="60" name="AB09">
<keysym keyval="1241"></keysym>
</key>
<key keycode="61" name="AB10">
<keysym keyval="1234"></keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">)</text>
</key>
<key keycode="10" name="AE01">
<text category="letter">&quot;</text>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<text category="letter">ә</text>
<text category="letter">Ә</text>
</key>
<key keycode="12" name="AE03">
<text category="letter">і</text>
<text category="letter">І</text>
</key>
<key keycode="13" name="AE04">
<text category="letter">ӊ</text>
<text category="letter">Ӊ</text>
</key>
<key keycode="14" name="AE05">
<text category="letter">ғ</text>
<text category="letter">Ғ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter">,</text>
<text category="letter">;</text>
</key>
<key keycode="16" name="AE07">
<text category="letter">.</text>
<text category="letter">:</text>
</key>
<key keycode="17" name="AE08">
<text category="letter">ү</text>
<text category="letter">Ү</text>
</key>
<key keycode="18" name="AE09">
<text category="letter">ұ</text>
<text category="letter">Ұ</text>
</key>
<key keycode="19" name="AE10">
<text category="letter">қ</text>
<text category="letter">Қ</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">ө</text>
<text category="letter">Ө</text>
</key>
<key keycode="21" name="AE12">
<text category="letter">һ</text>
<text category="letter">Һ</text>
</key>
<key keycode="24" name="AD01">
<text category="letter">й</text>
<text category="letter">Й</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ц</text>
<text category="letter">Ц</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">у</text>
<text category="letter">У</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">к</text>
<text category="letter">К</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">е</text>
<text category="letter">Е</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">н</text>
<text category="letter">Н</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">г</text>
<text category="letter">Г</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ш</text>
<text category="letter">Ш</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">щ</text>
<text category="letter">Щ</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">з</text>
<text category="letter">З</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">х</text>
<text category="letter">Х</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">ъ</text>
<text category="letter">Ъ</text>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="38" name="AC01">
<text category="letter">ф</text>
<text category="letter">Ф</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">ы</text>
<text category="letter">Ы</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">в</text>
<text category="letter">В</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">а</text>
<text category="letter">А</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">п</text>
<text category="letter">П</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">р</text>
<text category="letter">Р</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">о</text>
<text category="letter">О</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">л</text>
<text category="letter">Л</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">д</text>
<text category="letter">Д</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">ж</text>
<text category="letter">Ж</text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">Э</text>
</key>
<key keycode="52" name="AB01">
<text category="letter">я</text>
<text category="letter">Я</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ч</text>
<text category="letter">Ч</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">с</text>
<text category="letter">С</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">м</text>
<text category="letter">М</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">и</text>
<text category="letter">И</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">т</text>
<text category="letter">Т</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">ь</text>
<text category="letter">Ь</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">б</text>
<text category="letter">Б</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">ю</text>
<text category="letter">Ю</text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ಜ್ಞ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">ತ್ರ</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">ಕ್ಷ</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">ಶ್ರ</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter">]</text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ಿ</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text name="X" category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<keysym keyval="66">B</keysym>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ज्ञ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">त्र</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">क्ष</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">श्र</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter">ॿ</text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter">्‌</text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ि</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<keysym keyval="103">g</keysym>
<keysym keyval="71">G</keysym>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">ً</text>
</key>
<key keycode="10" name="AE01">
<text category="letter">۱</text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter">۲</text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter">۳</text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter">۴</text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter">۵</text>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter">۶</text>
<text category="letter">^</text>
</key>
<key keycode="16" name="AE07">
<text category="letter">۷</text>
<text category="letter">&amp;</text>
</key>
<key keycode="17" name="AE08">
<text category="letter">۸</text>
<text category="letter">*</text>
</key>
<key keycode="18" name="AE09">
<text category="letter">۹</text>
<text category="letter">)</text>
</key>
<key keycode="19" name="AE10">
<text category="letter">۰</text>
<text category="letter">(</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter">ّ</text>
</key>
<key keycode="21" name="AE12">
<text category="letter">=</text>
<text category="letter">+</text>
</key>
<key keycode="24" name="AD01">
<text category="letter">ق</text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter">و</text>
<text category="letter">ؤ</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">ع</text>
<text category="letter">ئ</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">ر</text>
<text category="letter">ڑ</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">ت</text>
<text category="letter">ٹ</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">ے</text>
<text category="letter">؁</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">ء</text>
<text category="letter">،</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ی</text>
<text category="letter">ۆ</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">ہ</text>
<text category="letter">ۃ</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">پ</text>
<text category="letter">إ</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">]</text>
<text category="letter">ٰ</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">[</text>
<text category="letter">ٰ</text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">؎</text>
<text category="letter">أ</text>
</key>
<key keycode="38" name="AC01">
<text category="letter">ا</text>
<text category="letter">آ</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">س</text>
<text category="letter">ش</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">د</text>
<text category="letter">ڈ</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ف</text>
<text category="letter">ُ</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">گ</text>
<text category="letter">غ</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">ھ</text>
<text category="letter">ح</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">ج</text>
<text category="letter">ژ</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">ک</text>
<text category="letter">خ</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">ل</text>
<text category="letter">ؓ</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">؛</text>
<text category="letter">:</text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">&quot;</text>
</key>
<key keycode="52" name="AB01">
<text category="letter">ز</text>
<text category="letter">ذ</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ص</text>
<text category="letter">ض</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">چ</text>
<text category="letter">ث</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">ط</text>
<text category="letter">ظ</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">ب</text>
<text category="letter">أ</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">ن</text>
<text category="letter">ں</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">م</text>
<text category="letter">ٔ</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">،</text>
<text category="letter">ِ</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">۔</text>
<text category="letter">َ</text>
</key>
<key keycode="61" name="AB10">
<text category="letter">/</text>
<text category="letter">؟</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ज्ञ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">त्र</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">क्ष</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">श्र</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter">्‌</text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ि</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">്ര</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">^</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">ക്ഷ</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">*</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ി</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter">X</text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter">V</text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter">&gt;</text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ज्ञ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">त्र</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">क्ष</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">श्र</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ि</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<keysym keyval="95">underscore</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<keysym keyval="87">W</keysym>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<keysym keyval="69">E</keysym>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<keysym keyval="82">R</keysym>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<keysym keyval="84">T</keysym>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<keysym keyval="89">Y</keysym>
</key>
<key keycode="30" name="AD07">
<text category="letter">က</text>
<keysym keyval="85">U</keysym>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<keysym keyval="73">I</keysym>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<keysym keyval="75">K</keysym>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<keysym keyval="76">L</keysym>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<keysym keyval="66">B</keysym>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<keysym keyval="78">N</keysym>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<keysym keyval="77">M</keysym>
</key>
<key keycode="59" name="AB08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">୍ର</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">ର୍</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ଜ୍ଞ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">ତ୍ର</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">କ୍ଷ</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">ଶ୍ର</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ି</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter">J</text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter">z</text>
<text category="letter">Z</text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter">V</text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<keysym keyval="41">parenright</keysym>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter">_</text>
</key>
<key keycode="21" name="AE12">
<text category="letter">=</text>
<text category="letter">+</text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ਿ</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter">?</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">Ё</text>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<text category="letter">&quot;</text>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<text category="letter"></text>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<text category="letter">;</text>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<text category="letter">:</text>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<text category="letter">?</text>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<text category="letter">*</text>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<text category="letter">_</text>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<text category="letter">+</text>
</key>
<key keycode="24" name="AD01">
<text category="letter">й</text>
<text category="letter">Й</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ц</text>
<text category="letter">Ц</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">у</text>
<text category="letter">У</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">к</text>
<text category="letter">К</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">е</text>
<text category="letter">Е</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">н</text>
<text category="letter">Н</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">г</text>
<text category="letter">Г</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ш</text>
<text category="letter">Ш</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">щ</text>
<text category="letter">Щ</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">з</text>
<text category="letter">З</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">х</text>
<text category="letter">Х</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">ъ</text>
<text category="letter">Ъ</text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter">ф</text>
<text category="letter">Ф</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">ы</text>
<text category="letter">Ы</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">в</text>
<text category="letter">В</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">а</text>
<text category="letter">А</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">п</text>
<text category="letter">П</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">р</text>
<text category="letter">Р</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">о</text>
<text category="letter">О</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">л</text>
<text category="letter">Л</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">д</text>
<text category="letter">Д</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">ж</text>
<text category="letter">Ж</text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">Э</text>
</key>
<key keycode="52" name="AB01">
<text category="letter">я</text>
<text category="letter">Я</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ч</text>
<text category="letter">Ч</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">с</text>
<text category="letter">С</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">м</text>
<text category="letter">М</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">и</text>
<text category="letter">И</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">т</text>
<text category="letter">Т</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">ь</text>
<text category="letter">Ь</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">б</text>
<text category="letter">Б</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">ю</text>
<text category="letter">Ю</text>
</key>
<key keycode="61" name="AB10">
<text category="letter">.</text>
<text category="letter">,</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">ज्ञ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">त्र</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">क्ष</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">श्र</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter">ॿ</text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter">्‌</text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ि</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter"></text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter">1</text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter">2</text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter">3</text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter">4</text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter">5</text>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter">6</text>
<text category="letter">^</text>
</key>
<key keycode="16" name="AE07">
<text category="letter">7</text>
<text category="letter">க்ஷ</text>
</key>
<key keycode="17" name="AE08">
<text category="letter">8</text>
<text category="letter">ஷ்ர</text>
</key>
<key keycode="18" name="AE09">
<text category="letter">9</text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter">0</text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<text category="letter">=</text>
<text category="letter">+</text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter">y</text>
<text category="letter">Y</text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter">i</text>
<text category="letter">I</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">o</text>
<text category="letter">O</text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter">P</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">[</text>
<text category="letter">{</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">]</text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ி</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter">H</text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter">K</text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter">L</text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter">:</text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">&quot;</text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter">x</text>
<text category="letter">X</text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter">M</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter">&gt;</text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,194 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter"></text>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<text category="letter">@</text>
</key>
<key keycode="12" name="AE03">
<text category="letter"></text>
<text category="letter">#</text>
</key>
<key keycode="13" name="AE04">
<text category="letter"></text>
<text category="letter">$</text>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<text category="letter">జ్ఞ</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter"></text>
<text category="letter">త్ర</text>
</key>
<key keycode="16" name="AE07">
<text category="letter"></text>
<text category="letter">క్ష</text>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<text category="letter">శ్ర</text>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<text category="letter">-</text>
<text category="letter">_</text>
</key>
<key keycode="21" name="AE12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="34" name="AD11">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="35" name="AD12">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="51" name="BKSL">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ి</text>
<text category="letter"></text>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter"></text>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<text category="letter"></text>
</key>
<key keycode="59" name="AB08">
<text category="letter">,</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<text category="letter">.</text>
<text category="letter">&gt;</text>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<text category="letter">?</text>
</key>
</symbols>

View File

@ -0,0 +1,192 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="95">underscore</keysym>
<keysym keyval="37">percent</keysym>
</key>
<key keycode="10" name="AE01">
<keysym keyval="3557">Thai_lakkhangyao</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="11" name="AE02">
<keysym keyval="47">slash</keysym>
<keysym keyval="3569">Thai_leknung</keysym>
</key>
<key keycode="12" name="AE03">
<keysym keyval="45">minus</keysym>
<keysym keyval="3570">Thai_leksong</keysym>
</key>
<key keycode="13" name="AE04">
<keysym keyval="3520">Thai_phosamphao</keysym>
<keysym keyval="3571">Thai_leksam</keysym>
</key>
<key keycode="14" name="AE05">
<keysym keyval="3510">Thai_thothung</keysym>
<keysym keyval="3572">Thai_leksi</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="3544">Thai_sarau</keysym>
<keysym keyval="3545">Thai_sarauu</keysym>
</key>
<key keycode="16" name="AE07">
<keysym keyval="3542">Thai_saraue</keysym>
<keysym keyval="3551">Thai_baht</keysym>
</key>
<key keycode="17" name="AE08">
<keysym keyval="3492">Thai_khokhwai</keysym>
<keysym keyval="3573">Thai_lekha</keysym>
</key>
<key keycode="18" name="AE09">
<keysym keyval="3509">Thai_totao</keysym>
<keysym keyval="3574">Thai_lekhok</keysym>
</key>
<key keycode="19" name="AE10">
<keysym keyval="3496">Thai_chochan</keysym>
<keysym keyval="3575">Thai_lekchet</keysym>
</key>
<key keycode="20" name="AE11">
<keysym keyval="3490">Thai_khokhai</keysym>
<keysym keyval="3576">Thai_lekpaet</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="3498">Thai_chochang</keysym>
<keysym keyval="3577">Thai_lekkao</keysym>
</key>
<key keycode="24" name="AD01">
<keysym keyval="3558">Thai_maiyamok</keysym>
<keysym keyval="3568">Thai_leksun</keysym>
</key>
<key keycode="25" name="AD02">
<keysym keyval="3556">Thai_saraaimaimalai</keysym>
<keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="26" name="AD03">
<keysym keyval="3539">Thai_saraam</keysym>
<keysym keyval="3502">Thai_dochada</keysym>
</key>
<key keycode="27" name="AD04">
<keysym keyval="3518">Thai_phophan</keysym>
<keysym keyval="3505">Thai_thonangmontho</keysym>
</key>
<key keycode="28" name="AD05">
<keysym keyval="3536">Thai_saraa</keysym>
<keysym keyval="3512">Thai_thothong</keysym>
</key>
<key keycode="29" name="AD06">
<keysym keyval="3537">Thai_maihanakat</keysym>
<keysym keyval="3565">Thai_nikhahit</keysym>
</key>
<key keycode="30" name="AD07">
<keysym keyval="3541">Thai_saraii</keysym>
<keysym keyval="3562">Thai_maitri</keysym>
</key>
<key keycode="31" name="AD08">
<keysym keyval="3523">Thai_rorua</keysym>
<keysym keyval="3507">Thai_nonen</keysym>
</key>
<key keycode="32" name="AD09">
<keysym keyval="3513">Thai_nonu</keysym>
<keysym keyval="3535">Thai_paiyannoi</keysym>
</key>
<key keycode="33" name="AD10">
<keysym keyval="3522">Thai_yoyak</keysym>
<keysym keyval="3501">Thai_yoying</keysym>
</key>
<key keycode="34" name="AD11">
<keysym keyval="3514">Thai_bobaimai</keysym>
<keysym keyval="3504">Thai_thothan</keysym>
</key>
<key keycode="35" name="AD12">
<keysym keyval="3525">Thai_loling</keysym>
<keysym keyval="44">comma</keysym>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="3491">Thai_khokhuat</keysym>
<keysym keyval="3493">Thai_khokhon</keysym>
</key>
<key keycode="38" name="AC01">
<keysym keyval="3519">Thai_fofan</keysym>
<keysym keyval="3524">Thai_ru</keysym>
</key>
<key keycode="39" name="AC02">
<keysym keyval="3531">Thai_hohip</keysym>
<keysym keyval="3494">Thai_khorakhang</keysym>
</key>
<key keycode="40" name="AC03">
<keysym keyval="3489">Thai_kokai</keysym>
<keysym keyval="3503">Thai_topatak</keysym>
</key>
<key keycode="41" name="AC04">
<keysym keyval="3508">Thai_dodek</keysym>
<keysym keyval="3554">Thai_sarao</keysym>
</key>
<key keycode="42" name="AC05">
<keysym keyval="3552">Thai_sarae</keysym>
<keysym keyval="3500">Thai_chochoe</keysym>
</key>
<key keycode="43" name="AC06">
<keysym keyval="3561">Thai_maitho</keysym>
<keysym keyval="3559">Thai_maitaikhu</keysym>
</key>
<key keycode="44" name="AC07">
<keysym keyval="3560">Thai_maiek</keysym>
<keysym keyval="3563">Thai_maichattawa</keysym>
</key>
<key keycode="45" name="AC08">
<keysym keyval="3538">Thai_saraaa</keysym>
<keysym keyval="3529">Thai_sorusi</keysym>
</key>
<key keycode="46" name="AC09">
<keysym keyval="3530">Thai_sosua</keysym>
<keysym keyval="3528">Thai_sosala</keysym>
</key>
<key keycode="47" name="AC10">
<keysym keyval="3527">Thai_wowaen</keysym>
<keysym keyval="3499">Thai_soso</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="3495">Thai_ngongu</keysym>
<keysym keyval="46">period</keysym>
</key>
<key keycode="52" name="AB01">
<keysym keyval="3516">Thai_phophung</keysym>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="53" name="AB02">
<keysym keyval="3515">Thai_popla</keysym>
<keysym keyval="41">parenright</keysym>
</key>
<key keycode="54" name="AB03">
<keysym keyval="3553">Thai_saraae</keysym>
<keysym keyval="3497">Thai_choching</keysym>
</key>
<key keycode="55" name="AB04">
<keysym keyval="3533">Thai_oang</keysym>
<keysym keyval="3534">Thai_honokhuk</keysym>
</key>
<key keycode="56" name="AB05">
<keysym keyval="3540">Thai_sarai</keysym>
<keysym keyval="3546">Thai_phinthu</keysym>
</key>
<key keycode="57" name="AB06">
<keysym keyval="3543">Thai_sarauee</keysym>
<keysym keyval="3564">Thai_thanthakhat</keysym>
</key>
<key keycode="58" name="AB07">
<keysym keyval="3511">Thai_thothahan</keysym>
<keysym keyval="63">question</keysym>
</key>
<key keycode="59" name="AB08">
<keysym keyval="3521">Thai_moma</keysym>
<keysym keyval="3506">Thai_thophuthao</keysym>
</key>
<key keycode="60" name="AB09">
<keysym keyval="3555">Thai_saraaimaimuan</keysym>
<keysym keyval="3532">Thai_lochula</keysym>
</key>
<key keycode="61" name="AB10">
<keysym keyval="3517">Thai_fofa</keysym>
<keysym keyval="3526">Thai_lu</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<text category="letter">Ґ</text>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<text category="letter">!</text>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<text category="letter">&quot;</text>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<text category="letter"></text>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<text category="letter">;</text>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<text category="letter">%</text>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<text category="letter">:</text>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<text category="letter">?</text>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<text category="letter">*</text>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<text category="letter">(</text>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<text category="letter">)</text>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<text category="letter">_</text>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<text category="letter">+</text>
</key>
<key keycode="24" name="AD01">
<text category="letter">й</text>
<text category="letter">Й</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ц</text>
<text category="letter">Ц</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">у</text>
<text category="letter">У</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">к</text>
<text category="letter">К</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">е</text>
<text category="letter">Е</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">н</text>
<text category="letter">Н</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">г</text>
<text category="letter">Г</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ш</text>
<text category="letter">Ш</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">щ</text>
<text category="letter">Щ</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">з</text>
<text category="letter">З</text>
</key>
<key keycode="34" name="AD11">
<text category="letter">х</text>
<text category="letter">Х</text>
</key>
<key keycode="35" name="AD12">
<text category="letter">ї</text>
<text category="letter">Ї</text>
</key>
<key keycode="51" name="BKSL">
<text category="letter">\</text>
<text category="letter">|</text>
</key>
<key keycode="38" name="AC01">
<text category="letter">ф</text>
<text category="letter">Ф</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">і</text>
<text category="letter">І</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">в</text>
<text category="letter">В</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">а</text>
<text category="letter">А</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">п</text>
<text category="letter">П</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">р</text>
<text category="letter">Р</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">о</text>
<text category="letter">О</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">л</text>
<text category="letter">Л</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">д</text>
<text category="letter">Д</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">ж</text>
<text category="letter">Ж</text>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<text category="letter">Є</text>
</key>
<key keycode="52" name="AB01">
<text category="letter">я</text>
<text category="letter">Я</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ч</text>
<text category="letter">Ч</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">с</text>
<text category="letter">С</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">м</text>
<text category="letter">М</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">и</text>
<text category="letter">И</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">т</text>
<text category="letter">Т</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">ь</text>
<text category="letter">Ь</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">б</text>
<text category="letter">Б</text>
</key>
<key keycode="60" name="AB09">
<text category="letter">ю</text>
<text category="letter">Ю</text>
</key>
<key keycode="61" name="AB10">
<text category="letter">.</text>
<text category="letter">,</text>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<keysym keyval="41">parenright</keysym>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<text category="letter"></text>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="24" name="AD01">
<text category="letter">چ</text>
<text category="letter">چ</text>
</key>
<key keycode="25" name="AD02">
<text category="letter">ۋ</text>
<text category="letter">ۋ</text>
</key>
<key keycode="26" name="AD03">
<text category="letter">ې</text>
<text category="letter">ې</text>
</key>
<key keycode="27" name="AD04">
<text category="letter">ر</text>
<text category="letter">ر</text>
</key>
<key keycode="28" name="AD05">
<text category="letter">ت</text>
<text category="letter">ت</text>
</key>
<key keycode="29" name="AD06">
<text category="letter">ي</text>
<text category="letter">ي</text>
</key>
<key keycode="30" name="AD07">
<text category="letter">ۇ</text>
<text category="letter">ۇ</text>
</key>
<key keycode="31" name="AD08">
<text category="letter">ڭ</text>
<text category="letter">ڭ</text>
</key>
<key keycode="32" name="AD09">
<text category="letter">و</text>
<text category="letter">و</text>
</key>
<key keycode="33" name="AD10">
<text category="letter">پ</text>
<text category="letter">پ</text>
</key>
<key keycode="34" name="AD11">
<keysym keyval="91">bracketleft</keysym>
<text category="letter">«</text>
</key>
<key keycode="35" name="AD12">
<keysym keyval="93">bracketright</keysym>
<text category="letter">»</text>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="38" name="AC01">
<text category="letter">ھ</text>
<text category="letter">ھ</text>
</key>
<key keycode="39" name="AC02">
<text category="letter">س</text>
<text category="letter">س</text>
</key>
<key keycode="40" name="AC03">
<text category="letter">د</text>
<text category="letter">ژ</text>
</key>
<key keycode="41" name="AC04">
<text category="letter">ا</text>
<text category="letter">ف</text>
</key>
<key keycode="42" name="AC05">
<text category="letter">ە</text>
<text category="letter">گ</text>
</key>
<key keycode="43" name="AC06">
<text category="letter">ى</text>
<text category="letter">خ</text>
</key>
<key keycode="44" name="AC07">
<text category="letter">ق</text>
<text category="letter">ج</text>
</key>
<key keycode="45" name="AC08">
<text category="letter">ك</text>
<text category="letter">ۆ</text>
</key>
<key keycode="46" name="AC09">
<text category="letter">ل</text>
<text category="letter">ل</text>
</key>
<key keycode="47" name="AC10">
<text category="letter">؛</text>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="52" name="AB01">
<text category="letter">ز</text>
<text category="letter">ز</text>
</key>
<key keycode="53" name="AB02">
<text category="letter">ش</text>
<text category="letter">ش</text>
</key>
<key keycode="54" name="AB03">
<text category="letter">غ</text>
<text category="letter">غ</text>
</key>
<key keycode="55" name="AB04">
<text category="letter">ۈ</text>
<text category="letter">ۈ</text>
</key>
<key keycode="56" name="AB05">
<text category="letter">ب</text>
<text category="letter">ب</text>
</key>
<key keycode="57" name="AB06">
<text category="letter">ن</text>
<text category="letter">ن</text>
</key>
<key keycode="58" name="AB07">
<text category="letter">م</text>
<text category="letter">م</text>
</key>
<key keycode="59" name="AB08">
<text category="letter">،</text>
<text category="letter"></text>
</key>
<key keycode="60" name="AB09">
<keysym keyval="46">period</keysym>
<text category="letter"></text>
</key>
<key keycode="61" name="AB10">
<text category="letter">ئ</text>
<text category="letter">؟</text>
</key>
</symbols>

View File

@ -0,0 +1,278 @@
<?xml version="1.0"?>
<symbols version="0.90">
<key keycode="9" name="ESC">
<keysym keyval="65307">Escape</keysym>
</key>
<key keycode="67" name="FK01">
<keysym keyval="65470">F1</keysym>
</key>
<key keycode="68" name="FK02">
<keysym keyval="65471">F2</keysym>
</key>
<key keycode="69" name="FK03">
<keysym keyval="65472">F3</keysym>
</key>
<key keycode="70" name="FK04">
<keysym keyval="65473">F4</keysym>
</key>
<key keycode="71" name="FK05">
<keysym keyval="65474">F5</keysym>
</key>
<key keycode="72" name="FK06">
<keysym keyval="65475">F6</keysym>
</key>
<key keycode="73" name="FK07">
<keysym keyval="65476">F7</keysym>
</key>
<key keycode="74" name="FK08">
<keysym keyval="65477">F8</keysym>
</key>
<key keycode="75" name="FK09">
<keysym keyval="65478">F9</keysym>
</key>
<key keycode="76" name="FK10">
<keysym keyval="65479">F10</keysym>
</key>
<key keycode="95" name="FK11">
<keysym keyval="65480">F11</keysym>
</key>
<key keycode="96" name="FK12">
<keysym keyval="65481">F12</keysym>
</key>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<keysym keyval="49">1</keysym>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<keysym keyval="50">2</keysym>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<keysym keyval="51">3</keysym>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<keysym keyval="52">4</keysym>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<keysym keyval="53">5</keysym>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<keysym keyval="54">6</keysym>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<keysym keyval="55">7</keysym>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<keysym keyval="56">8</keysym>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<keysym keyval="57">9</keysym>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="19" name="AE10">
<keysym keyval="48">0</keysym>
<keysym keyval="41">parenright</keysym>
</key>
<key keycode="20" name="AE11">
<keysym keyval="45">minus</keysym>
<keysym keyval="95">underscore</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="22" name="BKSP">
<keysym keyval="65288">BackSpace</keysym>
</key>
<key keycode="23" name="TAB">
<keysym keyval="65289">Tab</keysym>
<keysym keyval="65056">ISO_Left_Tab</keysym>
</key>
<key keycode="24" name="AD01">
<keysym keyval="113">q</keysym>
<keysym keyval="81">Q</keysym>
</key>
<key keycode="25" name="AD02">
<keysym keyval="119">w</keysym>
<keysym keyval="87">W</keysym>
</key>
<key keycode="26" name="AD03">
<keysym keyval="101">e</keysym>
<keysym keyval="69">E</keysym>
</key>
<key keycode="27" name="AD04">
<keysym keyval="114">r</keysym>
<keysym keyval="82">R</keysym>
</key>
<key keycode="28" name="AD05">
<keysym keyval="116">t</keysym>
<keysym keyval="84">T</keysym>
</key>
<key keycode="29" name="AD06">
<keysym keyval="121">y</keysym>
<keysym keyval="89">Y</keysym>
</key>
<key keycode="30" name="AD07">
<keysym keyval="117">u</keysym>
<keysym keyval="85">U</keysym>
</key>
<key keycode="31" name="AD08">
<keysym keyval="105">i</keysym>
<keysym keyval="73">I</keysym>
</key>
<key keycode="32" name="AD09">
<keysym keyval="111">o</keysym>
<keysym keyval="79">O</keysym>
</key>
<key keycode="33" name="AD10">
<keysym keyval="112">p</keysym>
<keysym keyval="80">P</keysym>
</key>
<key keycode="34" name="AD11">
<keysym keyval="91">bracketleft</keysym>
<keysym keyval="123">braceleft</keysym>
</key>
<key keycode="35" name="AD12">
<keysym keyval="93">bracketright</keysym>
<keysym keyval="125">braceright</keysym>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="66" name="CAPS">
<keysym keyval="65027">ISO_Level3_Shift</keysym>
</key>
<key keycode="38" name="AC01">
<keysym keyval="97">a</keysym>
<keysym keyval="65">A</keysym>
</key>
<key keycode="39" name="AC02">
<keysym keyval="115">s</keysym>
<keysym keyval="83">S</keysym>
</key>
<key keycode="40" name="AC03">
<keysym keyval="100">d</keysym>
<keysym keyval="68">D</keysym>
</key>
<key keycode="41" name="AC04">
<keysym keyval="102">f</keysym>
<keysym keyval="70">F</keysym>
</key>
<key keycode="42" name="AC05">
<keysym keyval="103">g</keysym>
<keysym keyval="71">G</keysym>
</key>
<key keycode="43" name="AC06">
<keysym keyval="104">h</keysym>
<keysym keyval="72">H</keysym>
</key>
<key keycode="44" name="AC07">
<keysym keyval="106">j</keysym>
<keysym keyval="74">J</keysym>
</key>
<key keycode="45" name="AC08">
<keysym keyval="107">k</keysym>
<keysym keyval="75">K</keysym>
</key>
<key keycode="46" name="AC09">
<keysym keyval="108">l</keysym>
<keysym keyval="76">L</keysym>
</key>
<key keycode="47" name="AC10">
<keysym keyval="59">semicolon</keysym>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="36" name="RTRN">
<keysym keyval="65293">Return</keysym>
</key>
<key keycode="50" name="LFSH">
<keysym keyval="65505">Shift_L</keysym>
</key>
<key keycode="52" name="AB01">
<keysym keyval="122">z</keysym>
<keysym keyval="90">Z</keysym>
</key>
<key keycode="53" name="AB02">
<keysym keyval="120">x</keysym>
<keysym keyval="88">X</keysym>
</key>
<key keycode="54" name="AB03">
<keysym keyval="99">c</keysym>
<keysym keyval="67">C</keysym>
</key>
<key keycode="55" name="AB04">
<keysym keyval="118">v</keysym>
<keysym keyval="86">V</keysym>
</key>
<key keycode="56" name="AB05">
<keysym keyval="98">b</keysym>
<keysym keyval="66">B</keysym>
</key>
<key keycode="57" name="AB06">
<keysym keyval="110">n</keysym>
<keysym keyval="78">N</keysym>
</key>
<key keycode="58" name="AB07">
<keysym keyval="109">m</keysym>
<keysym keyval="77">M</keysym>
</key>
<key keycode="59" name="AB08">
<keysym keyval="44">comma</keysym>
<keysym keyval="60">less</keysym>
</key>
<key keycode="60" name="AB09">
<keysym keyval="46">period</keysym>
<keysym keyval="62">greater</keysym>
</key>
<key keycode="61" name="AB10">
<keysym keyval="47">slash</keysym>
<keysym keyval="63">question</keysym>
</key>
<key keycode="62" name="RTSH">
<keysym keyval="65506">Shift_R</keysym>
</key>
<key keycode="149" name="I149">
<symbol label="⌨" icon="input-keyboard-symbolic" tooltip="Change keyboard">cycle-keyboard</symbol>
</key>
<key keycode="150" name="I150">
<symbol label="☺" icon="preferences-system-symbolic" tooltip="Setup">preferences</symbol>
</key>
<key keycode="37" name="LCTL">
<keysym keyval="65507">Control_L</keysym>
</key>
<key keycode="64" name="LALT">
<keysym keyval="65513">Alt_L</keysym>
<keysym keyval="65511">Meta_L</keysym>
</key>
<key keycode="65" name="SPCE">
<keysym keyval="32">space</keysym>
</key>
<key keycode="113" name="LEFT">
<keysym keyval="65361">Left</keysym>
</key>
<key keycode="111" name="UP">
<keysym keyval="65362">Up</keysym>
</key>
<key keycode="116" name="DOWN">
<keysym keyval="65364">Down</keysym>
</key>
<key keycode="114" name="RGHT">
<keysym keyval="65363">Right</keysym>
</key>
</symbols>

View File

@ -0,0 +1,193 @@
<?xml version="1.0"?>
<symbols version="0.90">
<include>us</include>
<key keycode="49" name="TLDE">
<keysym keyval="96">quoteleft</keysym>
<keysym keyval="126">asciitilde</keysym>
</key>
<key keycode="10" name="AE01">
<text category="letter"></text>
<keysym keyval="33">exclam</keysym>
</key>
<key keycode="11" name="AE02">
<text category="letter"></text>
<keysym keyval="64">at</keysym>
</key>
<key keycode="12" name="AE03">
<text category="letter">ˇ</text>
<keysym keyval="35">numbersign</keysym>
</key>
<key keycode="13" name="AE04">
<text category="letter">ˋ</text>
<keysym keyval="36">dollar</keysym>
</key>
<key keycode="14" name="AE05">
<text category="letter"></text>
<keysym keyval="37">percent</keysym>
<keysym keyval="8364">EuroSign</keysym>
</key>
<key keycode="15" name="AE06">
<text category="letter">ˊ</text>
<keysym keyval="94">asciicircum</keysym>
</key>
<key keycode="16" name="AE07">
<text category="letter">˙</text>
<keysym keyval="38">ampersand</keysym>
</key>
<key keycode="17" name="AE08">
<text category="letter"></text>
<keysym keyval="42">asterisk</keysym>
</key>
<key keycode="18" name="AE09">
<text category="letter"></text>
<keysym keyval="40">parenleft</keysym>
</key>
<key keycode="19" name="AE10">
<text category="letter"></text>
<keysym keyval="41">parenright</keysym>
</key>
<key keycode="20" name="AE11">
<text category="letter"></text>
<keysym keyval="95">underscore</keysym>
</key>
<key keycode="21" name="AE12">
<keysym keyval="61">equal</keysym>
<keysym keyval="43">plus</keysym>
</key>
<key keycode="24" name="AD01">
<text category="letter"></text>
<keysym keyval="81">Q</keysym>
</key>
<key keycode="25" name="AD02">
<text category="letter"></text>
<keysym keyval="87">W</keysym>
</key>
<key keycode="26" name="AD03">
<text category="letter"></text>
<keysym keyval="69">E</keysym>
</key>
<key keycode="27" name="AD04">
<text category="letter"></text>
<keysym keyval="82">R</keysym>
</key>
<key keycode="28" name="AD05">
<text category="letter"></text>
<keysym keyval="84">T</keysym>
</key>
<key keycode="29" name="AD06">
<text category="letter"></text>
<keysym keyval="89">Y</keysym>
</key>
<key keycode="30" name="AD07">
<text category="letter"></text>
<keysym keyval="85">U</keysym>
</key>
<key keycode="31" name="AD08">
<text category="letter"></text>
<keysym keyval="73">I</keysym>
</key>
<key keycode="32" name="AD09">
<text category="letter"></text>
<keysym keyval="79">O</keysym>
</key>
<key keycode="33" name="AD10">
<text category="letter"></text>
<keysym keyval="80">P</keysym>
</key>
<key keycode="34" name="AD11">
<keysym keyval="91">bracketleft</keysym>
<keysym keyval="123">braceleft</keysym>
</key>
<key keycode="35" name="AD12">
<keysym keyval="93">bracketright</keysym>
<keysym keyval="125">braceright</keysym>
</key>
<key keycode="51" name="BKSL">
<keysym keyval="92">backslash</keysym>
<keysym keyval="124">bar</keysym>
</key>
<key keycode="38" name="AC01">
<text category="letter"></text>
<keysym keyval="65">A</keysym>
</key>
<key keycode="39" name="AC02">
<text category="letter"></text>
<keysym keyval="83">S</keysym>
</key>
<key keycode="40" name="AC03">
<text category="letter"></text>
<keysym keyval="68">D</keysym>
</key>
<key keycode="41" name="AC04">
<text category="letter"></text>
<keysym keyval="70">F</keysym>
</key>
<key keycode="42" name="AC05">
<text category="letter"></text>
<keysym keyval="71">G</keysym>
</key>
<key keycode="43" name="AC06">
<text category="letter"></text>
<keysym keyval="72">H</keysym>
</key>
<key keycode="44" name="AC07">
<text category="letter"></text>
<keysym keyval="74">J</keysym>
</key>
<key keycode="45" name="AC08">
<text category="letter"></text>
<keysym keyval="75">K</keysym>
</key>
<key keycode="46" name="AC09">
<text category="letter"></text>
<keysym keyval="76">L</keysym>
</key>
<key keycode="47" name="AC10">
<text category="letter"></text>
<keysym keyval="58">colon</keysym>
</key>
<key keycode="48" name="AC11">
<keysym keyval="39">quoteright</keysym>
<keysym keyval="34">quotedbl</keysym>
</key>
<key keycode="52" name="AB01">
<text category="letter"></text>
<keysym keyval="90">Z</keysym>
</key>
<key keycode="53" name="AB02">
<text category="letter"></text>
<keysym keyval="88">X</keysym>
</key>
<key keycode="54" name="AB03">
<text category="letter"></text>
<keysym keyval="67">C</keysym>
</key>
<key keycode="55" name="AB04">
<text category="letter"></text>
<keysym keyval="86">V</keysym>
</key>
<key keycode="56" name="AB05">
<text category="letter"></text>
<keysym keyval="66">B</keysym>
</key>
<key keycode="57" name="AB06">
<text category="letter"></text>
<keysym keyval="78">N</keysym>
</key>
<key keycode="58" name="AB07">
<text category="letter"></text>
<keysym keyval="77">M</keysym>
</key>
<key keycode="59" name="AB08">
<text category="letter"></text>
<keysym keyval="60">less</keysym>
</key>
<key keycode="60" name="AB09">
<text category="letter"></text>
<keysym keyval="62">greater</keysym>
</key>
<key keycode="61" name="AB10">
<text category="letter"></text>
<keysym keyval="63">question</keysym>
</key>
</symbols>

View File

@ -0,0 +1,60 @@
<?xml version="1.0"?>
<schemalist>
<schema id="org.fedorahosted.eekboard" path="/org/fedorahosted/eekboard/">
<key name="keyboards" type="as">
<default>['us']</default>
<summary>Keyboard types</summary>
<description>keyboard types.</description>
</key>
<key name="focus-listener" type="s">
<default>'atspi'</default>
<summary>Use the given focus listener</summary>
<description>The name of the focus listener (either 'atspi' or 'ibus') used to detect focus events.</description>
</key>
<key name="auto-hide" type="b">
<default>true</default>
<summary>Hide keyboard automatically when focus is out</summary>
<description>If true, hide keyboard automatically when focus is out.</description>
</key>
<key name="auto-hide-delay" type="u">
<default>500</default>
<summary>Delay before hiding keyboard</summary>
<description>Delay before hiding keyboard in milliseconds. This is useful when focus listener is enabled.</description>
</key>
<key type="b" name="repeat">
<default>true</default>
<summary>Key repeat</summary>
<description>Generate key-press/release event repeatedly while a key is held down</description>
</key>
<key type="u" name="repeat-interval">
<default>100</default>
<summary>Key repeat interval</summary>
<description>Delay between repeats in milliseconds.</description>
</key>
<key type="u" name="repeat-delay">
<default>1000</default>
<summary>Initial key repeat delay</summary>
<description>Initial key repeat delay in milliseconds.</description>
</key>
<key name="start-fullscreen" type="b">
<default>false</default>
<summary>Switch to fullscreen mode when startup</summary>
<description>If true, switch to fullscreen mode when startup.</description>
</key>
<key name="size-constraint-landscape" type="(dd)">
<default>(1.0, 0.3)</default>
<summary>Constraint of the maximum window size on landscape screen</summary>
<description>Constraint of maximum window size on landscape screen</description>
</key>
<key name="size-constraint-portrait" type="(dd)">
<default>(1.0, 0.5)</default>
<summary>Constraint of the maximum window size on portrait screen</summary>
<description>Constraint of maximum window size on portrait screen</description>
</key>
<key name="theme" type="s">
<default>'default'</default>
<summary>Theme</summary>
<description>Base name of the theme to apply.</description>
</key>
</schema>
</schemalist>

4
data/themes/Makefile.am Normal file
View File

@ -0,0 +1,4 @@
themedir = $(pkgdatadir)/themes
dist_theme_DATA = default.css
-include $(top_srcdir)/git.mk

22
data/themes/default.css Normal file
View File

@ -0,0 +1,22 @@
.keyboard {
background-color: rgba(0, 0, 0, 255);
color: #ffffff;
font-family: cantarell, sans-serif;
}
.key {
color: #ffffff;
background-gradient-direction: vertical;
background-gradient-start: rgba(0, 0, 0, 255);
background-gradient-end: rgba(64, 64, 64, 255);
border-width: 2px;
border-color: rgba(128, 128, 128, 255);
border-radius: 3px;
}
.key:active {
background-gradient-direction: vertical;
background-gradient-start: rgba(0, 0, 255, 255);
background-gradient-end: rgba(64, 64, 255, 255);
border-color: rgba(160, 160, 255, 255);
}

View File

@ -17,3 +17,5 @@
# 02110-1301 USA # 02110-1301 USA
SUBDIRS = reference SUBDIRS = reference
-include $(top_srcdir)/git.mk

View File

@ -17,3 +17,5 @@
# 02110-1301 USA # 02110-1301 USA
SUBDIRS = eek eekboard SUBDIRS = eek eekboard
-include $(top_srcdir)/git.mk

View File

@ -47,7 +47,7 @@ SCANGOBJ_OPTIONS=
# Extra options to supply to gtkdoc-scan. # Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
SCAN_OPTIONS= SCAN_OPTIONS=--rebuild-types --deprecated-guards="EEK_DISABLE_DEPRECATED"
# Extra options to supply to gtkdoc-mkdb. # Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
@ -76,7 +76,13 @@ EXTRA_HFILES=
# Header files to ignore when scanning. Use base file name, no paths # Header files to ignore when scanning. Use base file name, no paths
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
IGNORE_HFILES=config.h IGNORE_HFILES = \
config.h \
eek-renderer.h \
eek-gtk-renderer.h \
eek-theme.h \
eek-theme-node.h \
eek-enumtypes.h
# Images to copy into HTML directory. # Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
@ -97,16 +103,11 @@ expand_content_files=eek-overview.xml
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS = $(GIO2_CFLAGS) GTKDOC_CFLAGS = $(GIO2_CFLAGS)
GTKDOC_LIBS = $(top_srcdir)/eek/libeek.la \ GTKDOC_LIBS = $(top_builddir)/eek/libeek.la \
$(top_srcdir)/eek/libeek-gtk.la \ $(top_builddir)/eek/libeek-gtk.la \
$(top_srcdir)/eek/libeek-xkb.la \
$(top_srcdir)/eek/libeek-xkl.la \
$(GIO2_LIBS) \ $(GIO2_LIBS) \
$(XKB_LIBS) $(GTK_LIBS) \
$(LIBXKLAVIER_LIBS)
if ENABLE_CLUTTER
GTKDOC_LIBS += $(top_srcdir)/eek/libeek-clutter.la $(CLUTTER_LIBS)
endif
# This includes the standard gtk-doc make rules, copied by gtkdocize. # This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make include $(top_srcdir)/gtk-doc.make
@ -127,3 +128,5 @@ if ENABLE_GTK_DOC
endif endif
-include $(top_srcdir)/gtk-doc.mk -include $(top_srcdir)/gtk-doc.mk
-include $(top_srcdir)/git.mk

View File

@ -22,12 +22,12 @@
<legalnotice> <legalnotice>
<para> <para>
Permission is granted to copy, distribute and/or modify this Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts and Foundation; with no Invariant Sections, no Front-Cover Texts and
no Back-Cover Texts. A copy of the license is included in the no Back-Cover Texts. A copy of the license is included in the
section entitled "GNU Free Documentation License". section entitled "GNU Free Documentation License".
</para> </para>
</legalnotice> </legalnotice>
</bookinfo> </bookinfo>
@ -37,23 +37,27 @@
<title>API Manual</title> <title>API Manual</title>
<chapter> <chapter>
<title>Base Classes, Interfaces, and Utilities</title> <title>Base Classes, Interfaces, and Utilities</title>
<xi:include href="xml/eek.xml"/>
<xi:include href="xml/eek-serializable.xml"/>
<xi:include href="xml/eek-element.xml"/> <xi:include href="xml/eek-element.xml"/>
<xi:include href="xml/eek-container.xml"/> <xi:include href="xml/eek-container.xml"/>
<xi:include href="xml/eek-keyboard.xml"/> <xi:include href="xml/eek-keyboard.xml"/>
<xi:include href="xml/eek-section.xml"/> <xi:include href="xml/eek-section.xml"/>
<xi:include href="xml/eek-key.xml"/> <xi:include href="xml/eek-key.xml"/>
<xi:include href="xml/eek-symbol.xml"/>
<xi:include href="xml/eek-keysym.xml"/>
<xi:include href="xml/eek-text.xml"/>
<xi:include href="xml/eek-layout.xml"/> <xi:include href="xml/eek-layout.xml"/>
<xi:include href="xml/eek-types.xml"/> <xi:include href="xml/eek-types.xml"/>
<xi:include href="xml/eek-keysym.xml"/>
</chapter> </chapter>
<chapter> <chapter>
<title>Clutter Keyboard</title> <title>GTK Adapter</title>
<xi:include href="xml/eek-clutter-keyboard.xml"/>
</chapter>
<chapter>
<title>GTK Keyboard</title>
<xi:include href="xml/eek-gtk-keyboard.xml"/> <xi:include href="xml/eek-gtk-keyboard.xml"/>
</chapter> </chapter>
<chapter>
<title>Clutter Adapter</title>
<xi:include href="xml/eek-clutter-keyboard.xml"/>
</chapter>
<chapter> <chapter>
<title>Libxklavier Layout Engine</title> <title>Libxklavier Layout Engine</title>
<xi:include href="xml/eek-xkl-layout.xml"/> <xi:include href="xml/eek-xkl-layout.xml"/>
@ -62,6 +66,11 @@
<title>XKB Layout Engine</title> <title>XKB Layout Engine</title>
<xi:include href="xml/eek-xkb-layout.xml"/> <xi:include href="xml/eek-xkb-layout.xml"/>
</chapter> </chapter>
<chapter>
<title>XML Layout Engine</title>
<xi:include href="xml/eek-xml-layout.xml"/>
<xi:include href="xml/eek-xml.xml"/>
</chapter>
<chapter id="object-tree"> <chapter id="object-tree">
<title>Object Hierarchy</title> <title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/> <xi:include href="xml/tree_index.sgml"/>

View File

@ -43,19 +43,14 @@ clutter_group_add (CLUTTER_GROUP(stage), actor);
</programlisting> </programlisting>
</informalexample> </informalexample>
<para>The most interesting feature of libeek is that developer can <para>libeek currently supports GTK+ and Clutter as UI toolkits.
choose arbitrary combination of UI toolkits and layout engine To create a keyboard-like #GtkWidget instead of #ClutterActor,
supported by libeek. For example, to create a keyboard-like replace eek_clutter_keyboard_new() with eek_gtk_keyboard_new().
#GtkWidget instead of #ClutterActor, all you need is to replace Similarly, if you want to use XKB configuration directly (without
eek_clutter_keyboard_new() with eek_gtk_keyboard_new() and libxklavier), you will only need to replace eek_xkl_layout_new ()
eek_clutter_keyboard_get_actor() with with eek_xkb_layout_new().</para>
eek_gtk_keyboard_get_widget(). Similarly, if you want to use XKB
configuration directly (without libxklavier), you will only need to
replace eek_xkl_layout_new () with eek_xkb_layout_new().</para>
<para>To achieve portability across different UI toolkits, <para>In the above example, a keyboard is represented as a tree of
there is a seperate represention of keyboard elements apart from
the actual UI widgets. For example, a keyboard is represented as a tree of
#EekElement -- #EekKeyboard contains one or more #EekSection's and #EekElement -- #EekKeyboard contains one or more #EekSection's and
#EekSection contains one or more #EekKey's. Each element may emit #EekSection contains one or more #EekKey's. Each element may emit
events when user pushes the corresponding UI widget.</para> events when user pushes the corresponding UI widget.</para>

View File

@ -1,101 +1,28 @@
<SECTION> <SECTION>
<FILE>eek-keyboard</FILE> <FILE>eek</FILE>
<TITLE>EekKeyboard</TITLE> eek_init
EekKeyboardClass
EekKeyboard
eek_keyboard_new
eek_keyboard_get_layout
eek_keyboard_set_symbol_index
eek_keyboard_get_symbol_index
eek_keyboard_get_group
eek_keyboard_get_level
eek_keyboard_set_group
eek_keyboard_set_level
eek_keyboard_get_size
eek_keyboard_get_modifier_behavior
eek_keyboard_set_modifier_behavior
eek_keyboard_get_modifiers
eek_keyboard_create_section
eek_keyboard_find_key_by_keycode
<SUBSECTION Standard>
EEK_KEYBOARD
EEK_IS_KEYBOARD
EEK_TYPE_KEYBOARD
eek_keyboard_get_type
EEK_KEYBOARD_CLASS
EEK_IS_KEYBOARD_CLASS
EEK_KEYBOARD_GET_CLASS
</SECTION> </SECTION>
<SECTION> <SECTION>
<FILE>eek-layout</FILE> <FILE>eek-clutter</FILE>
<TITLE>EekLayout</TITLE>
EekLayoutClass
EekLayout
<SUBSECTION Standard>
EEK_LAYOUT
EEK_IS_LAYOUT
EEK_TYPE_LAYOUT
eek_layout_get_type
EEK_LAYOUT_CLASS
EEK_LAYOUT_GET_CLASS
</SECTION> </SECTION>
<SECTION> <SECTION>
<FILE>eek-gtk-keyboard</FILE> <FILE>eek-clutter-key</FILE>
<TITLE>EekGtkKeyboard</TITLE> <TITLE>EekClutterKey</TITLE>
EekGtkKeyboard EekClutterKey
EekGtkKeyboardClass EekClutterKeyClass
eek_gtk_keyboard_new eek_clutter_key_new
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_GTK_KEYBOARD EEK_CLUTTER_KEY
EEK_IS_GTK_KEYBOARD EEK_CLUTTER_KEY_CLASS
EEK_TYPE_GTK_KEYBOARD EEK_CLUTTER_KEY_GET_CLASS
eek_gtk_keyboard_get_type EEK_IS_CLUTTER_KEY
EEK_GTK_KEYBOARD_CLASS EEK_IS_CLUTTER_KEY_CLASS
EEK_IS_GTK_KEYBOARD_CLASS EEK_TYPE_CLUTTER_KEY
EEK_GTK_KEYBOARD_GET_CLASS EekClutterKeyPrivate
</SECTION> eek_clutter_key_get_type
<SECTION>
<FILE>eek-section</FILE>
<TITLE>EekSection</TITLE>
EekSectionClass
EekSection
eek_section_set_angle
eek_section_get_angle
eek_section_get_n_rows
eek_section_add_row
eek_section_get_row
eek_section_create_key
eek_section_find_key_by_keycode
<SUBSECTION Standard>
EEK_SECTION
EEK_IS_SECTION
EEK_TYPE_SECTION
eek_section_get_type
EEK_SECTION_CLASS
EEK_IS_SECTION_CLASS
EEK_SECTION_GET_CLASS
</SECTION>
<SECTION>
<FILE>eek-container</FILE>
<TITLE>EekContainer</TITLE>
EekContainerClass
EekCallback
EekCompareFunc
EekContainer
eek_container_foreach_child
eek_container_find
<SUBSECTION Standard>
EEK_CONTAINER
EEK_IS_CONTAINER
EEK_TYPE_CONTAINER
eek_container_get_type
EEK_CONTAINER_CLASS
EEK_IS_CONTAINER_CLASS
EEK_CONTAINER_GET_CLASS
</SECTION> </SECTION>
<SECTION> <SECTION>
@ -104,59 +31,424 @@ EEK_CONTAINER_GET_CLASS
EekClutterKeyboard EekClutterKeyboard
EekClutterKeyboardClass EekClutterKeyboardClass
eek_clutter_keyboard_new eek_clutter_keyboard_new
eek_clutter_keyboard_set_theme
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_CLUTTER_KEYBOARD EEK_CLUTTER_KEYBOARD
EEK_IS_CLUTTER_KEYBOARD
EEK_TYPE_CLUTTER_KEYBOARD
eek_clutter_keyboard_get_type
EEK_CLUTTER_KEYBOARD_CLASS EEK_CLUTTER_KEYBOARD_CLASS
EEK_IS_CLUTTER_KEYBOARD_CLASS
EEK_CLUTTER_KEYBOARD_GET_CLASS EEK_CLUTTER_KEYBOARD_GET_CLASS
EEK_IS_CLUTTER_KEYBOARD
EEK_IS_CLUTTER_KEYBOARD_CLASS
EEK_TYPE_CLUTTER_KEYBOARD
EekClutterKeyboardPrivate
eek_clutter_keyboard_get_type
</SECTION> </SECTION>
<SECTION> <SECTION>
<FILE>eek-xkl-layout</FILE> <FILE>eek-clutter-renderer</FILE>
<TITLE>EekXklLayout</TITLE> <TITLE>EekClutterRenderer</TITLE>
EekXklLayout EekClutterRenderer
EekXklLayoutClass EekClutterRendererClass
eek_xkl_layout_new eek_clutter_renderer_new
eek_xkl_layout_set_config eek_clutter_renderer_render_key
eek_xkl_layout_set_config_full
eek_xkl_layout_set_model
eek_xkl_layout_set_layouts
eek_xkl_layout_set_variants
eek_xkl_layout_set_options
eek_xkl_layout_get_model
eek_xkl_layout_get_layouts
eek_xkl_layout_get_variants
eek_xkl_layout_get_options
eek_xkl_layout_disable_option
eek_xkl_layout_enable_option
eek_xkl_layout_get_option
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_XKL_LAYOUT EEK_CLUTTER_RENDERER
EEK_IS_XKL_LAYOUT EEK_CLUTTER_RENDERER_CLASS
EEK_TYPE_XKL_LAYOUT EEK_CLUTTER_RENDERER_GET_CLASS
eek_xkl_layout_get_type EEK_IS_CLUTTER_RENDERER
EEK_XKL_LAYOUT_CLASS EEK_IS_CLUTTER_RENDERER_CLASS
EEK_IS_XKL_LAYOUT_CLASS EEK_TYPE_CLUTTER_RENDERER
EEK_XKL_LAYOUT_GET_CLASS EekClutterRendererPrivate
eek_clutter_renderer_get_type
</SECTION> </SECTION>
<SECTION> <SECTION>
<FILE>eek-xml-layout</FILE> <FILE>eek-clutter-section</FILE>
<TITLE>EekXmlLayout</TITLE> <TITLE>EekClutterSection</TITLE>
eek_xml_layout_get_source EekClutterSection
eek_xml_layout_new EekClutterSectionClass
eek_xml_layout_set_source eek_clutter_section_new
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_XML_LAYOUT EEK_CLUTTER_SECTION
EEK_IS_XML_LAYOUT EEK_CLUTTER_SECTION_CLASS
EEK_TYPE_XML_LAYOUT EEK_CLUTTER_SECTION_GET_CLASS
eek_xml_layout_get_type EEK_IS_CLUTTER_SECTION
EEK_XML_LAYOUT_CLASS EEK_IS_CLUTTER_SECTION_CLASS
EEK_IS_XML_LAYOUT_CLASS EEK_TYPE_CLUTTER_SECTION
EEK_XML_LAYOUT_GET_CLASS EekClutterSectionPrivate
eek_clutter_section_get_type
</SECTION>
<SECTION>
<FILE>eek-container</FILE>
<TITLE>EekContainer</TITLE>
EekCallback
EekCompareFunc
EekContainer
EekContainerClass
eek_container_add_child
eek_container_find
eek_container_foreach_child
<SUBSECTION Standard>
EEK_CONTAINER
EEK_CONTAINER_CLASS
EEK_CONTAINER_GET_CLASS
EEK_IS_CONTAINER
EEK_IS_CONTAINER_CLASS
EEK_TYPE_CONTAINER
EekContainerPrivate
eek_container_get_type
</SECTION>
<SECTION>
<FILE>eek-element</FILE>
<TITLE>EekElement</TITLE>
EekElement
EekElementClass
eek_element_get_absolute_position
eek_element_get_bounds
eek_element_get_group
eek_element_get_level
eek_element_get_name
eek_element_get_parent
eek_element_get_symbol_index
eek_element_set_bounds
eek_element_set_group
eek_element_set_level
eek_element_set_name
eek_element_set_parent
eek_element_set_position
eek_element_set_size
eek_element_set_symbol_index
<SUBSECTION Standard>
EEK_ELEMENT
EEK_ELEMENT_CLASS
EEK_ELEMENT_GET_CLASS
EEK_IS_ELEMENT
EEK_IS_ELEMENT_CLASS
EEK_TYPE_ELEMENT
EekElementPrivate
eek_element_get_type
</SECTION>
<SECTION>
<FILE>eek-gtk</FILE>
</SECTION>
<SECTION>
<FILE>eek-gtk-keyboard</FILE>
<TITLE>EekGtkKeyboard</TITLE>
EekGtkKeyboard
EekGtkKeyboardClass
eek_gtk_keyboard_new
eek_gtk_keyboard_set_theme
<SUBSECTION Standard>
EEK_GTK_KEYBOARD
EEK_GTK_KEYBOARD_CLASS
EEK_GTK_KEYBOARD_GET_CLASS
EEK_IS_GTK_KEYBOARD
EEK_IS_GTK_KEYBOARD_CLASS
EEK_TYPE_GTK_KEYBOARD
EekGtkKeyboardPrivate
eek_gtk_keyboard_get_type
</SECTION>
<SECTION>
<FILE>eek-key</FILE>
<TITLE>EekKey</TITLE>
EekKey
EekKeyClass
eek_key_get_index
eek_key_get_keycode
eek_key_get_oref
eek_key_get_symbol
eek_key_get_symbol_at_index
eek_key_get_symbol_matrix
eek_key_get_symbol_with_fallback
eek_key_is_locked
eek_key_is_pressed
eek_key_set_index
eek_key_set_keycode
eek_key_set_oref
eek_key_set_symbol_matrix
<SUBSECTION Standard>
EEK_IS_KEY
EEK_IS_KEY_CLASS
EEK_KEY
EEK_KEY_CLASS
EEK_KEY_GET_CLASS
EEK_TYPE_KEY
EekKeyPrivate
eek_key_get_type
</SECTION>
<SECTION>
<FILE>eek-keyboard</FILE>
<TITLE>EekKeyboard</TITLE>
EekKeyboard
EekKeyboardClass
EekModifierKey
eek_keyboard_add_outline
eek_keyboard_create_section
eek_keyboard_find_key_by_keycode
eek_keyboard_get_alt_gr_mask
eek_keyboard_get_group
eek_keyboard_get_layout
eek_keyboard_get_level
eek_keyboard_get_locked_keys
eek_keyboard_get_modifier_behavior
eek_keyboard_get_modifiers
eek_keyboard_get_num_lock_mask
eek_keyboard_get_outline
eek_keyboard_get_pressed_keys
eek_keyboard_get_size
eek_keyboard_get_symbol_index
eek_keyboard_new
eek_keyboard_set_alt_gr_mask
eek_keyboard_set_group
eek_keyboard_set_level
eek_keyboard_set_modifier_behavior
eek_keyboard_set_modifiers
eek_keyboard_set_num_lock_mask
eek_keyboard_set_size
eek_keyboard_set_symbol_index
<SUBSECTION Standard>
EEK_IS_KEYBOARD
EEK_IS_KEYBOARD_CLASS
EEK_KEYBOARD
EEK_KEYBOARD_CLASS
EEK_KEYBOARD_GET_CLASS
EEK_TYPE_KEYBOARD
EekKeyboardPrivate
eek_keyboard_get_type
</SECTION>
<SECTION>
<FILE>eek-keysym</FILE>
<TITLE>EekKeysym</TITLE>
EekKeysym
EekKeysymClass
eek_keysym_get_xkeysym
eek_keysym_new
eek_keysym_new_from_name
eek_keysym_new_with_modifier
<SUBSECTION Standard>
EEK_INVALID_KEYSYM
EEK_IS_KEYSYM
EEK_IS_KEYSYM_CLASS
EEK_KEYSYM
EEK_KEYSYM_CLASS
EEK_KEYSYM_GET_CLASS
EEK_TYPE_KEYSYM
EekKeysymPrivate
eek_keysym_get_type
</SECTION>
<SECTION>
<FILE>eek-layout</FILE>
<TITLE>EekLayout</TITLE>
EekLayout
EekLayoutClass
<SUBSECTION Standard>
EEK_IS_LAYOUT
EEK_IS_LAYOUT_CLASS
EEK_LAYOUT
EEK_LAYOUT_CLASS
EEK_LAYOUT_GET_CLASS
EEK_TYPE_LAYOUT
eek_layout_get_type
</SECTION>
<SECTION>
<FILE>eek-marshalers</FILE>
</SECTION>
<SECTION>
<FILE>eek-section</FILE>
<TITLE>EekSection</TITLE>
EekSection
EekSectionClass
eek_section_add_row
eek_section_create_key
eek_section_find_key_by_keycode
eek_section_get_angle
eek_section_get_n_rows
eek_section_get_row
eek_section_set_angle
<SUBSECTION Standard>
EEK_IS_SECTION
EEK_IS_SECTION_CLASS
EEK_SECTION
EEK_SECTION_CLASS
EEK_SECTION_GET_CLASS
EEK_TYPE_SECTION
EekSectionPrivate
eek_section_get_type
</SECTION>
<SECTION>
<FILE>eek-serializable</FILE>
<TITLE>EekSerializable</TITLE>
EekSerializableIface
eek_serializable_deserialize
eek_serializable_serialize
<SUBSECTION Standard>
EEK_IS_SERIALIZABLE
EEK_SERIALIZABLE
EEK_SERIALIZABLE_GET_IFACE
EEK_TYPE_SERIALIZABLE
eek_serializable_get_type
</SECTION>
<SECTION>
<FILE>eek-special-keysym-entries</FILE>
</SECTION>
<SECTION>
<FILE>eek-symbol</FILE>
<TITLE>EekSymbol</TITLE>
EekSymbol
EekSymbolCategory
EekSymbolClass
eek_symbol_category_from_name
eek_symbol_category_get_name
eek_symbol_get_category
eek_symbol_get_icon_name
eek_symbol_get_label
eek_symbol_get_modifier_mask
eek_symbol_get_name
eek_symbol_is_modifier
eek_symbol_new
eek_symbol_set_category
eek_symbol_set_icon_name
eek_symbol_set_label
eek_symbol_set_modifier_mask
eek_symbol_set_name
<SUBSECTION Standard>
EEK_IS_SYMBOL
EEK_IS_SYMBOL_CLASS
EEK_SYMBOL
EEK_SYMBOL_CLASS
EEK_SYMBOL_GET_CLASS
EEK_TYPE_SYMBOL
EekSymbolPrivate
eek_symbol_get_type
</SECTION>
<SECTION>
<FILE>eek-symbol-matrix</FILE>
EekSymbolMatrix
eek_symbol_matrix_copy
eek_symbol_matrix_free
eek_symbol_matrix_get_symbol
eek_symbol_matrix_new
eek_symbol_matrix_set_symbol
<SUBSECTION Standard>
EEK_TYPE_SYMBOL_MATRIX
eek_symbol_matrix_get_type
</SECTION>
<SECTION>
<FILE>eek-text</FILE>
<TITLE>EekText</TITLE>
EekText
EekTextClass
eek_text_get_text
eek_text_new
<SUBSECTION Standard>
EEK_IS_TEXT
EEK_IS_TEXT_CLASS
EEK_TEXT
EEK_TEXT_CLASS
EEK_TEXT_GET_CLASS
EEK_TYPE_TEXT
EekTextPrivate
eek_text_get_type
</SECTION>
<SECTION>
<FILE>eek-theme-context</FILE>
EekThemeContextClass
eek_theme_context_get_font
eek_theme_context_get_resolution
eek_theme_context_get_root_node
eek_theme_context_get_theme
eek_theme_context_new
eek_theme_context_set_default_resolution
eek_theme_context_set_font
eek_theme_context_set_resolution
eek_theme_context_set_theme
<SUBSECTION Standard>
EEK_IS_THEME_CONTEXT
EEK_IS_THEME_CONTEXT_CLASS
EEK_THEME_CONTEXT
EEK_THEME_CONTEXT_CLASS
EEK_THEME_CONTEXT_GET_CLASS
EEK_TYPE_THEME_CONTEXT
eek_theme_context_get_type
</SECTION>
<SECTION>
<FILE>eek-theme-private</FILE>
</SECTION>
<SECTION>
<FILE>eek-types</FILE>
EEK_INVALID_KEYCODE
EekBounds
EekColor
EekContainer
EekElement
EekGradientType
EekKey
EekKeyboard
EekKeysym
EekModifierBehavior
EekModifierType
EekOrientation
EekOutline
EekPoint
EekSection
EekSymbol
EekSymbolMatrix
EekText
EekTheme
EekThemeContext
EekThemeNode
I_
eek_bounds_copy
eek_bounds_free
eek_bounds_long_side
eek_color_copy
eek_color_free
eek_color_new
eek_outline_copy
eek_outline_free
eek_point_copy
eek_point_free
eek_point_rotate
<SUBSECTION Standard>
EEK_TYPE_BOUNDS
EEK_TYPE_COLOR
EEK_TYPE_OUTLINE
EEK_TYPE_POINT
eek_bounds_get_type
eek_color_get_type
eek_outline_get_type
eek_point_get_type
</SECTION>
<SECTION>
<FILE>eek-unicode-keysym-entries</FILE>
</SECTION>
<SECTION>
<FILE>eek-xkb</FILE>
</SECTION> </SECTION>
<SECTION> <SECTION>
@ -164,145 +456,89 @@ EEK_XML_LAYOUT_GET_CLASS
<TITLE>EekXkbLayout</TITLE> <TITLE>EekXkbLayout</TITLE>
EekXkbLayout EekXkbLayout
EekXkbLayoutClass EekXkbLayoutClass
eek_xkb_layout_get_geometry
eek_xkb_layout_get_keycodes
eek_xkb_layout_get_symbols
eek_xkb_layout_new eek_xkb_layout_new
eek_xkb_layout_set_geometry
eek_xkb_layout_set_keycodes
eek_xkb_layout_set_names eek_xkb_layout_set_names
eek_xkb_layout_set_names_full eek_xkb_layout_set_names_full
eek_xkb_layout_set_keycodes eek_xkb_layout_set_names_full_valist
eek_xkb_layout_set_geometry
eek_xkb_layout_set_symbols eek_xkb_layout_set_symbols
eek_xkb_layout_get_keycodes
eek_xkb_layout_get_geometry
eek_xkb_layout_get_symbols
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_XKB_LAYOUT
EEK_IS_XKB_LAYOUT EEK_IS_XKB_LAYOUT
EEK_TYPE_XKB_LAYOUT
eek_xkb_layout_get_type
EEK_XKB_LAYOUT_CLASS
EEK_IS_XKB_LAYOUT_CLASS EEK_IS_XKB_LAYOUT_CLASS
EEK_TYPE_XKB_LAYOUT
EEK_XKB_LAYOUT
EEK_XKB_LAYOUT_CLASS
EEK_XKB_LAYOUT_GET_CLASS EEK_XKB_LAYOUT_GET_CLASS
EekXkbLayoutPrivate
eek_xkb_layout_get_type
</SECTION> </SECTION>
<SECTION> <SECTION>
<FILE>eek-key</FILE> <FILE>eek-xkeysym-keysym-entries</FILE>
<TITLE>EekKey</TITLE>
EekKeyClass </SECTION>
EekKey
eek_key_set_keycode <SECTION>
eek_key_get_keycode <FILE>eek-xkl</FILE>
eek_key_set_symbol_matrix
eek_key_get_symbol_matrix </SECTION>
eek_key_get_symbol
eek_key_get_symbol_at_index <SECTION>
eek_key_get_symbol_with_fallback <FILE>eek-xkl-layout</FILE>
eek_key_set_index <TITLE>EekXklLayout</TITLE>
eek_key_get_index EekXklLayout
eek_key_set_outline EekXklLayoutClass
eek_key_get_outline eek_xkl_layout_disable_option
eek_key_is_pressed eek_xkl_layout_enable_option
eek_xkl_layout_get_layouts
eek_xkl_layout_get_model
eek_xkl_layout_get_option
eek_xkl_layout_get_options
eek_xkl_layout_get_variants
eek_xkl_layout_new
eek_xkl_layout_set_config
eek_xkl_layout_set_config_full
eek_xkl_layout_set_layouts
eek_xkl_layout_set_model
eek_xkl_layout_set_options
eek_xkl_layout_set_variants
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_KEY EEK_IS_XKL_LAYOUT
EEK_IS_KEY EEK_IS_XKL_LAYOUT_CLASS
EEK_TYPE_KEY EEK_TYPE_XKL_LAYOUT
eek_key_get_type EEK_XKL_LAYOUT
EEK_KEY_CLASS EEK_XKL_LAYOUT_CLASS
EEK_IS_KEY_CLASS EEK_XKL_LAYOUT_GET_CLASS
EEK_KEY_GET_CLASS EekXklLayoutPrivate
eek_xkl_layout_get_type
</SECTION> </SECTION>
<SECTION> <SECTION>
<FILE>eek-element</FILE> <FILE>eek-xml</FILE>
<TITLE>EekElement</TITLE> EEK_XML_SCHEMA_VERSION
EekElementClass eek_keyboard_output
EekElement </SECTION>
eek_element_set_parent
eek_element_get_parent <SECTION>
eek_element_set_name <FILE>eek-xml-layout</FILE>
eek_element_get_name <TITLE>EekXmlLayout</TITLE>
eek_element_set_bounds EekXmlLayout
eek_element_get_bounds EekXmlLayoutClass
eek_element_get_absolute_position eek_xml_layout_get_source
eek_xml_layout_new
eek_xml_layout_set_source
<SUBSECTION Standard> <SUBSECTION Standard>
EEK_ELEMENT EEK_IS_XML_LAYOUT
EEK_IS_ELEMENT EEK_IS_XML_LAYOUT_CLASS
EEK_TYPE_ELEMENT EEK_TYPE_XML_LAYOUT
eek_element_get_type EEK_XML_LAYOUT
EEK_ELEMENT_CLASS EEK_XML_LAYOUT_CLASS
EEK_IS_ELEMENT_CLASS EEK_XML_LAYOUT_GET_CLASS
EEK_ELEMENT_GET_CLASS EekXmlLayoutPrivate
eek_xml_layout_get_type
</SECTION> </SECTION>
<SECTION>
<FILE>eek-symbol</FILE>
<TITLE>EekSymbol</TITLE>
EekSymbolClass
EekSymbol
eek_symbol_new
eek_symbol_set_name
eek_symbol_get_name
eek_symbol_set_label
eek_symbol_get_label
eek_symbol_set_category
eek_symbol_get_category
eek_symbol_set_modifier_mask
eek_symbol_get_modifier_mask
eek_symbol_is_modifier
<SUBSECTION Standard>
EEK_SYMBOL
EEK_IS_SYMBOL
EEK_TYPE_SYMBOL
eek_symbol_get_type
EEK_SYMBOL_CLASS
EEK_IS_SYMBOL_CLASS
EEK_SYMBOL_GET_CLASS
</SECTION>
<SECTION>
<FILE>eek-types</FILE>
<TITLE>Basic Types</TITLE>
EekOrientation
EekModifierBehavior
EekModifierType
EekSymbolMatrix
EekSymbolCategory
EEK_TYPE_SYMBOL_MATRIX
eek_symbol_matrix_copy
eek_symbol_matrix_free
eek_symbol_matrix_get_type
eek_symbol_matrix_new
EekPoint
EEK_TYPE_POINT
eek_point_get_type
eek_point_rotate
EekBounds
EEK_TYPE_BOUNDS
eek_bounds_get_type
eek_bounds_long_side
EekOutline
EEK_TYPE_OUTLINE
eek_outline_get_type
EekColor
EEK_TYPE_COLOR
eek_color_get_type
eek_color_new
</SECTION>
<SECTION>
<FILE>eek-keysym</FILE>
<TITLE>EekKeysym</TITLE>
EekKeysymClass
EekKeysym
EEK_INVALID_KEYSYM
EEK_INVALID_KEYCODE
eek_keysym_get_xkeysym
eek_keysym_new
eek_keysym_new_from_name
<SUBSECTION Standard>
EEK_KEYSYM
EEK_IS_KEYSYM
EEK_TYPE_KEYSYM
eek_keysym_get_type
EEK_KEYSYM_CLASS
EEK_IS_KEYSYM_CLASS
EEK_KEYSYM_GET_CLASS
</SECTION>

View File

@ -76,7 +76,7 @@ EXTRA_HFILES=
# Header files to ignore when scanning. Use base file name, no paths # Header files to ignore when scanning. Use base file name, no paths
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
IGNORE_HFILES=config.h IGNORE_HFILES=config.h eekboard.h
# Images to copy into HTML directory. # Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
@ -104,7 +104,7 @@ include $(top_srcdir)/gtk-doc.make
# Other files to distribute # Other files to distribute
# e.g. EXTRA_DIST += version.xml.in # e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST += # EXTRA_DIST +=
# Files not to distribute # Files not to distribute
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
@ -118,3 +118,5 @@ if ENABLE_GTK_DOC
endif endif
-include $(top_srcdir)/gtk-doc.mk -include $(top_srcdir)/gtk-doc.mk
-include $(top_srcdir)/git.mk

View File

@ -22,12 +22,12 @@
<legalnotice> <legalnotice>
<para> <para>
Permission is granted to copy, distribute and/or modify this Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts and Foundation; with no Invariant Sections, no Front-Cover Texts and
no Back-Cover Texts. A copy of the license is included in the no Back-Cover Texts. A copy of the license is included in the
section entitled "GNU Free Documentation License". section entitled "GNU Free Documentation License".
</para> </para>
</legalnotice> </legalnotice>
</bookinfo> </bookinfo>
@ -35,10 +35,15 @@
<part id="apireference"> <part id="apireference">
<title>API Manual</title> <title>API Manual</title>
<chapter> <chapter>
<title>D-Bus proxy to eekboard-server</title> <title>Client interface to eekboard-server</title>
<xi:include href="xml/eekboard-server.xml"/> <xi:include href="xml/eekboard-client.xml"/>
<xi:include href="xml/eekboard-context.xml"/> <xi:include href="xml/eekboard-context.xml"/>
</chapter> </chapter>
<chapter>
<title>Server interface to implement custom eekboard-server</title>
<xi:include href="xml/eekboard-service.xml"/>
<xi:include href="xml/eekboard-context-service.xml"/>
</chapter>
<chapter id="object-tree"> <chapter id="object-tree">
<title>Object Hierarchy</title> <title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/> <xi:include href="xml/tree_index.sgml"/>

View File

@ -1,22 +1,41 @@
<SECTION> <SECTION>
<FILE>eekboard-server</FILE> <FILE>eekboard-client</FILE>
<TITLE>EekboardServer</TITLE> <TITLE>EekboardClient</TITLE>
EekboardServer EekboardClient
EekboardServerClass EekboardClientClass
EekboardServerPrivate eekboard_client_new
eekboard_server_new eekboard_client_create_context
eekboard_server_create_context eekboard_client_push_context
eekboard_server_push_context eekboard_client_pop_context
eekboard_server_pop_context eekboard_client_destroy_context
eekboard_server_destroy_context EekboardClientPrivate
<SUBSECTION Standard> <SUBSECTION Standard>
EEKBOARD_SERVER EEKBOARD_CLIENT
EEKBOARD_IS_SERVER EEKBOARD_IS_CLIENT
EEKBOARD_TYPE_SERVER EEKBOARD_TYPE_CLIENT
eekboard_server_get_type eekboard_client_get_type
EEKBOARD_SERVER_CLASS EEKBOARD_CLIENT_CLASS
EEKBOARD_IS_SERVER_CLASS EEKBOARD_IS_CLIENT_CLASS
EEKBOARD_SERVER_GET_CLASS EEKBOARD_CLIENT_GET_CLASS
</SECTION>
<SECTION>
<FILE>eekboard-service</FILE>
<TITLE>EekboardService</TITLE>
EEKBOARD_SERVICE_PATH
EEKBOARD_SERVICE_INTERFACE
EekboardService
EekboardServiceClass
eekboard_service_new
EekboardServicePrivate
<SUBSECTION Standard>
EEKBOARD_SERVICE
EEKBOARD_IS_SERVICE
EEKBOARD_TYPE_SERVICE
eekboard_service_get_type
EEKBOARD_SERVICE_CLASS
EEKBOARD_IS_SERVICE_CLASS
EEKBOARD_SERVICE_GET_CLASS
</SECTION> </SECTION>
<SECTION> <SECTION>
@ -24,17 +43,21 @@ EEKBOARD_SERVER_GET_CLASS
<TITLE>EekboardContext</TITLE> <TITLE>EekboardContext</TITLE>
EekboardContext EekboardContext
EekboardContextClass EekboardContextClass
EekboardContextPrivate
eekboard_context_new eekboard_context_new
eekboard_context_add_keyboard
eekboard_context_remove_keyboard
eekboard_context_set_keyboard eekboard_context_set_keyboard
eekboard_context_show_keyboard eekboard_context_show_keyboard
eekboard_context_hide_keyboard eekboard_context_hide_keyboard
eekboard_context_set_group eekboard_context_set_group
eekboard_context_press_key eekboard_context_get_group
eekboard_context_release_key eekboard_context_press_keycode
eekboard_context_release_keycode
eekboard_context_is_keyboard_visible eekboard_context_is_keyboard_visible
eekboard_context_set_enabled eekboard_context_set_enabled
eekboard_context_is_enabled eekboard_context_is_enabled
eekboard_context_set_fullscreen
EekboardContextPrivate
<SUBSECTION Standard> <SUBSECTION Standard>
EEKBOARD_CONTEXT EEKBOARD_CONTEXT
EEKBOARD_IS_CONTEXT EEKBOARD_IS_CONTEXT
@ -45,3 +68,37 @@ EEKBOARD_IS_CONTEXT_CLASS
EEKBOARD_CONTEXT_GET_CLASS EEKBOARD_CONTEXT_GET_CLASS
</SECTION> </SECTION>
<SECTION>
<FILE>eekboard-context-service</FILE>
<TITLE>EekboardContextService</TITLE>
EEKBOARD_CONTEXT_SERVICE_PATH
EEKBOARD_CONTEXT_SERVICE_INTERFACE
EekboardContextService
EekboardContextServiceClass
eekboard_context_service_enable
eekboard_context_service_disable
eekboard_context_service_get_keyboard
eekboard_context_service_get_fullscreen
eekboard_context_service_get_client_name
EekboardContextServicePrivate
<SUBSECTION Standard>
EEKBOARD_CONTEXT_SERVICE
EEKBOARD_IS_CONTEXT_SERVICE
EEKBOARD_TYPE_CONTEXT_SERVICE
eekboard_context_service_get_type
EEKBOARD_CONTEXT_SERVICE_CLASS
EEKBOARD_IS_CONTEXT_SERVICE_CLASS
EEKBOARD_CONTEXT_SERVICE_GET_CLASS
</SECTION>
<SECTION>
<FILE>eekboard-xklutil</FILE>
eekboard_xkl_config_rec_from_string
eekboard_xkl_config_rec_to_string
eekboard_xkl_list_models
eekboard_xkl_list_layouts
eekboard_xkl_list_option_groups
eekboard_xkl_list_layout_variants
eekboard_xkl_list_options
</SECTION>

View File

@ -0,0 +1,4 @@
eekboard_client_get_type
eekboard_context_get_type
eekboard_context_service_get_type
eekboard_service_get_type

View File

@ -16,15 +16,12 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA # 02110-1301 USA
NULL =
lib_LTLIBRARIES = \ lib_LTLIBRARIES = \
libeek.la \ libeek.la \
libeek-gtk.la \ libeek-gtk.la \
libeek-xkb.la \ $(NULL)
libeek-xkl.la
if ENABLE_CLUTTER
lib_LTLIBRARIES += libeek-clutter.la
endif
libeek_public_headers = \ libeek_public_headers = \
$(srcdir)/eek-layout.h \ $(srcdir)/eek-layout.h \
@ -35,167 +32,195 @@ libeek_public_headers = \
$(srcdir)/eek-key.h \ $(srcdir)/eek-key.h \
$(srcdir)/eek-symbol.h \ $(srcdir)/eek-symbol.h \
$(srcdir)/eek-keysym.h \ $(srcdir)/eek-keysym.h \
$(srcdir)/eek-text.h \
$(srcdir)/eek-symbol-matrix.h \
$(srcdir)/eek-types.h \ $(srcdir)/eek-types.h \
$(srcdir)/eek-xml.h \ $(srcdir)/eek-xml.h \
$(srcdir)/eek-xml-layout.h \ $(srcdir)/eek-xml-layout.h \
$(srcdir)/eek-serializable.h \ $(srcdir)/eek-serializable.h \
$(srcdir)/eek.h $(srcdir)/eek-theme.h \
$(srcdir)/eek.h \
$(NULL)
libeek_private_headers = \ libeek_private_headers = \
$(srcdir)/eek-renderer.h \ $(srcdir)/eek-renderer.h \
$(srcdir)/eek-special-keysym-entries.h \ $(libeek_keysym_headers) \
$(srcdir)/eek-unicode-keysym-entries.h \ $(builddir)/eek-marshalers.h \
$(srcdir)/eek-xkeysym-keysym-entries.h \ $(srcdir)/eek-theme-context.h \
$(srcdir)/eek-marshalers.h $(srcdir)/eek-theme-private.h \
$(srcdir)/eek-theme-node.h \
$(NULL)
libeek_sources = \ libeek_sources = \
$(srcdir)/eek.c \
$(srcdir)/eek-layout.c \ $(srcdir)/eek-layout.c \
$(srcdir)/eek-element.c \ $(srcdir)/eek-element.c \
$(srcdir)/eek-container.c \ $(srcdir)/eek-container.c \
$(srcdir)/eek-keyboard.c \ $(srcdir)/eek-keyboard.c \
$(srcdir)/eek-section.c \ $(srcdir)/eek-section.c \
$(srcdir)/eek-key.c \ $(srcdir)/eek-key.c \
$(srcdir)/eek-symbol-matrix.c \
$(srcdir)/eek-symbol.c \ $(srcdir)/eek-symbol.c \
$(srcdir)/eek-keysym.c \ $(srcdir)/eek-keysym.c \
$(srcdir)/eek-text.c \
$(srcdir)/eek-types.c \ $(srcdir)/eek-types.c \
$(srcdir)/eek-serializable.c \ $(srcdir)/eek-serializable.c \
$(srcdir)/eek-xml.c \ $(srcdir)/eek-xml.c \
$(srcdir)/eek-xml-layout.c \ $(srcdir)/eek-xml-layout.c \
$(srcdir)/eek-renderer.c \ $(srcdir)/eek-renderer.c \
$(srcdir)/eek-keyboard-drawing.c $(srcdir)/eek-keyboard-drawing.c \
$(srcdir)/eek-theme.c \
$(srcdir)/eek-theme-context.c \
$(srcdir)/eek-theme-node.c \
$(NULL)
libeek_keysym_sources = \ libeek_keysym_headers = \
$(srcdir)/eek-special-keysym-entries.h \ $(builddir)/eek-special-keysym-entries.h \
$(srcdir)/eek-unicode-keysym-entries.h \ $(builddir)/eek-unicode-keysym-entries.h \
$(srcdir)/eek-xkeysym-keysym-entries.h $(builddir)/eek-xkeysym-keysym-entries.h \
$(NULL)
libeek_enumtypes_sources = \ libeek_enumtypes_sources = \
$(srcdir)/eek-enumtypes.c \ $(builddir)/eek-enumtypes.c \
$(srcdir)/eek-enumtypes.h $(builddir)/eek-enumtypes.h \
$(NULL)
libeek_marshalers_sources = \ libeek_marshalers_sources = \
$(srcdir)/eek-marshalers.c \ $(builddir)/eek-marshalers.c \
$(srcdir)/eek-marshalers.h $(builddir)/eek-marshalers.h \
$(NULL)
BUILT_SOURCES = \ BUILT_SOURCES = \
$(libeek_keysym_sources) \ $(libeek_keysym_headers) \
$(libeek_marshalers_sources) $(libeek_enumtypes_sources) \
$(libeek_marshalers_sources) \
$(NULL)
libeek_la_SOURCES = \ libeek_la_SOURCES = \
$(libeek_sources) \ $(libeek_sources) \
$(srcdir)/eek-marshalers.c $(builddir)/eek-enumtypes.c \
$(builddir)/eek-marshalers.c \
$(NULL)
libeek_la_CFLAGS = $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) libeek_la_CFLAGS = \
libeek_la_LIBADD = $(GIO2_LIBS) $(PANGOCAIRO_LIBS) -lm -DEEK_COMPILATION=1 \
-DKEYBOARDSDIR=\"$(pkgdatadir)/keyboards\" \
$(GIO2_CFLAGS) \
$(PANGOCAIRO_CFLAGS) \
$(LIBCROCO_CFLAGS) \
$(NULL)
if ENABLE_CLUTTER libeek_la_LIBADD = \
libeek_clutter_public_headers = \ $(GIO2_LIBS) \
$(srcdir)/eek-clutter-keyboard.h \ $(PANGOCAIRO_LIBS) \
$(srcdir)/eek-clutter.h $(LIBCROCO_LIBS) \
-lm \
libeek_clutter_private_headers = \ $(NULL)
$(srcdir)/eek-clutter-section.h \
$(srcdir)/eek-clutter-key.h \
$(srcdir)/eek-clutter-renderer.h
libeek_clutter_sources = \
$(srcdir)/eek-clutter-keyboard.c \
$(srcdir)/eek-clutter-section.c \
$(srcdir)/eek-clutter-key.c \
$(srcdir)/eek-clutter-renderer.c
libeek_clutter_la_SOURCES = $(libeek_clutter_sources)
libeek_clutter_la_CFLAGS = $(CLUTTER_CFLAGS)
libeek_clutter_la_LIBADD = libeek.la $(CLUTTER_LIBS)
endif
libeek_gtk_public_headers = \ libeek_gtk_public_headers = \
$(srcdir)/eek-gtk-keyboard.h \ $(srcdir)/eek-gtk-keyboard.h \
$(srcdir)/eek-gtk.h $(srcdir)/eek-gtk.h \
$(NULL)
libeek_gtk_private_headers = \
$(srcdir)/eek-gtk-renderer.h \
$(NULL)
libeek_gtk_sources = \ libeek_gtk_sources = \
$(srcdir)/eek-gtk-keyboard.c $(srcdir)/eek-gtk-keyboard.c \
$(srcdir)/eek-gtk-renderer.c \
$(NULL)
libeek_gtk_la_SOURCES = $(libeek_gtk_sources) libeek_gtk_la_SOURCES = $(libeek_gtk_sources)
libeek_gtk_la_CFLAGS = $(GTK_CFLAGS) libeek_gtk_la_CFLAGS = -DEEK_COMPILATION=1 $(GTK_CFLAGS) $(LIBCANBERRA_CFLAGS)
libeek_gtk_la_LIBADD = libeek.la $(GTK_LIBS) libeek_gtk_la_LIBADD = libeek.la $(GTK_LIBS) $(LIBCANBERRA_LIBS)
libeek_xkb_public_headers = \ # libeek_xkl_public_headers = \
$(srcdir)/eek-xkb-layout.h \ # $(srcdir)/eek-xkl-layout.h \
$(srcdir)/eek-xkb.h # $(srcdir)/eek-xkl.h \
# $(srcdir)/eek-xkb-layout.h \
libeek_xkb_sources = \ # $(srcdir)/eek-xkb.h \
$(srcdir)/eek-xkb-layout.c # $(NULL)
#
libeek_xkb_la_SOURCES = $(libeek_xkb_sources) # libeek_xkl_sources = \
libeek_xkb_la_CFLAGS = $(XKB_CFLAGS) $(GTK_CFLAGS) # $(srcdir)/eek-xkb-layout.c \
libeek_xkb_la_LIBADD = libeek.la $(XKB_LIBS) $(GTK_LIBS) # $(srcdir)/eek-xkl-layout.c \
# $(NULL)
libeek_xkl_public_headers = \ #
$(srcdir)/eek-xkl-layout.h \ # libeek_xkl_la_SOURCES = $(libeek_xkl_sources)
$(srcdir)/eek-xkl.h # libeek_xkl_la_CFLAGS = -DEEK_COMPILATION=1 $(LIBXKLAVIER_CFLAGS)
# libeek_xkl_la_LIBADD = libeek.la $(LIBXKLAVIER_LIBS)
libeek_xkl_sources = \
$(srcdir)/eek-xkl-layout.c
libeek_xkl_la_SOURCES = $(libeek_xkl_sources)
libeek_xkl_la_CFLAGS = $(LIBXKLAVIER_CFLAGS) $(GTK_CFLAGS)
libeek_xkl_la_LIBADD = libeek-xkb.la $(LIBXKLAVIER_LIBS) $(GTK_LIBS)
eekdir = $(includedir)/eek-$(EEK_API_VERSION)/eek eekdir = $(includedir)/eek-$(EEK_API_VERSION)/eek
eek_HEADERS = \ eek_HEADERS = \
$(libeek_public_headers) \ $(libeek_public_headers) \
$(libeek_clutter_public_headers) \ $(builddir)/eek-enumtypes.h \
$(libeek_gtk_public_headers) \ $(libeek_gtk_public_headers) \
$(libeek_xkb_public_headers) \ $(NULL)
$(libeek_xkl_public_headers)
noinst_HEADERS = \ noinst_HEADERS = \
$(libeek_private_headers) \ $(libeek_private_headers) \
$(libeek_clutter_private_headers) \
$(libeek_gtk_private_headers) \ $(libeek_gtk_private_headers) \
$(libeek_xkb_private_headers) \ $(NULL)
$(libeek_xkl_private_headers)
eek-special-keysym-entries.h: special-keysym-entries.txt eek-special-keysym-entries.h: special-keysym-entries.txt
$(PYTHON) ./gen-keysym-entries.py special_keysym_entries < $< > $@ $(AM_V_GEN) $(PYTHON) $(srcdir)/gen-keysym-entries.py \
special_keysym_entries \
< $< > $@
eek-unicode-keysym-entries.h: unicode-keysym-entries.txt eek-unicode-keysym-entries.h: unicode-keysym-entries.txt
$(PYTHON) ./gen-keysym-entries.py unicode_keysym_entries < $< > $@ $(AM_V_GEN) $(PYTHON) $(srcdir)/gen-keysym-entries.py \
unicode_keysym_entries \
< $< > $@
eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt
$(PYTHON) ./gen-keysym-entries.py xkeysym_keysym_entries < $< > $@ $(AM_V_GEN) $(PYTHON) $(srcdir)/gen-keysym-entries.py \
xkeysym_keysym_entries \
< $< > $@
eek-enumtypes.h: $(libeek_public_headers) eek-enumtypes.h.template
$(AM_V_GEN) $(GLIB_MKENUMS) \
--template $(srcdir)/eek-enumtypes.h.template \
$(libeek_public_headers) > eek-enumtypes.h.tmp && \
mv eek-enumtypes.h.tmp eek-enumtypes.h
eek-enumtypes.c: $(libeek_public_headers) eek-enumtypes.c.template
$(AM_V_GEN) $(GLIB_MKENUMS) \
--template $(srcdir)/eek-enumtypes.c.template \
$(libeek_public_headers) > eek-enumtypes.c.tmp && \
mv eek-enumtypes.c.tmp eek-enumtypes.c
# gen marshal # gen marshal
eek-marshalers.h: eek-marshalers.list eek-marshalers.h: eek-marshalers.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --header --internal > $@.tmp && \ $(AM_V_GEN) $(GLIB_GENMARSHAL) \
--prefix=_eek_marshal $(srcdir)/eek-marshalers.list \
--header --internal > $@.tmp && \
mv $@.tmp $@ mv $@.tmp $@
eek-marshalers.c: eek-marshalers.list eek-marshalers.h eek-marshalers.c: eek-marshalers.list eek-marshalers.h
$(AM_V_GEN) (echo "#include \"eek-marshalers.h\""; \ $(AM_V_GEN) (echo "#include \"eek-marshalers.h\""; \
$(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --body --internal) > $@.tmp && \ $(GLIB_GENMARSHAL) --prefix=_eek_marshal \
$(srcdir)/eek-marshalers.list --body --internal) > $@.tmp && \
mv $@.tmp $@ mv $@.tmp $@
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = \ pkgconfig_DATA = \
eek-$(EEK_API_VERSION).pc \ eek-$(EEK_API_VERSION).pc \
eek-gtk-$(EEK_API_VERSION).pc \ eek-gtk-$(EEK_API_VERSION).pc \
eek-xkb-$(EEK_API_VERSION).pc \ $(NULL)
eek-xkl-$(EEK_API_VERSION).pc
if ENABLE_CLUTTER
pkgconfig_DATA += eek-clutter-$(EEK_API_VERSION).pc
endif
CLEANFILES = CLEANFILES =
DISTCLEANFILES = \ DISTCLEANFILES = \
$(BUILT_SOURCES) \ $(BUILT_SOURCES) \
$(pkgconfig_DATA) $(pkgconfig_DATA) \
$(NULL)
EXTRA_DIST = \ EXTRA_DIST = \
gen-keysym-entries.py \ gen-keysym-entries.py \
special-keysym-entries.txt \ special-keysym-entries.txt \
unicode-keysym-entries.txt \ unicode-keysym-entries.txt \
xkeysym-keysym-entries.txt \ xkeysym-keysym-entries.txt \
eek-marshalers.list eek-enumtypes.h.template \
eek-enumtypes.c.template \
eek-marshalers.list \
$(NULL)
-include $(INTROSPECTION_MAKEFILE) -include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS = INTROSPECTION_GIRS =
@ -205,48 +230,56 @@ INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
if HAVE_INTROSPECTION if HAVE_INTROSPECTION
Eek@EEK_LIBRARY_SUFFIX@.gir: libeek.la Eek@EEK_LIBRARY_SUFFIX@.gir: libeek.la
Eek@EEK_LIBRARY_SUFFIX_U@_gir_SCANNERFLAGS = --strip-prefix=Eek --pkg=glib-2.0 Eek@EEK_LIBRARY_SUFFIX_U@_gir_SCANNERFLAGS = \
--identifier-prefix=Eek \
--symbol-prefix=eek \
--pkg=glib-2.0 \
--pkg-export=eek-$(EEK_API_VERSION) \
$(NULL)
Eek@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0 Eek@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0
Eek@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_la_CFLAGS) Eek@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_la_CFLAGS)
Eek@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek.la Eek@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek.la
Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_sources) $(libeek_public_headers) Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = \
$(libeek_sources) \
$(libeek_public_headers) \
$(builddir)/eek-enumtypes.h \
$(NULL)
EekGtk@EEK_LIBRARY_SUFFIX@.gir: libeek-gtk.la Eek@EEK_LIBRARY_SUFFIX@.gir EekGtk@EEK_LIBRARY_SUFFIX@.gir: libeek-gtk.la Eek@EEK_LIBRARY_SUFFIX@.gir
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Gtk-@GTK_API_VERSION@ Eek@EEK_LIBRARY_SUFFIX@ EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_SCANNERFLAGS = \
--identifier-prefix=Eek \
--symbol-prefix=eek \
--pkg-export=eek-gtk-$(EEK_API_VERSION) \
$(NULL)
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = \
GObject-2.0 \
Gtk-@GTK_API_VERSION@ \
Eek@EEK_LIBRARY_SUFFIX@ \
$(NULL)
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_gtk_la_CFLAGS) EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_gtk_la_CFLAGS)
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-gtk.la EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-gtk.la
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_gtk_sources) $(libeek_gtk_public_headers) EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_FILES = \
$(libeek_gtk_sources) \
$(libeek_gtk_public_headers) \
$(NULL)
if ENABLE_CLUTTER # EekXkl@EEK_LIBRARY_SUFFIX@.gir: libeek-xkl.la Eek@EEK_LIBRARY_SUFFIX@.gir
EekClutter@EEK_LIBRARY_SUFFIX@.gir: libeek-clutter.la Eek@EEK_LIBRARY_SUFFIX@.gir # EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_SCANNERFLAGS = \
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Clutter-1.0 Eek@EEK_LIBRARY_SUFFIX@ # --identifier-prefix=Eek \
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_clutter_la_CFLAGS) # --symbol-prefix=eek \
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-clutter.la # $(NULL)
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_clutter_sources) $(libeek_clutter_public_headers) # EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Eek@EEK_LIBRARY_SUFFIX@
endif # EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkl_la_CFLAGS)
# EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkl.la
EekXkb@EEK_LIBRARY_SUFFIX@.gir: libeek-xkb.la Eek@EEK_LIBRARY_SUFFIX@.gir # EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = \
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Eek@EEK_LIBRARY_SUFFIX@ # $(libeek_xkl_sources) \
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkb_la_CFLAGS) # $(libeek_xkl_public_headers) \
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkb.la # $(NULL)
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkb_sources) $(libeek_xkb_public_headers)
EekXkl@EEK_LIBRARY_SUFFIX@.gir: libeek-xkl.la EekXkb@EEK_LIBRARY_SUFFIX@.gir
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 EekXkb@EEK_LIBRARY_SUFFIX@
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkl_la_CFLAGS)
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkl.la
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_sources) $(libeek_xkl_public_headers)
INTROSPECTION_GIRS += \ INTROSPECTION_GIRS += \
Eek@EEK_LIBRARY_SUFFIX@.gir \ Eek@EEK_LIBRARY_SUFFIX@.gir \
EekGtk@EEK_LIBRARY_SUFFIX@.gir \ EekGtk@EEK_LIBRARY_SUFFIX@.gir \
EekXkb@EEK_LIBRARY_SUFFIX@.gir \ $(NULL)
EekXkl@EEK_LIBRARY_SUFFIX@.gir
if ENABLE_CLUTTER
INTROSPECTION_GIRS += \
EekClutter@EEK_LIBRARY_SUFFIX@.gir
endif
girdir = $(datadir)/gir-1.0 girdir = $(datadir)/gir-1.0
gir_DATA = $(INTROSPECTION_GIRS) gir_DATA = $(INTROSPECTION_GIRS)
@ -256,3 +289,5 @@ typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
CLEANFILES += $(gir_DATA) $(typelib_DATA) CLEANFILES += $(gir_DATA) $(typelib_DATA)
endif endif
-include $(top_srcdir)/git.mk

View File

@ -23,8 +23,8 @@ includedir=@includedir@
Name: EEK Name: EEK
Description: A Library to Create Keyboard-like UI Description: A Library to Create Keyboard-like UI
URL: http://ueno.github.com/eekboard/ URL: http://fedorahosted.org/eekboard/
Version: @VERSION@ Version: @VERSION@
Requires: gobject-2.0 Requires: gobject-2.0 gio-2.0
Libs: -L${libdir} -leek Libs: -L${libdir} -leek
Cflags: -I${includedir}/eek-@EEK_API_VERSION@ Cflags: -I${includedir}/eek-@EEK_API_VERSION@

View File

@ -1,307 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* HAVE_CONFIG_H */
#include "eek-clutter-key.h"
enum {
PROP_0,
PROP_KEY,
PROP_RENDERER,
PROP_LAST
};
G_DEFINE_TYPE (EekClutterKey, eek_clutter_key, CLUTTER_TYPE_ACTOR);
#define EEK_CLUTTER_KEY_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CLUTTER_KEY, EekClutterKeyPrivate))
struct _EekClutterKeyPrivate
{
EekKey *key;
EekClutterRenderer *renderer;
gulong pressed_handler;
gulong released_handler;
};
static void
on_pressed (EekKey *key, gpointer user_data)
{
ClutterActor *actor = user_data, *parent;
parent = clutter_actor_get_parent (actor);
clutter_actor_raise_top (parent);
clutter_actor_raise_top (actor);
clutter_actor_set_scale_with_gravity (actor,
1.0,
1.0,
CLUTTER_GRAVITY_CENTER);
clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 150,
"scale-x", 1.5,
"scale-y", 1.5,
NULL);
}
static void
on_released (EekKey *key, gpointer user_data)
{
ClutterActor *actor = user_data, *parent;
parent = clutter_actor_get_parent (actor);
clutter_actor_raise_top (parent);
clutter_actor_raise_top (actor);
clutter_actor_set_scale_with_gravity (actor,
1.5,
1.5,
CLUTTER_GRAVITY_CENTER);
clutter_actor_animate (actor, CLUTTER_EASE_OUT_SINE, 150,
"scale-x", 1.0,
"scale-y", 1.0,
NULL);
}
static void
set_position (ClutterActor *self)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
EekBounds bounds;
gdouble scale;
eek_element_get_bounds (EEK_ELEMENT(priv->key), &bounds);
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
clutter_actor_set_position (self, bounds.x * scale, bounds.y * scale);
}
static void
eek_clutter_key_real_realize (ClutterActor *self)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
set_position (self);
clutter_actor_set_reactive (self, TRUE);
priv->pressed_handler =
g_signal_connect (priv->key, "pressed",
G_CALLBACK(on_pressed), self);
priv->released_handler =
g_signal_connect (priv->key, "released",
G_CALLBACK(on_released), self);
}
static void
eek_clutter_key_real_paint (ClutterActor *self)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
set_position (self);
eek_clutter_renderer_render_key (priv->renderer, self, priv->key);
}
static void
eek_clutter_key_real_get_preferred_width (ClutterActor *self,
gfloat for_height,
gfloat *min_width_p,
gfloat *natural_width_p)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
EekBounds bounds;
gdouble scale;
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
eek_element_get_bounds (EEK_ELEMENT(priv->key), &bounds);
*min_width_p = 0.0f;
*natural_width_p = bounds.width * scale;
}
static void
eek_clutter_key_real_get_preferred_height (ClutterActor *self,
gfloat for_width,
gfloat *min_height_p,
gfloat *natural_height_p)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
EekBounds bounds;
gdouble scale;
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
eek_element_get_bounds (EEK_ELEMENT(priv->key), &bounds);
*min_height_p = 0.0f;
*natural_height_p = bounds.height * scale;
}
static void
eek_clutter_key_real_allocate (ClutterActor *self,
const ClutterActorBox *box,
ClutterAllocationFlags flags)
{
CLUTTER_ACTOR_CLASS (eek_clutter_key_parent_class)->
allocate (self, box, flags);
}
static gboolean
eek_clutter_key_real_button_press_event (ClutterActor *self,
ClutterButtonEvent *event)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
g_signal_emit_by_name (priv->key, "pressed");
return TRUE;
}
static gboolean
eek_clutter_key_real_button_release_event (ClutterActor *self,
ClutterButtonEvent *event)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
g_signal_emit_by_name (priv->key, "released");
return TRUE;
}
static gboolean
eek_clutter_key_real_leave_event (ClutterActor *self,
ClutterCrossingEvent *event)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
if (eek_key_is_pressed (priv->key))
g_signal_emit_by_name (priv->key, "released");
return TRUE;
}
static void
eek_clutter_key_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(object);
switch (prop_id) {
case PROP_KEY:
priv->key = g_value_get_object (value);
g_object_ref (priv->key);
break;
case PROP_RENDERER:
priv->renderer = g_value_get_object (value);
g_object_ref (priv->renderer);
break;
default:
g_object_set_property (object,
g_param_spec_get_name (pspec),
value);
break;
}
}
static void
eek_clutter_key_dispose (GObject *object)
{
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(object);
if (priv->renderer) {
g_object_unref (priv->renderer);
priv->renderer = NULL;
}
if (priv->key) {
if (g_signal_handler_is_connected (priv->key, priv->pressed_handler))
g_signal_handler_disconnect (priv->key, priv->pressed_handler);
if (g_signal_handler_is_connected (priv->key, priv->released_handler))
g_signal_handler_disconnect (priv->key, priv->released_handler);
g_object_unref (priv->key);
priv->key = NULL;
}
G_OBJECT_CLASS (eek_clutter_key_parent_class)->dispose (object);
}
static void
eek_clutter_key_class_init (EekClutterKeyClass *klass)
{
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (gobject_class,
sizeof (EekClutterKeyPrivate));
actor_class->realize = eek_clutter_key_real_realize;
actor_class->paint = eek_clutter_key_real_paint;
actor_class->get_preferred_width =
eek_clutter_key_real_get_preferred_width;
actor_class->get_preferred_height =
eek_clutter_key_real_get_preferred_height;
actor_class->allocate = eek_clutter_key_real_allocate;
/* signals */
actor_class->button_press_event =
eek_clutter_key_real_button_press_event;
actor_class->button_release_event =
eek_clutter_key_real_button_release_event;
actor_class->leave_event =
eek_clutter_key_real_leave_event;
gobject_class->set_property = eek_clutter_key_set_property;
gobject_class->dispose = eek_clutter_key_dispose;
pspec = g_param_spec_object ("key",
"Key",
"Key",
EEK_TYPE_KEY,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
g_object_class_install_property (gobject_class,
PROP_KEY,
pspec);
pspec = g_param_spec_object ("renderer",
"Renderer",
"Renderer",
EEK_TYPE_RENDERER,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
g_object_class_install_property (gobject_class,
PROP_RENDERER,
pspec);
}
static void
eek_clutter_key_init (EekClutterKey *self)
{
EekClutterKeyPrivate *priv;
priv = self->priv = EEK_CLUTTER_KEY_GET_PRIVATE (self);
priv->key = NULL;
priv->renderer = NULL;
}
ClutterActor *
eek_clutter_key_new (EekKey *key, EekClutterRenderer *renderer)
{
return g_object_new (EEK_TYPE_CLUTTER_KEY,
"key", key,
"renderer", renderer,
NULL);
}

View File

@ -1,63 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef EEK_CLUTTER_KEY_H
#define EEK_CLUTTER_KEY_H 1
#include <clutter/clutter.h>
#include "eek-key.h"
#include "eek-clutter-renderer.h"
G_BEGIN_DECLS
#define EEK_TYPE_CLUTTER_KEY (eek_clutter_key_get_type())
#define EEK_CLUTTER_KEY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEK_TYPE_CLUTTER_KEY, EekClutterKey))
#define EEK_CLUTTER_KEY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EEK_TYPE_CLUTTER_KEY, EekClutterKeyClass))
#define EEK_IS_CLUTTER_KEY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEK_TYPE_CLUTTER_KEY))
#define EEK_IS_CLUTTER_KEY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEK_TYPE_CLUTTER_KEY))
#define EEK_CLUTTER_KEY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EEK_TYPE_CLUTTER_KEY, EekClutterKeyClass))
typedef struct _EekClutterKey EekClutterKey;
typedef struct _EekClutterKeyClass EekClutterKeyClass;
typedef struct _EekClutterKeyPrivate EekClutterKeyPrivate;
struct _EekClutterKey
{
/*< private >*/
ClutterActor parent;
/*< private >*/
EekClutterKeyPrivate *priv;
};
struct _EekClutterKeyClass
{
/*< private >*/
ClutterActorClass parent_class;
/*< private >*/
/* padding */
gpointer pdummy[24];
};
GType eek_clutter_key_get_type (void) G_GNUC_CONST;
ClutterActor *eek_clutter_key_new (EekKey *key,
EekClutterRenderer *renderer);
G_END_DECLS
#endif /* EEK_CLUTTER_KEY_H */

View File

@ -1,250 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
/**
* SECTION:eek-clutter-keyboard
* @short_description: a #ClutterActor displaying #EekKeyboard
*/
#include <string.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* HAVE_CONFIG_H */
#include "eek-clutter-keyboard.h"
#include "eek-clutter-section.h"
#include "eek-clutter-renderer.h"
#include "eek-keyboard.h"
enum {
PROP_0,
PROP_KEYBOARD,
PROP_LAST
};
G_DEFINE_TYPE (EekClutterKeyboard, eek_clutter_keyboard, CLUTTER_TYPE_GROUP);
#define EEK_CLUTTER_KEYBOARD_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CLUTTER_KEYBOARD, EekClutterKeyboardPrivate))
struct _EekClutterKeyboardPrivate
{
EekKeyboard *keyboard;
EekClutterRenderer *renderer;
};
struct _CreateSectionCallbackData {
ClutterActor *actor;
EekClutterRenderer *renderer;
};
typedef struct _CreateSectionCallbackData CreateSectionCallbackData;
static void
create_section (EekElement *element, gpointer user_data)
{
CreateSectionCallbackData *data = user_data;
ClutterActor *section;
section = eek_clutter_section_new (EEK_SECTION(element), data->renderer);
clutter_container_add_actor (CLUTTER_CONTAINER(data->actor), section);
}
static void
eek_clutter_keyboard_real_realize (ClutterActor *self)
{
EekClutterKeyboardPrivate *priv;
CreateSectionCallbackData data;
EekBounds bounds;
gdouble scale;
priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
clutter_actor_set_position (CLUTTER_ACTOR(self),
bounds.x * scale,
bounds.y * scale);
data.actor = CLUTTER_ACTOR(self);
data.renderer = priv->renderer;
eek_container_foreach_child (EEK_CONTAINER(priv->keyboard),
create_section,
&data);
}
static void
eek_clutter_keyboard_real_get_preferred_width (ClutterActor *self,
float for_height,
float *min_width_p,
float *natural_width_p)
{
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
gdouble width;
eek_renderer_get_size (EEK_RENDERER(priv->renderer), &width, NULL);
*min_width_p = 0.0f;
*natural_width_p = width;
}
static void
eek_clutter_keyboard_real_get_preferred_height (ClutterActor *self,
float for_width,
float *min_height_p,
float *natural_height_p)
{
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
gdouble height;
eek_renderer_get_size (EEK_RENDERER(priv->renderer), NULL, &height);
*min_height_p = 0.0f;
*natural_height_p = height;
}
static void
eek_clutter_keyboard_real_allocate (ClutterActor *self,
const ClutterActorBox *box,
ClutterAllocationFlags flags)
{
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
g_assert (priv->renderer);
eek_renderer_set_allocation_size (EEK_RENDERER(priv->renderer),
box->x2 - box->x1,
box->y2 - box->y1);
CLUTTER_ACTOR_CLASS (eek_clutter_keyboard_parent_class)->
allocate (self, box, flags);
}
static void
create_renderer (EekClutterKeyboard *self)
{
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
PangoContext *pcontext;
PangoFontDescription *font;
EekBounds bounds;
pcontext = clutter_actor_get_pango_context (CLUTTER_ACTOR(self));
font = pango_font_description_from_string ("Sans 48px");
pango_context_set_font_description (pcontext, font);
pango_font_description_free (font);
priv->renderer = eek_clutter_renderer_new (priv->keyboard, pcontext);
eek_element_get_bounds (EEK_ELEMENT(priv->keyboard), &bounds);
eek_renderer_set_allocation_size (EEK_RENDERER(priv->renderer),
bounds.width,
bounds.height);
}
static void
eek_clutter_keyboard_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(object);
switch (prop_id) {
case PROP_KEYBOARD:
priv->keyboard = g_value_get_object (value);
g_object_ref (priv->keyboard);
create_renderer (EEK_CLUTTER_KEYBOARD(object));
break;
default:
g_object_set_property (object,
g_param_spec_get_name (pspec),
value);
break;
}
}
static void
eek_clutter_keyboard_dispose (GObject *object)
{
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(object);
if (priv->renderer) {
g_object_unref (G_OBJECT(priv->renderer));
priv->renderer = NULL;
}
if (priv->keyboard) {
g_object_unref (priv->keyboard);
priv->keyboard = NULL;
}
G_OBJECT_CLASS (eek_clutter_keyboard_parent_class)->dispose (object);
}
static void
eek_clutter_keyboard_class_init (EekClutterKeyboardClass *klass)
{
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (gobject_class,
sizeof (EekClutterKeyboardPrivate));
actor_class->realize =
eek_clutter_keyboard_real_realize;
actor_class->get_preferred_width =
eek_clutter_keyboard_real_get_preferred_width;
actor_class->get_preferred_height =
eek_clutter_keyboard_real_get_preferred_height;
actor_class->allocate = eek_clutter_keyboard_real_allocate;
gobject_class->set_property = eek_clutter_keyboard_set_property;
gobject_class->dispose = eek_clutter_keyboard_dispose;
pspec = g_param_spec_object ("keyboard",
"Keyboard",
"Keyboard",
EEK_TYPE_KEYBOARD,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
g_object_class_install_property (gobject_class,
PROP_KEYBOARD,
pspec);
}
static void
eek_clutter_keyboard_init (EekClutterKeyboard *self)
{
EekClutterKeyboardPrivate *priv;
priv = self->priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
priv->keyboard = NULL;
priv->renderer = NULL;
}
/**
* eek_clutter_keyboard_new:
* @keyboard: an #EekKeyboard
*
* Create a new #ClutterActor displaying @keyboard.
* Returns: a #ClutterActor
*/
ClutterActor *
eek_clutter_keyboard_new (EekKeyboard *keyboard)
{
return g_object_new (EEK_TYPE_CLUTTER_KEYBOARD, "keyboard", keyboard, NULL);
}

View File

@ -1,60 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef EEK_CLUTTER_KEYBOARD_H
#define EEK_CLUTTER_KEYBOARD_H 1
#include <clutter/clutter.h>
#include "eek-keyboard.h"
G_BEGIN_DECLS
#define EEK_TYPE_CLUTTER_KEYBOARD (eek_clutter_keyboard_get_type())
#define EEK_CLUTTER_KEYBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEK_TYPE_CLUTTER_KEYBOARD, EekClutterKeyboard))
#define EEK_CLUTTER_KEYBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EEK_TYPE_CLUTTER_KEYBOARD, EekClutterKeyboardClass))
#define EEK_IS_CLUTTER_KEYBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEK_TYPE_CLUTTER_KEYBOARD))
#define EEK_IS_CLUTTER_KEYBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEK_TYPE_CLUTTER_KEYBOARD))
#define EEK_CLUTTER_KEYBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EEK_TYPE_CLUTTER_KEYBOARD, EekClutterKeyboardClass))
typedef struct _EekClutterKeyboard EekClutterKeyboard;
typedef struct _EekClutterKeyboardClass EekClutterKeyboardClass;
typedef struct _EekClutterKeyboardPrivate EekClutterKeyboardPrivate;
struct _EekClutterKeyboard
{
/*< private >*/
ClutterGroup parent;
EekClutterKeyboardPrivate *priv;
};
struct _EekClutterKeyboardClass
{
/*< private >*/
ClutterGroupClass parent_class;
/*< private >*/
/* padding */
gpointer pdummy[24];
};
GType eek_clutter_keyboard_get_type (void) G_GNUC_CONST;
ClutterActor *eek_clutter_keyboard_new (EekKeyboard *keyboard);
G_END_DECLS
#endif /* EEK_CLUTTER_KEYBOARD_H */

View File

@ -1,209 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#include <string.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <cogl/cogl.h>
#include <cogl/cogl-pango.h>
#include <clutter/clutter.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* HAVE_CONFIG_H */
#include "eek-clutter-renderer.h"
#include "eek-key.h"
G_DEFINE_TYPE (EekClutterRenderer, eek_clutter_renderer, EEK_TYPE_RENDERER);
#define EEK_CLUTTER_RENDERER_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CLUTTER_RENDERER, EekClutterRendererPrivate))
struct _EekClutterRendererPrivate
{
GHashTable *outline_texture_cache;
};
/* This routine is copied from librsvg:
Copyright © 2005 Dom Lachowicz <cinamod@hotmail.com>
Copyright © 2005 Caleb Moore <c.moore@student.unsw.edu.au>
Copyright © 2005 Red Hat, Inc.
*/
static void
cairo_pixels_to_pixbuf (guint8 *pixels,
int rowstride,
int height)
{
int row;
/* un-premultiply data */
for (row = 0; row < height; row++) {
guint8 *row_data = (pixels + (row * rowstride));
int i;
for (i = 0; i < rowstride; i += 4) {
guint8 *b = &row_data[i];
guint32 pixel;
guint8 alpha;
memcpy (&pixel, b, sizeof (guint32));
alpha = (pixel & 0xff000000) >> 24;
if (alpha == 0) {
b[0] = b[1] = b[2] = b[3] = 0;
} else {
b[0] = (((pixel & 0xff0000) >> 16) * 255 + alpha / 2) / alpha;
b[1] = (((pixel & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha;
b[2] = (((pixel & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha;
b[3] = alpha;
}
}
}
}
static void
eek_clutter_renderer_class_init (EekClutterRendererClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (gobject_class,
sizeof (EekClutterRendererPrivate));
}
static void
eek_clutter_renderer_init (EekClutterRenderer *self)
{
EekClutterRendererPrivate *priv;
priv = self->priv = EEK_CLUTTER_RENDERER_GET_PRIVATE(self);
priv->outline_texture_cache =
g_hash_table_new_full (g_direct_hash,
g_direct_equal,
NULL,
cogl_handle_unref);
}
void
eek_clutter_renderer_render_key (EekClutterRenderer *renderer,
ClutterActor *actor,
EekKey *key)
{
EekClutterRendererPrivate *priv;
EekOutline *outline;
CoglHandle *outline_texture;
PangoLayout *layout;
PangoRectangle extents = { 0, };
CoglColor color = { 0x00, 0x00, 0x00, 0xFF };
ClutterGeometry geom;
g_assert (EEK_IS_CLUTTER_RENDERER(renderer));
g_assert (CLUTTER_IS_ACTOR(actor));
g_assert (EEK_IS_KEY(key));
priv = EEK_CLUTTER_RENDERER_GET_PRIVATE(renderer);
outline = eek_key_get_outline (key);
outline_texture = g_hash_table_lookup (priv->outline_texture_cache,
outline);
if (!outline_texture) {
gint rowstride;
guint8 *data;
cairo_surface_t *surface;
cairo_t *cr;
EekBounds bounds;
gdouble scale;
GdkPixbuf *pixbuf;
eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
scale = eek_renderer_get_scale (EEK_RENDERER(renderer));
rowstride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32,
bounds.width * scale);
data = g_malloc0 (rowstride * bounds.height);
surface = cairo_image_surface_create_for_data (data,
CAIRO_FORMAT_ARGB32,
bounds.width * scale,
bounds.height * scale,
rowstride);
cr = cairo_create (surface);
eek_renderer_render_key_outline (EEK_RENDERER(renderer),
cr,
key,
1.0,
FALSE);
cairo_destroy (cr);
cairo_surface_destroy (surface);
cairo_pixels_to_pixbuf (data, rowstride, bounds.height * scale);
pixbuf = gdk_pixbuf_new_from_data (data,
GDK_COLORSPACE_RGB,
TRUE,
8,
bounds.width * scale,
bounds.height * scale,
rowstride,
(GdkPixbufDestroyNotify) g_free,
data);
outline_texture =
cogl_texture_new_from_data (gdk_pixbuf_get_width (pixbuf),
gdk_pixbuf_get_height (pixbuf),
COGL_TEXTURE_NONE,
gdk_pixbuf_get_has_alpha (pixbuf)
? COGL_PIXEL_FORMAT_RGBA_8888
: COGL_PIXEL_FORMAT_RGB_888,
COGL_PIXEL_FORMAT_ANY,
gdk_pixbuf_get_rowstride (pixbuf),
gdk_pixbuf_get_pixels (pixbuf));
g_object_unref (pixbuf);
g_hash_table_insert (priv->outline_texture_cache,
outline,
outline_texture);
}
clutter_actor_get_allocation_geometry (actor, &geom);
cogl_set_source_texture (outline_texture);
cogl_rectangle (0.0f, 0.0f, geom.width, geom.height);
layout = eek_renderer_create_pango_layout (EEK_RENDERER(renderer));
eek_renderer_render_key_label (EEK_RENDERER(renderer), layout, key);
pango_layout_get_extents (layout, NULL, &extents);
cogl_pango_render_layout (layout,
(geom.width - extents.width / PANGO_SCALE) / 2,
(geom.height - extents.height / PANGO_SCALE) / 2,
&color,
0);
g_object_unref (layout);
}
EekClutterRenderer *
eek_clutter_renderer_new (EekKeyboard *keyboard,
PangoContext *pcontext)
{
EekClutterRenderer *renderer;
renderer = g_object_new (EEK_TYPE_CLUTTER_RENDERER,
"keyboard", keyboard,
"pango-context", pcontext,
NULL);
return renderer;
}

View File

@ -1,64 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef EEK_CLUTTER_RENDERER_H
#define EEK_CLUTTER_RENDERER_H 1
#include "eek-renderer.h"
G_BEGIN_DECLS
#define EEK_TYPE_CLUTTER_RENDERER (eek_clutter_renderer_get_type())
#define EEK_CLUTTER_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEK_TYPE_CLUTTER_RENDERER, EekClutterRenderer))
#define EEK_CLUTTER_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EEK_TYPE_CLUTTER_RENDERER, EekClutterRendererClass))
#define EEK_IS_CLUTTER_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEK_TYPE_CLUTTER_RENDERER))
#define EEK_IS_CLUTTER_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEK_TYPE_CLUTTER_RENDERER))
#define EEK_CLUTTER_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EEK_TYPE_CLUTTER_RENDERER, EekClutterRendererClass))
typedef struct _EekClutterRenderer EekClutterRenderer;
typedef struct _EekClutterRendererClass EekClutterRendererClass;
typedef struct _EekClutterRendererPrivate EekClutterRendererPrivate;
struct _EekClutterRenderer {
EekRenderer parent;
EekClutterRendererPrivate *priv;
};
struct _EekClutterRendererClass
{
EekRendererClass parent_class;
/*< private >*/
/* padding */
gpointer pdummy[24];
};
GType eek_clutter_renderer_get_type
(void) G_GNUC_CONST;
EekClutterRenderer *eek_clutter_renderer_new (EekKeyboard *keyboard,
PangoContext *pcontext);
void eek_clutter_renderer_render_key
(EekClutterRenderer *renderer,
ClutterActor *actor,
EekKey *key);
G_END_DECLS
#endif /* EEK_CLUTTER_RENDERER_H */

View File

@ -1,232 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* HAVE_CONFIG_H */
#include "eek-clutter-section.h"
#include "eek-clutter-key.h"
enum {
PROP_0,
PROP_SECTION,
PROP_RENDERER,
PROP_LAST
};
G_DEFINE_TYPE (EekClutterSection, eek_clutter_section, CLUTTER_TYPE_GROUP);
#define EEK_CLUTTER_SECTION_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CLUTTER_SECTION, EekClutterSectionPrivate))
struct _EekClutterSectionPrivate
{
EekSection *section;
EekClutterRenderer *renderer;
};
struct _CreateKeyCallbackData {
ClutterActor *actor;
EekClutterRenderer *renderer;
};
typedef struct _CreateKeyCallbackData CreateKeyCallbackData;
static void
create_key (EekElement *element, gpointer user_data)
{
CreateKeyCallbackData *data = user_data;
ClutterActor *key;
key = eek_clutter_key_new (EEK_KEY(element), data->renderer);
clutter_container_add_actor (CLUTTER_CONTAINER(data->actor), key);
}
static void
set_position (ClutterActor *self)
{
EekClutterSectionPrivate *priv = EEK_CLUTTER_SECTION_GET_PRIVATE(self);
EekBounds bounds;
gdouble scale;
eek_element_get_bounds (EEK_ELEMENT(priv->section), &bounds);
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
clutter_actor_set_position (self, bounds.x * scale, bounds.y * scale);
}
static void
eek_clutter_section_real_realize (ClutterActor *self)
{
EekClutterSectionPrivate *priv = EEK_CLUTTER_SECTION_GET_PRIVATE(self);
CreateKeyCallbackData data;
clutter_actor_set_rotation (self,
CLUTTER_Z_AXIS,
eek_section_get_angle (priv->section),
0.0f, 0.0f, 0.0f);
set_position (self);
data.actor = self;
data.renderer = priv->renderer;
eek_container_foreach_child (EEK_CONTAINER(priv->section),
create_key,
&data);
}
static void
eek_clutter_section_real_paint (ClutterActor *self)
{
set_position (self);
CLUTTER_ACTOR_CLASS (eek_clutter_section_parent_class)->
paint (self);
}
static void
eek_clutter_section_real_get_preferred_width (ClutterActor *self,
float for_height,
float *min_width_p,
float *natural_width_p)
{
EekClutterSectionPrivate *priv = EEK_CLUTTER_SECTION_GET_PRIVATE(self);
EekBounds bounds;
gdouble scale;
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
eek_element_get_bounds (EEK_ELEMENT(priv->section), &bounds);
*min_width_p = 0.0f;
*natural_width_p = bounds.width * scale;
}
static void
eek_clutter_section_real_get_preferred_height (ClutterActor *self,
float for_width,
float *min_height_p,
float *natural_height_p)
{
EekClutterSectionPrivate *priv = EEK_CLUTTER_SECTION_GET_PRIVATE(self);
EekBounds bounds;
gdouble scale;
scale = eek_renderer_get_scale (EEK_RENDERER(priv->renderer));
eek_element_get_bounds (EEK_ELEMENT(priv->section), &bounds);
*min_height_p = 0.0f;
*natural_height_p = bounds.height * scale;
}
static void
eek_clutter_section_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
EekClutterSectionPrivate *priv = EEK_CLUTTER_SECTION_GET_PRIVATE(object);
switch (prop_id) {
case PROP_SECTION:
priv->section = g_value_get_object (value);
g_object_ref (priv->section);
break;
case PROP_RENDERER:
priv->renderer = g_value_get_object (value);
g_object_ref (priv->renderer);
break;
default:
g_object_set_property (object,
g_param_spec_get_name (pspec),
value);
break;
}
}
static void
eek_clutter_section_dispose (GObject *object)
{
EekClutterSectionPrivate *priv = EEK_CLUTTER_SECTION_GET_PRIVATE(object);
if (priv->renderer) {
g_object_unref (priv->renderer);
priv->renderer = NULL;
}
if (priv->section) {
g_object_unref (priv->section);
priv->section = NULL;
}
G_OBJECT_CLASS (eek_clutter_section_parent_class)->dispose (object);
}
static void
eek_clutter_section_class_init (EekClutterSectionClass *klass)
{
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (gobject_class, sizeof (EekClutterSectionPrivate));
actor_class->realize =
eek_clutter_section_real_realize;
actor_class->paint =
eek_clutter_section_real_paint;
actor_class->get_preferred_width =
eek_clutter_section_real_get_preferred_width;
actor_class->get_preferred_height =
eek_clutter_section_real_get_preferred_height;
gobject_class->set_property = eek_clutter_section_set_property;
gobject_class->dispose = eek_clutter_section_dispose;
pspec = g_param_spec_object ("section",
"Section",
"Section",
EEK_TYPE_SECTION,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
g_object_class_install_property (gobject_class,
PROP_SECTION,
pspec);
pspec = g_param_spec_object ("renderer",
"Renderer",
"Renderer",
EEK_TYPE_RENDERER,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE);
g_object_class_install_property (gobject_class,
PROP_RENDERER,
pspec);
}
static void
eek_clutter_section_init (EekClutterSection *self)
{
EekClutterSectionPrivate *priv;
priv = self->priv = EEK_CLUTTER_SECTION_GET_PRIVATE (self);
priv->section = NULL;
priv->renderer = NULL;
}
ClutterActor *
eek_clutter_section_new (EekSection *section,
EekClutterRenderer *renderer)
{
return g_object_new (EEK_TYPE_CLUTTER_SECTION,
"section", section,
"renderer", renderer,
NULL);
}

View File

@ -1,62 +0,0 @@
/*
* Copyright (C) 2010-2011 Daiki Ueno <ueno@unixuser.org>
* Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef EEK_CLUTTER_SECTION_H
#define EEK_CLUTTER_SECTION_H 1
#include <clutter/clutter.h>
#include "eek-section.h"
#include "eek-clutter-renderer.h"
G_BEGIN_DECLS
#define EEK_TYPE_CLUTTER_SECTION (eek_clutter_section_get_type())
#define EEK_CLUTTER_SECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEK_TYPE_CLUTTER_SECTION, EekClutterSection))
#define EEK_CLUTTER_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EEK_TYPE_CLUTTER_SECTION, EekClutterSectionClass))
#define EEK_IS_CLUTTER_SECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEK_TYPE_CLUTTER_SECTION))
#define EEK_IS_CLUTTER_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEK_TYPE_CLUTTER_SECTION))
#define EEK_CLUTTER_SECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EEK_TYPE_CLUTTER_SECTION, EekClutterSectionClass))
typedef struct _EekClutterSection EekClutterSection;
typedef struct _EekClutterSectionClass EekClutterSectionClass;
typedef struct _EekClutterSectionPrivate EekClutterSectionPrivate;
struct _EekClutterSection
{
/*< private >*/
ClutterGroup parent;
EekClutterSectionPrivate *priv;
};
struct _EekClutterSectionClass
{
/*< private >*/
ClutterGroupClass parent_class;
/*< private >*/
/* padding */
gpointer pdummy[24];
};
GType eek_clutter_section_get_type (void) G_GNUC_CONST;
ClutterActor *eek_clutter_section_new (EekSection *section,
EekClutterRenderer *renderer);
G_END_DECLS
#endif /* EEK_CLUTTER_SECTION_H */

View File

@ -31,7 +31,6 @@
#endif /* HAVE_CONFIG_H */ #endif /* HAVE_CONFIG_H */
#include "eek-container.h" #include "eek-container.h"
#include "eek-serializable.h"
enum { enum {
CHILD_ADDED, CHILD_ADDED,
@ -41,11 +40,7 @@ enum {
static guint signals[LAST_SIGNAL] = { 0, }; static guint signals[LAST_SIGNAL] = { 0, };
static void eek_serializable_iface_init (EekSerializableIface *iface); G_DEFINE_ABSTRACT_TYPE (EekContainer, eek_container, EEK_TYPE_ELEMENT);
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (EekContainer, eek_container, EEK_TYPE_ELEMENT,
G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE,
eek_serializable_iface_init));
#define EEK_CONTAINER_GET_PRIVATE(obj) \ #define EEK_CONTAINER_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CONTAINER, EekContainerPrivate)) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CONTAINER, EekContainerPrivate))
@ -53,63 +48,10 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (EekContainer, eek_container, EEK_TYPE_ELEMENT,
struct _EekContainerPrivate struct _EekContainerPrivate
{ {
GSList *children; GList *head;
GList *last;
}; };
static EekSerializableIface *eek_container_parent_serializable_iface;
static void
eek_container_real_serialize (EekSerializable *self,
GVariantBuilder *builder)
{
EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self);
GSList *head;
GVariantBuilder array;
eek_container_parent_serializable_iface->serialize (self, builder);
g_variant_builder_init (&array, G_VARIANT_TYPE("av"));
for (head = priv->children; head; head = g_slist_next (head)) {
GVariant *variant =
eek_serializable_serialize (EEK_SERIALIZABLE(head->data));
g_variant_builder_add (&array, "v", variant);
}
g_variant_builder_add (builder, "v", g_variant_builder_end (&array));
}
static gsize
eek_container_real_deserialize (EekSerializable *self,
GVariant *variant,
gsize index)
{
GVariant *array, *child;
GVariantIter iter;
index = eek_container_parent_serializable_iface->deserialize (self,
variant,
index);
g_variant_get_child (variant, index++, "v", &array);
g_variant_iter_init (&iter, array);
while (g_variant_iter_next (&iter, "v", &child)) {
EekSerializable *serializable = eek_serializable_deserialize (child);
eek_container_add_child (EEK_CONTAINER(self),
EEK_ELEMENT(serializable));
}
return index;
}
static void
eek_serializable_iface_init (EekSerializableIface *iface)
{
eek_container_parent_serializable_iface =
g_type_interface_peek_parent (iface);
iface->serialize = eek_container_real_serialize;
iface->deserialize = eek_container_real_deserialize;
}
static void static void
eek_container_real_add_child (EekContainer *self, eek_container_real_add_child (EekContainer *self,
EekElement *child) EekElement *child)
@ -119,9 +61,14 @@ eek_container_real_add_child (EekContainer *self,
g_return_if_fail (EEK_IS_ELEMENT(child)); g_return_if_fail (EEK_IS_ELEMENT(child));
g_object_ref (child); g_object_ref (child);
priv->children = g_slist_prepend (priv->children, child); if (!priv->head) {
priv->head = priv->last = g_list_prepend (priv->head, child);
} else {
priv->last->next = g_list_prepend (priv->last->next, child);
priv->last = priv->last->next;
}
eek_element_set_parent (child, EEK_ELEMENT(self)); eek_element_set_parent (child, EEK_ELEMENT(self));
g_signal_emit_by_name (self, "child-added", child); g_signal_emit (self, signals[CHILD_ADDED], 0, child);
} }
static void static void
@ -129,15 +76,17 @@ eek_container_real_remove_child (EekContainer *self,
EekElement *child) EekElement *child)
{ {
EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self); EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self);
GSList *head; GList *head;
g_return_if_fail (EEK_IS_ELEMENT(child)); g_return_if_fail (EEK_IS_ELEMENT(child));
head = g_slist_find (priv->children, child); head = g_list_find (priv->head, child);
g_return_if_fail (head); g_return_if_fail (head);
g_object_unref (child); g_object_unref (child);
priv->children = g_slist_remove_link (priv->children, head); if (head == priv->last)
priv->last = g_list_previous (priv->last);
priv->head = g_list_remove_link (priv->head, head);
eek_element_set_parent (child, NULL); eek_element_set_parent (child, NULL);
g_signal_emit_by_name (self, "child-removed", child); g_signal_emit (self, signals[CHILD_REMOVED], 0, child);
} }
static void static void
@ -146,9 +95,9 @@ eek_container_real_foreach_child (EekContainer *self,
gpointer user_data) gpointer user_data)
{ {
EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self); EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self);
GSList *head; GList *head;
for (head = priv->children; head; head = g_slist_next (head)) for (head = priv->head; head; head = g_list_next (head))
(*callback) (EEK_ELEMENT(head->data), user_data); (*callback) (EEK_ELEMENT(head->data), user_data);
} }
@ -158,9 +107,9 @@ eek_container_real_find (EekContainer *self,
gpointer user_data) gpointer user_data)
{ {
EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self); EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(self);
GSList *head; GList *head;
head = g_slist_find_custom (priv->children, user_data, (GCompareFunc)func); head = g_list_find_custom (priv->head, user_data, (GCompareFunc)func);
if (head) if (head)
return head->data; return head->data;
return NULL; return NULL;
@ -170,12 +119,12 @@ static void
eek_container_dispose (GObject *object) eek_container_dispose (GObject *object)
{ {
EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(object); EekContainerPrivate *priv = EEK_CONTAINER_GET_PRIVATE(object);
GSList *head; GList *head;
for (head = priv->children; head; head = priv->children) { for (head = priv->head; head; head = priv->head) {
g_object_unref (head->data); g_object_unref (head->data);
priv->children = g_slist_next (head); priv->head = g_list_next (head);
g_slist_free1 (head); g_list_free1 (head);
} }
G_OBJECT_CLASS(eek_container_parent_class)->dispose (object); G_OBJECT_CLASS(eek_container_parent_class)->dispose (object);
} }
@ -208,7 +157,7 @@ eek_container_class_init (EekContainerClass *klass)
* added to @container. * added to @container.
*/ */
signals[CHILD_ADDED] = signals[CHILD_ADDED] =
g_signal_new ("child-added", g_signal_new (I_("child-added"),
G_TYPE_FROM_CLASS(gobject_class), G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST, G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(EekContainerClass, child_added), G_STRUCT_OFFSET(EekContainerClass, child_added),
@ -226,7 +175,7 @@ eek_container_class_init (EekContainerClass *klass)
* removed from @container. * removed from @container.
*/ */
signals[CHILD_REMOVED] = signals[CHILD_REMOVED] =
g_signal_new ("child-removed", g_signal_new (I_("child-removed"),
G_TYPE_FROM_CLASS(gobject_class), G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST, G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(EekContainerClass, child_removed), G_STRUCT_OFFSET(EekContainerClass, child_removed),
@ -240,16 +189,13 @@ eek_container_class_init (EekContainerClass *klass)
static void static void
eek_container_init (EekContainer *self) eek_container_init (EekContainer *self)
{ {
EekContainerPrivate *priv; self->priv = EEK_CONTAINER_GET_PRIVATE(self);
priv = self->priv = EEK_CONTAINER_GET_PRIVATE(self);
priv->children = NULL;
} }
/** /**
* eek_container_foreach_child: * eek_container_foreach_child:
* @container: an #EekContainer * @container: an #EekContainer
* @callback: an #EekCallback * @callback: (scope call): an #EekCallback
* @user_data: additional data passed to @callback * @user_data: additional data passed to @callback
* *
* Enumerate children of @container and run @callback with each child. * Enumerate children of @container and run @callback with each child.

View File

@ -17,6 +17,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA * 02110-1301 USA
*/ */
#if !defined(__EEK_H_INSIDE__) && !defined(EEK_COMPILATION)
#error "Only <eek/eek.h> can be included directly."
#endif
#ifndef EEK_CONTAINER_H #ifndef EEK_CONTAINER_H
#define EEK_CONTAINER_H 1 #define EEK_CONTAINER_H 1
@ -34,6 +39,14 @@ G_BEGIN_DECLS
typedef struct _EekContainerClass EekContainerClass; typedef struct _EekContainerClass EekContainerClass;
typedef struct _EekContainerPrivate EekContainerPrivate; typedef struct _EekContainerPrivate EekContainerPrivate;
/**
* EekCallback:
* @element: an #EekElement
* @user_data: user-supplied data
*
* The type of the callback function used for iterating over the
* children of a container, see eek_container_foreach_child().
*/
typedef void (*EekCallback) (EekElement *element, gpointer user_data); typedef void (*EekCallback) (EekElement *element, gpointer user_data);
typedef gint (*EekCompareFunc) (EekElement *element, gpointer user_data); typedef gint (*EekCompareFunc) (EekElement *element, gpointer user_data);

View File

@ -26,28 +26,33 @@
* shall be used to implement #EekKeyboard, #EekSection, or #EekKey. * shall be used to implement #EekKeyboard, #EekSection, or #EekKey.
*/ */
#include <string.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif /* HAVE_CONFIG_H */ #endif /* HAVE_CONFIG_H */
#include <string.h>
#include "eek-element.h" #include "eek-element.h"
#include "eek-container.h" #include "eek-container.h"
#include "eek-serializable.h" #include "eek-marshalers.h"
enum { enum {
PROP_0, PROP_0,
PROP_NAME, PROP_NAME,
PROP_BOUNDS, PROP_BOUNDS,
PROP_GROUP,
PROP_LEVEL,
PROP_LAST PROP_LAST
}; };
static void eek_serializable_iface_init (EekSerializableIface *iface); enum {
SYMBOL_INDEX_CHANGED,
LAST_SIGNAL
};
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (EekElement, eek_element, G_TYPE_OBJECT, static guint signals[LAST_SIGNAL] = { 0, };
G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE,
eek_serializable_iface_init)); G_DEFINE_ABSTRACT_TYPE (EekElement, eek_element, G_TYPE_OBJECT);
#define EEK_ELEMENT_GET_PRIVATE(obj) \ #define EEK_ELEMENT_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_ELEMENT, EekElementPrivate)) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_ELEMENT, EekElementPrivate))
@ -58,128 +63,16 @@ struct _EekElementPrivate
gchar *name; gchar *name;
EekBounds bounds; EekBounds bounds;
EekElement *parent; EekElement *parent;
gint group;
gint level;
}; };
static GVariant *
_g_variant_new_bounds (EekBounds *bounds)
{
GVariantBuilder builder;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("ad"));
g_variant_builder_add (&builder, "d", bounds->x);
g_variant_builder_add (&builder, "d", bounds->y);
g_variant_builder_add (&builder, "d", bounds->width);
g_variant_builder_add (&builder, "d", bounds->height);
return g_variant_builder_end (&builder);
}
static void static void
_g_variant_get_bounds (GVariant *variant, EekBounds *bounds) eek_element_real_symbol_index_changed (EekElement *self,
gint group,
gint level)
{ {
g_variant_get_child (variant, 0, "d", &bounds->x); // g_debug ("symbol-index-changed");
g_variant_get_child (variant, 1, "d", &bounds->y);
g_variant_get_child (variant, 2, "d", &bounds->width);
g_variant_get_child (variant, 3, "d", &bounds->height);
}
static void
eek_element_real_serialize (EekSerializable *self,
GVariantBuilder *builder)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
g_variant_builder_add (builder, "s", priv->name == NULL ? "" : priv->name);
g_variant_builder_add (builder, "v", _g_variant_new_bounds (&priv->bounds));
}
static gsize
eek_element_real_deserialize (EekSerializable *self,
GVariant *variant,
gsize index)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
GVariant *bounds;
g_variant_get_child (variant, index++, "s", &priv->name);
g_variant_get_child (variant, index++, "v", &bounds);
_g_variant_get_bounds (bounds, &priv->bounds);
return index;
}
static void
eek_serializable_iface_init (EekSerializableIface *iface)
{
iface->serialize = eek_element_real_serialize;
iface->deserialize = eek_element_real_deserialize;
}
static void
eek_element_real_set_parent (EekElement *self,
EekElement *parent)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
if (!parent) {
g_return_if_fail (priv->parent);
/* release self-reference acquired when setting parent */
g_object_unref (self);
priv->parent = NULL;
} else {
g_return_if_fail (!priv->parent);
g_object_ref (self);
priv->parent = parent;
}
}
static EekElement *
eek_element_real_get_parent (EekElement *self)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
return priv->parent;
}
static void
eek_element_real_set_name (EekElement *self,
const gchar *name)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
g_free (priv->name);
priv->name = g_strdup (name);
g_object_notify (G_OBJECT(self), "name");
}
static G_CONST_RETURN gchar *
eek_element_real_get_name (EekElement *self)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
return priv->name;
}
static void
eek_element_real_set_bounds (EekElement *self,
EekBounds *bounds)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
priv->bounds = *bounds;
}
static void
eek_element_real_get_bounds (EekElement *self,
EekBounds *bounds)
{
EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
g_return_if_fail (bounds);
*bounds = priv->bounds;
g_object_notify (G_OBJECT(self), "bounds");
} }
static void static void
@ -197,15 +90,21 @@ eek_element_set_property (GObject *object,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
EekElement *element = EEK_ELEMENT(object);
switch (prop_id) { switch (prop_id) {
case PROP_NAME: case PROP_NAME:
eek_element_set_name (EEK_ELEMENT(object), eek_element_set_name (element,
g_value_get_string (value)); g_value_dup_string (value));
break; break;
case PROP_BOUNDS: case PROP_BOUNDS:
eek_element_set_bounds (EEK_ELEMENT(object), eek_element_set_bounds (element, g_value_get_boxed (value));
g_value_get_boxed (value));
break; break;
case PROP_GROUP:
eek_element_set_group (element, g_value_get_int (value));
break;
case PROP_LEVEL:
eek_element_set_level (element, g_value_get_int (value));
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -218,16 +117,23 @@ eek_element_get_property (GObject *object,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
EekBounds bounds; EekElement *element = EEK_ELEMENT(object);
EekBounds bounds;
switch (prop_id) { switch (prop_id) {
case PROP_NAME: case PROP_NAME:
g_value_set_string (value, eek_element_get_name (EEK_ELEMENT(object))); g_value_set_string (value, eek_element_get_name (element));
break; break;
case PROP_BOUNDS: case PROP_BOUNDS:
eek_element_get_bounds (EEK_ELEMENT(object), &bounds); eek_element_get_bounds (element, &bounds);
g_value_set_boxed (value, &bounds); g_value_set_boxed (value, &bounds);
break; break;
case PROP_GROUP:
g_value_set_int (value, eek_element_get_group (element));
break;
case PROP_LEVEL:
g_value_set_int (value, eek_element_get_level (element));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -243,12 +149,8 @@ eek_element_class_init (EekElementClass *klass)
g_type_class_add_private (gobject_class, g_type_class_add_private (gobject_class,
sizeof (EekElementPrivate)); sizeof (EekElementPrivate));
klass->set_parent = eek_element_real_set_parent; /* signals */
klass->get_parent = eek_element_real_get_parent; klass->symbol_index_changed = eek_element_real_symbol_index_changed;
klass->set_name = eek_element_real_set_name;
klass->get_name = eek_element_real_get_name;
klass->set_bounds = eek_element_real_set_bounds;
klass->get_bounds = eek_element_real_get_bounds;
gobject_class->set_property = eek_element_set_property; gobject_class->set_property = eek_element_set_property;
gobject_class->get_property = eek_element_get_property; gobject_class->get_property = eek_element_get_property;
@ -281,6 +183,56 @@ eek_element_class_init (EekElementClass *klass)
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
PROP_BOUNDS, PROP_BOUNDS,
pspec); pspec);
/**
* EekElement:group:
*
* The group value of the symbol index of #EekElement.
*/
pspec = g_param_spec_int ("group",
"Group",
"Group value of the symbol index",
-1, G_MAXINT, -1,
G_PARAM_READWRITE);
g_object_class_install_property (gobject_class,
PROP_GROUP,
pspec);
/**
* EekElement:level:
*
* The level value of the symbol index of #EekElement.
*/
pspec = g_param_spec_int ("level",
"Level",
"Level value of the symbol index",
-1, G_MAXINT, -1,
G_PARAM_READWRITE);
g_object_class_install_property (gobject_class,
PROP_LEVEL,
pspec);
/**
* EekElement::symbol-index-changed:
* @element: an #EekElement
* @group: row index of the symbol matrix of keys on @element
* @level: column index of the symbol matrix of keys on @element
*
* The ::symbol-index-changed signal is emitted each time the
* global configuration of group/level index changes.
*/
signals[SYMBOL_INDEX_CHANGED] =
g_signal_new (I_("symbol-index-changed"),
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(EekElementClass, symbol_index_changed),
NULL,
NULL,
_eek_marshal_VOID__INT_INT,
G_TYPE_NONE,
2,
G_TYPE_INT,
G_TYPE_INT);
} }
static void static void
@ -289,14 +241,14 @@ eek_element_init (EekElement *self)
EekElementPrivate *priv; EekElementPrivate *priv;
priv = self->priv = EEK_ELEMENT_GET_PRIVATE(self); priv = self->priv = EEK_ELEMENT_GET_PRIVATE(self);
priv->name = NULL; priv->group = -1;
memset (&priv->bounds, 0, sizeof priv->bounds); priv->level = -1;
} }
/** /**
* eek_element_set_parent: * eek_element_set_parent:
* @element: an #EekElement * @element: an #EekElement
* @parent: an #EekElement * @parent: (allow-none): an #EekElement or %NULL
* *
* Set the parent of @element to @parent. * Set the parent of @element to @parent.
*/ */
@ -305,8 +257,21 @@ eek_element_set_parent (EekElement *element,
EekElement *parent) EekElement *parent)
{ {
g_return_if_fail (EEK_IS_ELEMENT(element)); g_return_if_fail (EEK_IS_ELEMENT(element));
g_return_if_fail (EEK_IS_ELEMENT(parent)); g_return_if_fail (parent == NULL || EEK_IS_ELEMENT(parent));
EEK_ELEMENT_GET_CLASS(element)->set_parent (element, parent);
if (element->priv->parent == parent)
return;
if (element->priv->parent != NULL) {
/* release self-reference acquired when setting parent */
g_object_unref (element);
}
if (parent != NULL) {
g_object_ref (element);
}
element->priv->parent = parent;
} }
/** /**
@ -320,7 +285,7 @@ EekElement *
eek_element_get_parent (EekElement *element) eek_element_get_parent (EekElement *element)
{ {
g_return_val_if_fail (EEK_IS_ELEMENT(element), NULL); g_return_val_if_fail (EEK_IS_ELEMENT(element), NULL);
return EEK_ELEMENT_GET_CLASS(element)->get_parent (element); return element->priv->parent;
} }
/** /**
@ -335,7 +300,8 @@ eek_element_set_name (EekElement *element,
const gchar *name) const gchar *name)
{ {
g_return_if_fail (EEK_IS_ELEMENT(element)); g_return_if_fail (EEK_IS_ELEMENT(element));
EEK_ELEMENT_GET_CLASS(element)->set_name (element, name); g_free (element->priv->name);
element->priv->name = g_strdup (name);
} }
/** /**
@ -345,11 +311,11 @@ eek_element_set_name (EekElement *element,
* Get the name of @element. * Get the name of @element.
* Returns: the name of @element or NULL when the name is not set * Returns: the name of @element or NULL when the name is not set
*/ */
G_CONST_RETURN gchar * const gchar *
eek_element_get_name (EekElement *element) eek_element_get_name (EekElement *element)
{ {
g_return_val_if_fail (EEK_IS_ELEMENT(element), NULL); g_return_val_if_fail (EEK_IS_ELEMENT(element), NULL);
return EEK_ELEMENT_GET_CLASS(element)->get_name (element); return element->priv->name;
} }
/** /**
@ -366,13 +332,13 @@ eek_element_set_bounds (EekElement *element,
EekBounds *bounds) EekBounds *bounds)
{ {
g_return_if_fail (EEK_IS_ELEMENT(element)); g_return_if_fail (EEK_IS_ELEMENT(element));
EEK_ELEMENT_GET_CLASS(element)->set_bounds (element, bounds); memcpy (&element->priv->bounds, bounds, sizeof(EekBounds));
} }
/** /**
* eek_element_get_bounds: * eek_element_get_bounds:
* @element: an #EekElement * @element: an #EekElement
* @bounds: pointer where bounding box of @element will be stored * @bounds: (out): pointer where bounding box of @element will be stored
* *
* Get the bounding box of @element. Note that if @element has * Get the bounding box of @element. Note that if @element has
* parent, position of @bounds are relative to the parent. To obtain * parent, position of @bounds are relative to the parent. To obtain
@ -383,7 +349,8 @@ eek_element_get_bounds (EekElement *element,
EekBounds *bounds) EekBounds *bounds)
{ {
g_return_if_fail (EEK_IS_ELEMENT(element)); g_return_if_fail (EEK_IS_ELEMENT(element));
EEK_ELEMENT_GET_CLASS(element)->get_bounds (element, bounds); g_return_if_fail (bounds != NULL);
memcpy (bounds, &element->priv->bounds, sizeof(EekBounds));
} }
/** /**
@ -452,3 +419,132 @@ eek_element_set_size (EekElement *element,
bounds.height = height; bounds.height = height;
eek_element_set_bounds (element, &bounds); eek_element_set_bounds (element, &bounds);
} }
/**
* eek_element_set_symbol_index:
* @element: an #EekElement
* @group: row index of the symbol matrix
* @level: column index of the symbol matrix
*
* Set the default index of the symbol matrices of @element. The
* setting affects the child, if child does not have the index set, as
* well as this element. To unset, pass -1 as group/level.
*/
void
eek_element_set_symbol_index (EekElement *element,
gint group,
gint level)
{
gboolean emit_signal;
g_return_if_fail (EEK_IS_ELEMENT(element));
emit_signal = group != eek_element_get_group (element) ||
level != eek_element_get_level (element);
eek_element_set_group (element, group);
eek_element_set_level (element, level);
if (emit_signal)
g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0, group, level);
}
/**
* eek_element_get_symbol_index:
* @element: an #EekElement
* @group: a pointer where the group value of the symbol index will be stored
* @level: a pointer where the level value of the symbol index will be stored
*
* Get the default index of the symbol matrices of @element.
* If the index is not set, -1 will be returned.
*/
void
eek_element_get_symbol_index (EekElement *element,
gint *group,
gint *level)
{
g_return_if_fail (EEK_IS_ELEMENT(element));
g_return_if_fail (group != NULL || level != NULL);
if (group != NULL)
*group = eek_element_get_group (element);
if (level != NULL)
*level = eek_element_get_level (element);
}
/**
* eek_element_set_group:
* @element: an #EekElement
* @group: group index of @element
*
* Set the group value of the default symbol index of @element. To
* unset, pass -1 as @group.
*
* See also: eek_element_set_symbol_index()
*/
void
eek_element_set_group (EekElement *element,
gint group)
{
g_return_if_fail (EEK_IS_ELEMENT(element));
if (element->priv->group != group) {
element->priv->group = group;
g_object_notify (G_OBJECT(element), "group");
g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0,
group, element->priv->level);
}
}
/**
* eek_element_set_level:
* @element: an #EekElement
* @level: level index of @element
*
* Set the level value of the default symbol index of @element. To
* unset, pass -1 as @level.
*
* See also: eek_element_set_symbol_index()
*/
void
eek_element_set_level (EekElement *element,
gint level)
{
g_return_if_fail (EEK_IS_ELEMENT(element));
if (element->priv->level != level) {
element->priv->level = level;
g_object_notify (G_OBJECT(element), "level");
g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0,
element->priv->group, level);
}
}
/**
* eek_element_get_group:
* @element: an #EekElement
*
* Return the group value of the default symbol index of @element.
* If the value is not set, -1 will be returned.
*
* See also: eek_element_get_symbol_index()
*/
gint
eek_element_get_group (EekElement *element)
{
g_return_val_if_fail (EEK_IS_ELEMENT(element), -1);
return element->priv->group;
}
/**
* eek_element_get_level:
* @element: an #EekElement
*
* Return the level value of the default symbol index of @element.
* If the value is not set, -1 will be returned.
*
* See also: eek_element_get_symbol_index()
*/
gint
eek_element_get_level (EekElement *element)
{
g_return_val_if_fail (EEK_IS_ELEMENT(element), -1);
return element->priv->level;
}

View File

@ -17,6 +17,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA * 02110-1301 USA
*/ */
#if !defined(__EEK_H_INSIDE__) && !defined(EEK_COMPILATION)
#error "Only <eek/eek.h> can be included directly."
#endif
#ifndef EEK_ELEMENT_H #ifndef EEK_ELEMENT_H
#define EEK_ELEMENT_H 1 #define EEK_ELEMENT_H 1
@ -46,51 +51,52 @@ struct _EekElementClass
{ {
/*< private >*/ /*< private >*/
GObjectClass parent_class; GObjectClass parent_class;
void (* set_parent) (EekElement *self,
EekElement *parent);
EekElement *(* get_parent) (EekElement *self);
void (* set_name) (EekElement *self,
const gchar *name);
G_CONST_RETURN gchar *(* get_name) (EekElement *self); /* signals */
void (* symbol_index_changed) (EekElement *self,
void (* set_bounds) (EekElement *self, gint group,
EekBounds *bounds); gint level);
void (* get_bounds) (EekElement *self,
EekBounds *bounds);
/*< private >*/
/* padding */
gpointer pdummy[24];
}; };
GType eek_element_get_type (void) G_GNUC_CONST; GType eek_element_get_type (void) G_GNUC_CONST;
void eek_element_set_parent (EekElement *element, void eek_element_set_parent (EekElement *element,
EekElement *parent); EekElement *parent);
EekElement *eek_element_get_parent (EekElement *element); EekElement *eek_element_get_parent (EekElement *element);
void eek_element_set_name (EekElement *element, void eek_element_set_name (EekElement *element,
const gchar *name); const gchar *name);
G_CONST_RETURN gchar *eek_element_get_name (EekElement *element); const gchar *eek_element_get_name (EekElement *element);
void eek_element_set_bounds (EekElement *element, void eek_element_set_bounds (EekElement *element,
EekBounds *bounds); EekBounds *bounds);
void eek_element_get_bounds (EekElement *element, void eek_element_get_bounds (EekElement *element,
EekBounds *bounds); EekBounds *bounds);
void eek_element_set_position (EekElement *element, void eek_element_set_position (EekElement *element,
gdouble x, gdouble x,
gdouble y); gdouble y);
void eek_element_set_size (EekElement *element, void eek_element_set_size (EekElement *element,
gdouble width, gdouble width,
gdouble height); gdouble height);
void eek_element_get_absolute_position (EekElement *element, void eek_element_get_absolute_position (EekElement *element,
gdouble *x, gdouble *x,
gdouble *y); gdouble *y);
void eek_element_set_symbol_index (EekElement *element,
gint group,
gint level);
void eek_element_get_symbol_index (EekElement *element,
gint *group,
gint *level);
void eek_element_set_group (EekElement *element,
gint group);
void eek_element_set_level (EekElement *element,
gint level);
gint eek_element_get_group (EekElement *element);
gint eek_element_get_level (EekElement *element);
G_END_DECLS G_END_DECLS
#endif /* EEK_ELEMENT_H */ #endif /* EEK_ELEMENT_H */

View File

@ -0,0 +1,36 @@
/*** BEGIN file-header ***/
#include "eek.h"
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@filename@" */
/*** END file-production ***/
/*** BEGIN value-header ***/
GType
@enum_name@_get_type (void)
{
static volatile gsize g_define_type_id__volatile = 0;
if (g_once_init_enter (&g_define_type_id__volatile))
{
static const G@Type@Value values[] = {
/*** END value-header ***/
/*** BEGIN value-production ***/
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
GType g_define_type_id =
g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
return g_define_type_id__volatile;
}
/*** END value-tail ***/

Some files were not shown because too many files have changed in this diff Show More