Compare commits
	
		
			199 Commits
		
	
	
		
			eekboard-0
			...
			eekboard-1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5099f7db88 | |||
| ab8cd246bf | |||
| 528981f913 | |||
| 3fd5eb789c | |||
| 9c09777c09 | |||
| 7298d320e0 | |||
| 39154fa5ad | |||
| 6db99bee25 | |||
| ee0505c100 | |||
| 1943749cb6 | |||
| 5763ed20bf | |||
| 7eead1c1ff | |||
| 048e08b59a | |||
| 523bd9b788 | |||
| f442733b33 | |||
| a6fe5bd859 | |||
| 32a1d23c2a | |||
| 06644945cf | |||
| 1774a2c23e | |||
| 668b974dd7 | |||
| 4427f81dd9 | |||
| 9490428535 | |||
| 8d70eedc5f | |||
| 74550d2424 | |||
| 148d8e7524 | |||
| aca9a4dcb6 | |||
| 953c35bdac | |||
| 596b33f149 | |||
| ef3ea618d2 | |||
| 362b210a31 | |||
| 15f7b0ecff | |||
| f72e9f5293 | |||
| 0d93f31eea | |||
| f1af125d24 | |||
| a6c08bee7b | |||
| c2d2c8660f | |||
| db3538af64 | |||
| 04ac7fb19e | |||
| 53e853fbc9 | |||
| 747ce4e00b | |||
| 5f6eb76d7f | |||
| 3777620574 | |||
| b02ae1b7cc | |||
| 88816018d8 | |||
| 06e7e2afac | |||
| ce2c4ed0f4 | |||
| 099ca60975 | |||
| 43ab623fac | |||
| bcc9a8fd60 | |||
| 6fb96ea5d6 | |||
| 2f64b3ee13 | |||
| d4a78e5dc7 | |||
| 71033f5739 | |||
| 17444509fe | |||
| 42baa22cdc | |||
| f07de8cd3b | |||
| 0772898b83 | |||
| 828b2d66d1 | |||
| 8ab4fb7946 | |||
| e91a059f0f | |||
| 093d83ed89 | |||
| 5c0381e4f0 | |||
| 657c6f8e35 | |||
| 4bb984daf3 | |||
| e46a3f89ed | |||
| 6843cd62dd | |||
| 52ffc77fdd | |||
| 158542ec0a | |||
| 360da8a3c9 | |||
| 65d1186317 | |||
| b7b4d68a9a | |||
| 952f70b433 | |||
| 74de8e5056 | |||
| 9d88c1c5da | |||
| a6bde78168 | |||
| bb85885e5d | |||
| dd085be73d | |||
| f576310cdf | |||
| 70e1c98987 | |||
| 4f03aa82fe | |||
| 383c93a415 | |||
| 860fbe8ede | |||
| 39900bd987 | |||
| 5c09147551 | |||
| f0929a9bd8 | |||
| 786496b3c4 | |||
| e5f5c8273e | |||
| ca250699ef | |||
| 7f41af3ee7 | |||
| 260dc3fddd | |||
| 052c40cc26 | |||
| 1b5bab9c18 | |||
| 6a7b256676 | |||
| 0e135129e2 | |||
| 7af6bf13ed | |||
| 91ed49b65a | |||
| 84f614528f | |||
| 7c0e29fc86 | |||
| 1f9e4bd576 | |||
| fc0a577dfb | |||
| 69d16ddce5 | |||
| 984813b154 | |||
| b6beeedc26 | |||
| 55f7a0d0dc | |||
| 7919cc191e | |||
| db0c5088b7 | |||
| cc4b9a6b45 | |||
| f4e33a4ad4 | |||
| 0e0fe9ed51 | |||
| 20c1f8cbe3 | |||
| f2ee3b4966 | |||
| 57a072746e | |||
| 497f21a5bd | |||
| 099c242ad7 | |||
| 109eff420c | |||
| 0896096a70 | |||
| 2d2aea009e | |||
| 0425b4e094 | |||
| 15c0a9dadf | |||
| e09c563cd8 | |||
| 218a4a50f6 | |||
| 9ab228e8f0 | |||
| b30db118f2 | |||
| cccb4f45cd | |||
| 54c9d6e35d | |||
| da7d11e387 | |||
| d9073183a7 | |||
| 78480f7577 | |||
| 1dbf0d70da | |||
| 44ee2a9913 | |||
| a3a5a51f74 | |||
| 1ae4426ec8 | |||
| 270760bd16 | |||
| 5bb20e44fb | |||
| 26a2ab725e | |||
| 9d73b89a4e | |||
| 606f335496 | |||
| fe9a02e514 | |||
| f76a835e33 | |||
| e199add701 | |||
| a744096dd7 | |||
| 51a18849c0 | |||
| bd303ef10b | |||
| 1e9ec77b65 | |||
| 4b409de5ba | |||
| 66cea3a0b5 | |||
| 0add617834 | |||
| 70b0d95d9b | |||
| cae9c89b64 | |||
| a9d9274e78 | |||
| 2211fb6b1e | |||
| 34569679f0 | |||
| 816e1f0d51 | |||
| de62d74ac5 | |||
| d71c79f268 | |||
| ee948cb2ae | |||
| ba59a850d1 | |||
| b7999842a9 | |||
| 2dd0ae47db | |||
| 926d9346e1 | |||
| ac8764b9b7 | |||
| 4cf3f24fbc | |||
| 0691766a31 | |||
| 77c00a10da | |||
| 8c407ae482 | |||
| 8d2d612547 | |||
| 80dc26b7f4 | |||
| fbe7b9ec1a | |||
| 048fccd6e0 | |||
| 638d41e0b6 | |||
| 4271eb6b3e | |||
| d25bfd8ba7 | |||
| 0739fbf464 | |||
| d1b38f8eb2 | |||
| e6d17fa4cb | |||
| d62b8b49a2 | |||
| 149dd7dc8b | |||
| 0177f96795 | |||
| ec56773dc6 | |||
| 881bf34ec4 | |||
| 6787308061 | |||
| 0cd01bf165 | |||
| 132ae3899f | |||
| 72f84fa4ef | |||
| 16d81f3f71 | |||
| 42a0ea148b | |||
| 2021311a4e | |||
| b64e91dffa | |||
| 57bb7030fb | |||
| 425fe7829b | |||
| aa88315924 | |||
| 39a59fb049 | |||
| e0993a5e55 | |||
| 4eb59ba7ed | |||
| cc9fb31e61 | |||
| c44ebecfb2 | |||
| f60e1d763e | |||
| 5c3cb477ef | |||
| 5fd4005967 | 
							
								
								
									
										16
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -4,6 +4,7 @@
 | 
				
			|||||||
*.o
 | 
					*.o
 | 
				
			||||||
*.so
 | 
					*.so
 | 
				
			||||||
*~
 | 
					*~
 | 
				
			||||||
 | 
					*.pyc
 | 
				
			||||||
Makefile
 | 
					Makefile
 | 
				
			||||||
Makefile.in
 | 
					Makefile.in
 | 
				
			||||||
.deps
 | 
					.deps
 | 
				
			||||||
@ -33,6 +34,7 @@ gtk-doc.make
 | 
				
			|||||||
eek/eek-special-keysym-entries.h
 | 
					eek/eek-special-keysym-entries.h
 | 
				
			||||||
eek/eek-unicode-keysym-entries.h
 | 
					eek/eek-unicode-keysym-entries.h
 | 
				
			||||||
eek/eek-xkeysym-keysym-entries.h
 | 
					eek/eek-xkeysym-keysym-entries.h
 | 
				
			||||||
 | 
					eek/eek-enumtypes.[ch]
 | 
				
			||||||
eek/eek-marshalers.[ch]
 | 
					eek/eek-marshalers.[ch]
 | 
				
			||||||
eek/*.pc
 | 
					eek/*.pc
 | 
				
			||||||
eek/*.gir
 | 
					eek/*.gir
 | 
				
			||||||
@ -40,15 +42,15 @@ eek/*.typelib
 | 
				
			|||||||
eekboard/*.pc
 | 
					eekboard/*.pc
 | 
				
			||||||
eekboard/*.gir
 | 
					eekboard/*.gir
 | 
				
			||||||
eekboard/*.typelib
 | 
					eekboard/*.typelib
 | 
				
			||||||
 | 
					eekboard/eekboard-marshalers.[ch]
 | 
				
			||||||
tests/eek-simple-test
 | 
					tests/eek-simple-test
 | 
				
			||||||
tests/eek-xkb-test
 | 
					tests/eek-xkb-test
 | 
				
			||||||
tests/eek-xml-test
 | 
					tests/eek-xml-test
 | 
				
			||||||
 | 
					src/eekboard
 | 
				
			||||||
src/eekboard-server
 | 
					src/eekboard-server
 | 
				
			||||||
src/eekboard-client
 | 
					 | 
				
			||||||
src/eekboard-system-client
 | 
					 | 
				
			||||||
src/eekboard-xml
 | 
					 | 
				
			||||||
docs/reference/eek/*.stamp
 | 
					docs/reference/eek/*.stamp
 | 
				
			||||||
docs/reference/eek/*.txt
 | 
					docs/reference/eek/*.txt
 | 
				
			||||||
 | 
					docs/reference/eek/eek.types
 | 
				
			||||||
!/docs/reference/eek/eek-sections.txt
 | 
					!/docs/reference/eek/eek-sections.txt
 | 
				
			||||||
docs/reference/eek/xml
 | 
					docs/reference/eek/xml
 | 
				
			||||||
docs/reference/eek/html
 | 
					docs/reference/eek/html
 | 
				
			||||||
@ -71,4 +73,12 @@ po/*.gmo
 | 
				
			|||||||
po/Makefile.in.in
 | 
					po/Makefile.in.in
 | 
				
			||||||
po/POTFILES
 | 
					po/POTFILES
 | 
				
			||||||
po/stamp-it
 | 
					po/stamp-it
 | 
				
			||||||
 | 
					po/.intltool-merge-cache
 | 
				
			||||||
bindings/vala/*.vapi
 | 
					bindings/vala/*.vapi
 | 
				
			||||||
 | 
					py-compile
 | 
				
			||||||
 | 
					data/org.fedorahosted.eekboard.gschema.xml
 | 
				
			||||||
 | 
					data/org.fedorahosted.eekboard.gschema.valid
 | 
				
			||||||
 | 
					data/eekboard-server.service
 | 
				
			||||||
 | 
					data/*.desktop
 | 
				
			||||||
 | 
					examples/eekxml/eekxml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -17,5 +17,5 @@
 | 
				
			|||||||
# 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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								README
									
									
									
									
									
								
							@ -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, libcroco
 | 
					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
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -16,12 +16,4 @@
 | 
				
			|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
					# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
				
			||||||
# 02110-1301 USA
 | 
					# 02110-1301 USA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SUBDIRS =
 | 
					SUBDIRS = vala
 | 
				
			||||||
 | 
					 | 
				
			||||||
if ENABLE_PYTHON
 | 
					 | 
				
			||||||
SUBDIRS += python
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if ENABLE_VALA
 | 
					 | 
				
			||||||
SUBDIRS += vala
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program 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
 | 
					 | 
				
			||||||
# General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with this program.  If not, see
 | 
					 | 
				
			||||||
# <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SUBDIRS = eekboard
 | 
					 | 
				
			||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program 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
 | 
					 | 
				
			||||||
# General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with this program.  If not, see
 | 
					 | 
				
			||||||
# <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pkgpython_PYTHON = \
 | 
					 | 
				
			||||||
	__init__.py \
 | 
					 | 
				
			||||||
	eekboard.py \
 | 
					 | 
				
			||||||
	context.py
 | 
					 | 
				
			||||||
@ -1,63 +0,0 @@
 | 
				
			|||||||
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program 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
 | 
					 | 
				
			||||||
# General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with this program.  If not, see
 | 
					 | 
				
			||||||
# <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from gi.repository import Eek, EekXkl, Gio
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from eekboard import Eekboard
 | 
					 | 
				
			||||||
from context import Context
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Keyboard = Eek.Keyboard
 | 
					 | 
				
			||||||
Section = Eek.Section
 | 
					 | 
				
			||||||
Key = Eek.Key
 | 
					 | 
				
			||||||
Symbol = Eek.Symbol
 | 
					 | 
				
			||||||
Keysym = Eek.Keysym
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
MODIFIER_BEHAVIOR_NONE, \
 | 
					 | 
				
			||||||
MODIFIER_BEHAVIOR_LOCK, \
 | 
					 | 
				
			||||||
MODIFIER_BEHAVIOR_LATCH = \
 | 
					 | 
				
			||||||
(Eek.ModifierBehavior.NONE,
 | 
					 | 
				
			||||||
 Eek.ModifierBehavior.LOCK,
 | 
					 | 
				
			||||||
 Eek.ModifierBehavior.LATCH)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CSW = 640
 | 
					 | 
				
			||||||
CSH = 480
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def XmlKeyboard(path, modifier_behavior=MODIFIER_BEHAVIOR_NONE):
 | 
					 | 
				
			||||||
    _file = Gio.file_new_for_path(path)
 | 
					 | 
				
			||||||
    layout = Eek.XmlLayout.new(_file.read())
 | 
					 | 
				
			||||||
    keyboard = Eek.Keyboard.new(layout, CSW, CSH)
 | 
					 | 
				
			||||||
    keyboard.set_modifier_behavior(modifier_behavior)
 | 
					 | 
				
			||||||
    return keyboard
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def XklKeyboard(modifier_behavior=MODIFIER_BEHAVIOR_NONE):
 | 
					 | 
				
			||||||
    layout = EekXkl.Layout.new()
 | 
					 | 
				
			||||||
    keyboard = Eek.Keyboard.new(layout, CSW, CSH)
 | 
					 | 
				
			||||||
    keyboard.set_modifier_behavior(modifier_behavior)
 | 
					 | 
				
			||||||
    return keyboard
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__all__ = ['Eekboard',
 | 
					 | 
				
			||||||
           'Context',
 | 
					 | 
				
			||||||
           'Keyboard',
 | 
					 | 
				
			||||||
           'Section',
 | 
					 | 
				
			||||||
           'Key',
 | 
					 | 
				
			||||||
           'Symbol',
 | 
					 | 
				
			||||||
           'Keysym',
 | 
					 | 
				
			||||||
           'MODIFIER_BEHAVIOR_NONE',
 | 
					 | 
				
			||||||
           'MODIFIER_BEHAVIOR_LOCK',
 | 
					 | 
				
			||||||
           'MODIFIER_BEHAVIOR_LATCH',
 | 
					 | 
				
			||||||
           'XmlKeyboard',
 | 
					 | 
				
			||||||
           'XklKeyboard']
 | 
					 | 
				
			||||||
@ -1,79 +0,0 @@
 | 
				
			|||||||
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program 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
 | 
					 | 
				
			||||||
# General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with this program.  If not, see
 | 
					 | 
				
			||||||
# <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from gi.repository import Eekboard
 | 
					 | 
				
			||||||
import gobject
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Context(gobject.GObject):
 | 
					 | 
				
			||||||
    __gtype_name__ = "PYEekboardContext"
 | 
					 | 
				
			||||||
    __gsignals__ = {
 | 
					 | 
				
			||||||
        'enabled': (
 | 
					 | 
				
			||||||
            gobject.SIGNAL_RUN_LAST,
 | 
					 | 
				
			||||||
            gobject.TYPE_NONE,
 | 
					 | 
				
			||||||
            ()),
 | 
					 | 
				
			||||||
        'disabled': (
 | 
					 | 
				
			||||||
            gobject.SIGNAL_RUN_LAST,
 | 
					 | 
				
			||||||
            gobject.TYPE_NONE,
 | 
					 | 
				
			||||||
            ()),
 | 
					 | 
				
			||||||
        'key-pressed': (
 | 
					 | 
				
			||||||
            gobject.SIGNAL_RUN_LAST,
 | 
					 | 
				
			||||||
            gobject.TYPE_NONE,
 | 
					 | 
				
			||||||
            (gobject.TYPE_UINT,)),
 | 
					 | 
				
			||||||
        'key-released': (
 | 
					 | 
				
			||||||
            gobject.SIGNAL_RUN_LAST,
 | 
					 | 
				
			||||||
            gobject.TYPE_NONE,
 | 
					 | 
				
			||||||
            (gobject.TYPE_UINT,))
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __init__(self, giobject):
 | 
					 | 
				
			||||||
        super(Context, self).__init__()
 | 
					 | 
				
			||||||
        import sys
 | 
					 | 
				
			||||||
        self.__giobject = giobject
 | 
					 | 
				
			||||||
        self.__giobject.connect('enabled', lambda *args: self.emit('enabled'))
 | 
					 | 
				
			||||||
        self.__giobject.connect('disabled', lambda *args: self.emit('disabled'))
 | 
					 | 
				
			||||||
        self.__giobject.connect('key-pressed', lambda *args: self.emit('key-pressed', args[1]))
 | 
					 | 
				
			||||||
        self.__giobject.connect('key-released', lambda *args: self.emit('key-released', args[1]))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_giobject(self):
 | 
					 | 
				
			||||||
        return self.__giobject
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def add_keyboard(self, keyboard):
 | 
					 | 
				
			||||||
        return self.__giobject.add_keyboard(keyboard, None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def remove_keyboard(self, keyboard_id):
 | 
					 | 
				
			||||||
        return self.__giobject.remove_keyboard(keyboard_id, None)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
    def set_keyboard(self, keyboard_id):
 | 
					 | 
				
			||||||
        self.__giobject.set_keyboard(keyboard_id, None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def show_keyboard(self):
 | 
					 | 
				
			||||||
        self.__giobject.show_keyboard(None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def hide_keyboard(self):
 | 
					 | 
				
			||||||
        self.__giobject.hide_keyboard(None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def set_group(self, group):
 | 
					 | 
				
			||||||
        self.__giobject.set_group(group, None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def press_key(self, keycode):
 | 
					 | 
				
			||||||
        self.__giobject.press_key(keycode, None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def release_key(self, keycode):
 | 
					 | 
				
			||||||
        self.__giobject.release_key(keycode, None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def is_enabled(self):
 | 
					 | 
				
			||||||
        return self.__giobject.is_enabled()
 | 
					 | 
				
			||||||
@ -1,42 +0,0 @@
 | 
				
			|||||||
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program 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
 | 
					 | 
				
			||||||
# General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with this program.  If not, see
 | 
					 | 
				
			||||||
# <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from gi.repository import Gio
 | 
					 | 
				
			||||||
import gi.repository
 | 
					 | 
				
			||||||
import gobject
 | 
					 | 
				
			||||||
from context import Context
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Eekboard(gobject.GObject):
 | 
					 | 
				
			||||||
    __gtype_name__ = "PYEekboardEekboard"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def __init__(self):
 | 
					 | 
				
			||||||
        super(Eekboard, self).__init__()
 | 
					 | 
				
			||||||
        self.__connection = Gio.bus_get_sync(Gio.BusType.SESSION, None)
 | 
					 | 
				
			||||||
        self.__eekboard = gi.repository.Eekboard.Eekboard.new(self.__connection, None);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def create_context(self, client_name):
 | 
					 | 
				
			||||||
        context = self.__eekboard.create_context(client_name, None)
 | 
					 | 
				
			||||||
        return Context(context)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def push_context(self, context):
 | 
					 | 
				
			||||||
        self.__eekboard.push_context(context.get_giobject(), None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def pop_context(self):
 | 
					 | 
				
			||||||
        self.__eekboard.pop_context(None)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def destroy_context(self, context):
 | 
					 | 
				
			||||||
        self.__eekboard.destroy_context(context.get_giobject(), None)
 | 
					 | 
				
			||||||
@ -16,35 +16,68 @@
 | 
				
			|||||||
# 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
 | 
				
			||||||
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
 | 
						eek-xkl-$(EEK_API_VERSION).vapi		\
 | 
				
			||||||
MAINTAINERCLEANFILES = $(dist_vapi_DATA)
 | 
						eek-xkl-$(EEK_API_VERSION).deps		\
 | 
				
			||||||
 | 
						$(NULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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	\
 | 
				
			||||||
 | 
						EekXkl-$(EEK_API_VERSION).metadata	\
 | 
				
			||||||
 | 
						$(NULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eek-clutter-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi
 | 
					maintainer-clean-local:
 | 
				
			||||||
	vapigen --vapidir=$(builddir) --library eek-clutter-$(EEK_API_VERSION) \
 | 
						rm -f *.vapi
 | 
				
			||||||
		--pkg eek-$(EEK_API_VERSION) --pkg clutter-1.0 \
 | 
					 | 
				
			||||||
		eek-clutter-$(EEK_API_VERSION)/eek-clutter-$(EEK_API_VERSION).gi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
eek-gtk-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi
 | 
					eek_vapi_deps =						\
 | 
				
			||||||
	vapigen --vapidir=$(builddir) --library eek-gtk-$(EEK_API_VERSION) \
 | 
						$(srcdir)/Eek-$(EEK_API_VERSION).metadata	\
 | 
				
			||||||
		--pkg eek-$(EEK_API_VERSION) --pkg gtk+-2.0 \
 | 
						|						\
 | 
				
			||||||
		eek-gtk-$(EEK_API_VERSION)/eek-gtk-$(EEK_API_VERSION).gi
 | 
						$(top_srcdir)/eek/Eek-$(EEK_API_VERSION).gir	\
 | 
				
			||||||
 | 
						$(NULL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eek-xkb-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi
 | 
					eek-$(EEK_API_VERSION).vapi: $(eek_vapi_deps)
 | 
				
			||||||
	vapigen --vapidir=$(builddir) --library eek-xkb-$(EEK_API_VERSION) \
 | 
						$(VAPIGEN_V)$(VAPIGEN)					\
 | 
				
			||||||
		--pkg eek-$(EEK_API_VERSION) \
 | 
							--library eek-$(EEK_API_VERSION)		\
 | 
				
			||||||
		eek-xkb-$(EEK_API_VERSION)/eek-xkb-$(EEK_API_VERSION).gi
 | 
							--pkg gio-2.0					\
 | 
				
			||||||
 | 
							--metadatadir=$(srcdir)				\
 | 
				
			||||||
 | 
							$(top_srcdir)/eek/Eek-$(EEK_API_VERSION).gir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eek-xkl-$(EEK_API_VERSION).vapi: eek-xkb-$(EEK_API_VERSION).vapi
 | 
					eek_gtk_vapi_deps =					\
 | 
				
			||||||
	vapigen --vapidir=$(builddir) --library eek-xkl-$(EEK_API_VERSION) \
 | 
						$(srcdir)/EekGtk-$(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_srcdir)/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 gtk+-3.0					\
 | 
				
			||||||
 | 
							--metadatadir=$(srcdir)				\
 | 
				
			||||||
 | 
							$(top_srcdir)/eek/EekGtk-$(EEK_API_VERSION).gir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eek_xkl_vapi_deps =					\
 | 
				
			||||||
 | 
						$(srcdir)/EekXkl-$(EEK_API_VERSION).metadata	\
 | 
				
			||||||
 | 
						|						\
 | 
				
			||||||
 | 
						$(top_srcdir)/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)			\
 | 
				
			||||||
 | 
							--metadatadir=$(srcdir)				\
 | 
				
			||||||
 | 
							$(top_srcdir)/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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								bindings/vala/eek-0.90.deps
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bindings/vala/eek-0.90.deps
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					gio-2.0
 | 
				
			||||||
@ -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
 | 
					 | 
				
			||||||
@ -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>
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
Eek
 | 
					 | 
				
			||||||
@ -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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -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>
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
EekClutter cheader_filename="eek/eek-clutter.h"
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
EekClutter
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								bindings/vala/eek-gtk-0.90.deps
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bindings/vala/eek-gtk-0.90.deps
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					eek-0.90
 | 
				
			||||||
@ -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
 | 
					 | 
				
			||||||
@ -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>
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
EekGtk
 | 
					 | 
				
			||||||
@ -1,2 +0,0 @@
 | 
				
			|||||||
include/eek-0.1/eek/eek-xkb-layout.h
 | 
					 | 
				
			||||||
lib/libeek-xkb.so
 | 
					 | 
				
			||||||
@ -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>
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
EekXkb cheader_filename="eek/eek-xkb.h"
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
EekXkb
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								bindings/vala/eek-xkl-0.90.deps
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								bindings/vala/eek-xkl-0.90.deps
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					eek-0.90
 | 
				
			||||||
@ -1,3 +0,0 @@
 | 
				
			|||||||
include/eek-0.1/eek/eek-xkl-layout.h
 | 
					 | 
				
			||||||
lib/libeek-xkl.so
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -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>
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
EekXkl
 | 
					 | 
				
			||||||
							
								
								
									
										241
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										241
									
								
								configure.ac
									
									
									
									
									
								
							@ -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.4], [ueno@unixuser.org])
 | 
					AC_INIT([eekboard], [1.0.6], [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,137 +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], ,
 | 
					PKG_CHECK_MODULES([LIBCROCO], [libcroco-0.6], ,
 | 
				
			||||||
  [AC_MSG_ERROR([libcroco not found])])
 | 
					  [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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dnl Python language binding
 | 
					focus_listeners="ibus"
 | 
				
			||||||
AC_MSG_CHECKING([whether you enable Python language support])
 | 
					keystroke_listeners=""
 | 
				
			||||||
AC_ARG_ENABLE(python,
 | 
					 | 
				
			||||||
              AS_HELP_STRING([--enable-python=no/yes],
 | 
					 | 
				
			||||||
                             [Enable Python language binding default=yes]),,
 | 
					 | 
				
			||||||
              enable_python=yes)
 | 
					 | 
				
			||||||
AC_MSG_RESULT($enable_python)
 | 
					 | 
				
			||||||
AM_CONDITIONAL(ENABLE_PYTHON, [test x$enable_python = xyes])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test x"$enable_python" = x"yes"; then
 | 
					dnl use AT-SPI 2 to capture focus/keystroke events
 | 
				
			||||||
    # check python
 | 
					AC_MSG_CHECKING([whether you enable AT-SPI 2 event handling])
 | 
				
			||||||
    AM_PATH_PYTHON([2.5])
 | 
					AC_ARG_ENABLE(atspi,
 | 
				
			||||||
    AC_PATH_PROG(PYTHON_CONFIG, python$PYTHON_VERSION-config)
 | 
					              AS_HELP_STRING([--enable-atspi=no/yes],
 | 
				
			||||||
    if test x"$PYTHON_CONFIG" = x""; then
 | 
					                             [Enable AT-SPI 2 event handling default=yes]),
 | 
				
			||||||
        AC_PATH_PROG(PYTHON_CONFIG, python-config)
 | 
					              enable_atspi=$enableval,
 | 
				
			||||||
    fi
 | 
					              enable_atspi=yes)
 | 
				
			||||||
    if test x"$PYTHON_CONFIG" != x""; then
 | 
					
 | 
				
			||||||
        PYTHON_CFLAGS=`$PYTHON_CONFIG --includes`
 | 
					if test x$enable_atspi = xyes; then
 | 
				
			||||||
        PYTHON_LIBS=`$PYTHON_CONFIG --libs`
 | 
					  PKG_CHECK_MODULES([ATSPI2], [atspi-2 dbus-glib-1], , enable_atspi=no)
 | 
				
			||||||
    else
 | 
					  if test x$enable_atspi = xyes; then
 | 
				
			||||||
        PYTHON_CFLAGS=`$PYTHON $srcdir/python-config.py --includes`
 | 
					    AC_DEFINE([HAVE_ATSPI], [1], [Define if AT-SPI 2 is found])
 | 
				
			||||||
        PYTHON_LIBS=`$PYTHON $srcdir/python-config.py --libs`
 | 
					    focus_listeners="atspi $focus_listeners"
 | 
				
			||||||
    fi
 | 
					    keystroke_listeners="atspi $keystroke_listeners"
 | 
				
			||||||
    PYTHON_INCLUDES="$PYTHON_CFLAGS"
 | 
					  fi
 | 
				
			||||||
    AC_SUBST(PYTHON_CFLAGS)
 | 
					 | 
				
			||||||
    AC_SUBST(PYTHON_INCLUDES)
 | 
					 | 
				
			||||||
    AC_SUBST(PYTHON_LIBS)
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    enable_python="no (disabled, use --enable-python to enable)"
 | 
					 | 
				
			||||||
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)
 | 
				
			||||||
@ -219,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.9.0])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AC_CONFIG_HEADERS([config.h])
 | 
					AC_CONFIG_HEADERS([config.h])
 | 
				
			||||||
AC_CONFIG_FILES([Makefile
 | 
					AC_CONFIG_FILES([Makefile
 | 
				
			||||||
eek/Makefile
 | 
					eek/Makefile
 | 
				
			||||||
@ -228,8 +205,6 @@ eekboard/Makefile
 | 
				
			|||||||
src/Makefile
 | 
					src/Makefile
 | 
				
			||||||
tests/Makefile
 | 
					tests/Makefile
 | 
				
			||||||
bindings/Makefile
 | 
					bindings/Makefile
 | 
				
			||||||
bindings/python/Makefile
 | 
					 | 
				
			||||||
bindings/python/eekboard/Makefile
 | 
					 | 
				
			||||||
bindings/vala/Makefile
 | 
					bindings/vala/Makefile
 | 
				
			||||||
docs/Makefile
 | 
					docs/Makefile
 | 
				
			||||||
docs/reference/Makefile
 | 
					docs/reference/Makefile
 | 
				
			||||||
@ -245,10 +220,11 @@ data/icons/32x32/Makefile
 | 
				
			|||||||
data/icons/48x48/Makefile
 | 
					data/icons/48x48/Makefile
 | 
				
			||||||
data/icons/scalable/Makefile
 | 
					data/icons/scalable/Makefile
 | 
				
			||||||
data/themes/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
 | 
					eek/eek-xkl-${EEK_API_VERSION}.pc
 | 
				
			||||||
eekboard/eekboard-${EEK_API_VERSION}.pc])
 | 
					eekboard/eekboard-${EEK_API_VERSION}.pc])
 | 
				
			||||||
AC_OUTPUT
 | 
					AC_OUTPUT
 | 
				
			||||||
@ -259,6 +235,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
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1,34 @@
 | 
				
			|||||||
SUBDIRS = icons themes
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										6
									
								
								data/eekboard-autostart.desktop.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								data/eekboard-autostart.desktop.in
									
									
									
									
									
										Normal 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
 | 
				
			||||||
@ -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
									
								
							
							
						
						
									
										9
									
								
								data/eekboard.desktop.in
									
									
									
									
									
										Normal 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;
 | 
				
			||||||
							
								
								
									
										38
									
								
								data/keyboards/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								data/keyboards/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					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)
 | 
				
			||||||
							
								
								
									
										307
									
								
								data/keyboards/geometry/compact.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										307
									
								
								data/keyboards/geometry/compact.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,307 @@
 | 
				
			|||||||
 | 
					<?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 columns="16" orientation="1"/>
 | 
				
			||||||
 | 
					    <key keycode="9" name="ESC" column="0" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="67" name="FK01" column="1" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="68" name="FK02" column="2" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="69" name="FK03" column="3" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="70" name="FK04" column="4" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="71" name="FK05" column="5" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="266.9268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="72" name="FK06" column="6" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="307.5121" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="73" name="FK07" column="7" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="348.0975" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="74" name="FK08" column="8" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="388.6829" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="75" name="FK09" column="9" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="449.5609" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="76" name="FK10" column="10" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="490.1463" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="95" name="FK11" column="11" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="530.7317" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="96" name="FK12" column="12" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="571.3170" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					  </section>
 | 
				
			||||||
 | 
					  <section angle="0">
 | 
				
			||||||
 | 
					    <bounds x="15.60975" y="78.04878" width="608.7804" height="201.3658"/>
 | 
				
			||||||
 | 
					    <row columns="14" orientation="1"/>
 | 
				
			||||||
 | 
					    <row columns="14" orientation="1"/>
 | 
				
			||||||
 | 
					    <row columns="13" orientation="1"/>
 | 
				
			||||||
 | 
					    <row columns="12" orientation="1"/>
 | 
				
			||||||
 | 
					    <row columns="9" orientation="1"/>
 | 
				
			||||||
 | 
					    <key keycode="49" name="TLDE" column="0" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="10" name="AE01" column="1" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="43.70731" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="11" name="AE02" column="2" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="12" name="AE03" column="3" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="13" name="AE04" column="4" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="14" name="AE05" column="5" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="15" name="AE06" column="6" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="245.0731" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="16" name="AE07" column="7" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="285.6585" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="17" name="AE08" column="8" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="326.2439" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="18" name="AE09" column="9" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="366.8292" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="19" name="AE10" column="10" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="407.4146" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="20" name="AE11" column="11" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="448.0000" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="21" name="AE12" column="12" row="0" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="488.5853" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="22" name="BKSP" column="13" row="0" oref="outline13">
 | 
				
			||||||
 | 
					      <bounds x="529.1707" y="1.560976" width="79.60975" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="23" name="TAB" column="0" row="1" oref="outline4">
 | 
				
			||||||
 | 
					      <bounds x="3.121951" y="42.14634" width="59.31707" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="24" name="AD01" column="1" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="65.56097" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="25" name="AD02" column="2" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="106.1463" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="26" name="AD03" column="3" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="145.1707" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="27" name="AD04" column="4" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="185.7560" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="28" name="AD05" column="5" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="226.3414" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="29" name="AD06" column="6" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="266.9268" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="30" name="AD07" column="7" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="307.5121" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="31" name="AD08" column="8" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="348.0975" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="32" name="AD09" column="9" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="388.6829" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="33" name="AD10" column="10" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="429.2682" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="34" name="AD11" column="11" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="468.2926" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="35" name="AD12" column="12" row="1" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="508.8780" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="51" name="BKSL" column="13" row="1" oref="outline5">
 | 
				
			||||||
 | 
					      <bounds x="549.4634" y="42.14634" width="59.31707" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="66" name="CAPS" column="0" row="2" oref="outline6">
 | 
				
			||||||
 | 
					      <bounds x="3.121951" y="82.73170" width="68.68292" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="38" name="AC01" column="1" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="76.48780" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="39" name="AC02" column="2" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="115.5121" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="40" name="AC03" column="3" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="156.0975" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="41" name="AC04" column="4" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="196.6829" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="42" name="AC05" column="5" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="237.2682" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="43" name="AC06" column="6" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="277.8536" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="44" name="AC07" column="7" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="318.4390" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="45" name="AC08" column="8" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="359.0243" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="46" name="AC09" column="9" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="399.6097" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="47" name="AC10" column="10" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="438.6341" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="48" name="AC11" column="11" row="2" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="479.2195" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="36" name="RTRN" column="12" row="2" oref="outline7">
 | 
				
			||||||
 | 
					      <bounds x="519.8048" y="82.73170" width="88.97561" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="50" name="LFSH" column="0" row="3" oref="outline8">
 | 
				
			||||||
 | 
					      <bounds x="3.121951" y="121.7560" width="88.97561" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="52" name="AB01" column="1" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="95.21951" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="53" name="AB02" column="2" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="135.8048" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="54" name="AB03" column="3" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="176.3902" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="55" name="AB04" column="4" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="215.4146" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="56" name="AB05" column="5" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="256.0000" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="57" name="AB06" column="6" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="296.5853" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="58" name="AB07" column="7" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="337.1707" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="59" name="AB08" column="8" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="377.7560" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="60" name="AB09" column="9" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="418.3414" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="61" name="AB10" column="10" row="3" oref="outline2">
 | 
				
			||||||
 | 
					      <bounds x="458.9268" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="62" name="RTSH" column="11" row="3" oref="outline9">
 | 
				
			||||||
 | 
					      <bounds x="499.5121" y="121.7560" width="109.2682" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="149" name="I149" column="0" row="4" oref="outline10">
 | 
				
			||||||
 | 
					      <bounds x="3.121951" y="162.3414" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="37" name="LCTL" column="1" row="4" oref="outline1">
 | 
				
			||||||
 | 
					      <bounds x="62.43902" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="64" name="LALT" column="2" row="4" oref="outline1">
 | 
				
			||||||
 | 
					      <bounds x="113.9512" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="65" name="SPCE" column="3" row="4" oref="outline3">
 | 
				
			||||||
 | 
					      <bounds x="165.4634" y="162.3414" width="217.5853" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="113" name="LEFT" column="4" row="4" oref="outline1">
 | 
				
			||||||
 | 
					      <bounds x="368.0487" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="111" name="UP" column="5" row="4" oref="outline1">
 | 
				
			||||||
 | 
					      <bounds x="419.43894" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="116" name="DOWN" column="6" row="4" oref="outline1">
 | 
				
			||||||
 | 
					      <bounds x="470.82918" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="114" name="RGHT" column="7" row="4" oref="outline1">
 | 
				
			||||||
 | 
					      <bounds x="522.21942" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					    <key keycode="150" name="I150" column="8" row="4" oref="outline10">
 | 
				
			||||||
 | 
					      <bounds x="573.60966" y="162.3414" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					    </key>
 | 
				
			||||||
 | 
					  </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>
 | 
				
			||||||
							
								
								
									
										88
									
								
								data/keyboards/keyboards.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								data/keyboards/keyboards.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										181
									
								
								data/keyboards/symbols/ar.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								data/keyboards/symbols/ar.xml
									
									
									
									
									
										Normal 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">></text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="35" name="AD12">
 | 
				
			||||||
 | 
					    <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>
 | 
				
			||||||
 | 
					    <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">
 | 
				
			||||||
 | 
					    <text category="letter">ز</text>
 | 
				
			||||||
 | 
					    <text category="letter">.</text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="61" name="AB10">
 | 
				
			||||||
 | 
					    <text category="letter">ظ</text>
 | 
				
			||||||
 | 
					    <text category="letter">؟</text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					</symbols>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/as-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/as-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/be.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/be.xml
									
									
									
									
									
										Normal 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">"</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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/bn-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/bn-inscript.xml
									
									
									
									
									
										Normal 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">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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/fa.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/fa.xml
									
									
									
									
									
										Normal 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">></text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="60" name="AB09">
 | 
				
			||||||
 | 
					    <keysym keyval="46">period</keysym>
 | 
				
			||||||
 | 
					    <text category="letter"><</text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="61" name="AB10">
 | 
				
			||||||
 | 
					    <keysym keyval="47">slash</keysym>
 | 
				
			||||||
 | 
					    <text category="letter">؟</text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					</symbols>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/gu-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/gu-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/he.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/he.xml
									
									
									
									
									
										Normal 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">'</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">></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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/hi-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/hi-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										250
									
								
								data/keyboards/symbols/ja-kana.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										250
									
								
								data/keyboards/symbols/ja-kana.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,250 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					<symbols version="0.90">
 | 
				
			||||||
 | 
					  <include>us</include>
 | 
				
			||||||
 | 
					  <key keycode="1" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="51" label="あ">3</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="35" label="ぁ">numbersign</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="51" label="ア">3</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="35" label="ァ">numbersign</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="2" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="101" label="い">e</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="69" label="ぃ">E</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="101" label="イ">e</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="69" label="ィ">E</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="3" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="52" label="う">4</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="36" label="ぅ">dollar</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="52" label="ウ">4</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="36" label="ゥ">dollar</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="4" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="53" label="え">5</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="37" label="ぇ">percent</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="53" label="エ">5</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="37" label="ェ">percent</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="5" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="54" label="お">6</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="38" label="ぉ">ampersand</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="54" label="オ">6</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="38" label="ォ">ampersand</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="6" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="116" label="か">t</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="116" label="カ">t</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="7" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="103" label="き">g</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="103" label="キ">g</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="8" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="104" label="く">h</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="104" label="ク">h</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="9" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="58" label="け">colon</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="58" label="ケ">colon</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="10" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="98" label="こ">b</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="98" label="コ">b</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="11" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="120" label="さ">x</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="120" label="サ">x</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="12" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="100" label="し">d</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="100" label="シ">d</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="13" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="114" label="す">r</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="114" label="ス">r</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="14" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="112" label="せ">p</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="112" label="セ">p</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="15" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="99" label="そ">c</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="99" label="ソ">c</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="16" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="113" label="た">q</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="113" label="タ">q</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="17" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="97" label="ち">a</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="97" label="チ">a</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="18" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="122" label="つ">z</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="90" label="っ">Z</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="122" label="ツ">z</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="90" label="ッ">Z</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="19" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="119" label="て">w</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="119" label="テ">w</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="20" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="115" label="と">s</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="115" label="ト">s</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="21" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="117" label="な">u</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="117" label="ナ">u</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="22" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="105" label="に">i</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="105" label="ニ">i</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="23" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="33" label="ぬ">exclam</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="33" label="ヌ">exclam</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="24" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="44" label="ね">comma</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="44" label="ネ">comma</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="25" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="107" label="の">k</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="107" label="ノ">k</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="26" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="102" label="は">f</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="102" label="ハ">f</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="27" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="118" label="ひ">v</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="118" label="ヒ">v</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="28" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="34" label="ふ">quotedbl</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="34" label="フ">quotedbl</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="29" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="94" label="へ">asciicircum</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="94" label="ヘ">asciicircum</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="30" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="61" label="ほ">equal</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="61" label="ホ">equal</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="31" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="106" label="ま">j</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="106" label="マ">j</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="32" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="110" label="み">n</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="110" label="ミ">n</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="33" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="93" label="む">bracketright</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="93" label="ム">bracketright</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="34" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="47" label="め">slash</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="47" label="メ">slash</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="35" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="109" label="も">m</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="109" label="モ">m</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="36" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="55" label="や">7</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="39" label="ゃ">quoteright</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="55" label="ヤ">7</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="39" label="ャ">quoteright</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="37" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="56" label="ゆ">8</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="40" label="ゅ">parenleft</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="56" label="ユ">8</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="40" label="ュ">parenleft</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="38" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="57" label="よ">9</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="41" label="ょ">parenright</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="57" label="ヨ">9</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="41" label="ョ">parenright</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="41" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="111" label="ら">o</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="111" label="ラ">o</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="42" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="108" label="り">l</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="108" label="リ">l</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="43" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="46" label="る">period</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="46" label="ル">period</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="44" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="59" label="れ">semicolon</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="59" label="レ">semicolon</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="45" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="92" label="ろ">backslash</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="92" label="ロ">backslash</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="46" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="48" label="わ">0</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="48" label="ワ">0</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="47" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="126" label="を">asciitilde</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="126" label="ヲ">asciitilde</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="48" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="121" label="ん">y</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="121" label="ン">y</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="49" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="123" label="「">braceleft</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="48" label="ゐ">0</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="123" label="「">braceleft</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="48" label="ヰ">0</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="50" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="125" label="」">braceright</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="48" label="ゑ">0</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="125" label="」">braceright</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="48" label="ヱ">0</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <key keycode="51" name="AE03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="64" label="゛">at</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="64" label="゛">at</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="52" name="AD03" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="91" label="゜">bracketleft</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="91" label="゜">bracketleft</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="53" name="AE04" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="124" label="ー">bar</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="124" label="ー">bar</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="54" name="AE05" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="60" label="、">less</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="60" label="、">less</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="55" name="AE06" groups="2">
 | 
				
			||||||
 | 
					    <keysym keyval="62" label="。">greater</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="63" label="・">question</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="62" label="。">greater</keysym>
 | 
				
			||||||
 | 
					    <keysym keyval="63" label="・">question</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					</symbols>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/kk.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/kk.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
 | 
					    <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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/kn-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/kn-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ks-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ks-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ks.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ks.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/mai-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/mai-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ml-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ml-inscript.xml
									
									
									
									
									
										Normal 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">></text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="61" name="AB10">
 | 
				
			||||||
 | 
					    <text category="letter">യ</text>
 | 
				
			||||||
 | 
					    <keysym keyval="63">question</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					</symbols>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/mr-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/mr-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/my.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/my.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/or-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/or-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/pa-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/pa-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ru.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ru.xml
									
									
									
									
									
										Normal 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">"</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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/sd-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/sd-inscript.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ta-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ta-inscript.xml
									
									
									
									
									
										Normal 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">"</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">></text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="61" name="AB10">
 | 
				
			||||||
 | 
					    <text category="letter">ய</text>
 | 
				
			||||||
 | 
					    <keysym keyval="63">question</keysym>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					</symbols>
 | 
				
			||||||
							
								
								
									
										194
									
								
								data/keyboards/symbols/te-inscript.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								data/keyboards/symbols/te-inscript.xml
									
									
									
									
									
										Normal 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">></text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="61" name="AB10">
 | 
				
			||||||
 | 
					    <text category="letter">య</text>
 | 
				
			||||||
 | 
					    <text category="letter">?</text>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					</symbols>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										192
									
								
								data/keyboards/symbols/th.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								data/keyboards/symbols/th.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ua.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ua.xml
									
									
									
									
									
										Normal 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">"</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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/ug.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/ug.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										278
									
								
								data/keyboards/symbols/us.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										278
									
								
								data/keyboards/symbols/us.xml
									
									
									
									
									
										Normal 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">cycle-keyboard</symbol>
 | 
				
			||||||
 | 
					  </key>
 | 
				
			||||||
 | 
					  <key keycode="150" name="I150">
 | 
				
			||||||
 | 
					    <symbol label="☺" icon="preferences-system-symbolic">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>
 | 
				
			||||||
							
								
								
									
										193
									
								
								data/keyboards/symbols/zh-bopomofo.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								data/keyboards/symbols/zh-bopomofo.xml
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
							
								
								
									
										60
									
								
								data/org.fedorahosted.eekboard.gschema.xml.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								data/org.fedorahosted.eekboard.gschema.xml.in
									
									
									
									
									
										Normal 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>
 | 
				
			||||||
@ -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=--rebuild-types
 | 
					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
 | 
				
			||||||
@ -79,13 +79,10 @@ EXTRA_HFILES=
 | 
				
			|||||||
IGNORE_HFILES = \
 | 
					IGNORE_HFILES = \
 | 
				
			||||||
	config.h \
 | 
						config.h \
 | 
				
			||||||
	eek-renderer.h \
 | 
						eek-renderer.h \
 | 
				
			||||||
	eek-clutter-renderer.h \
 | 
						eek-gtk-renderer.h \
 | 
				
			||||||
	eek-clutter-section.h \
 | 
						eek-theme.h \
 | 
				
			||||||
	eek-clutter-key.h \
 | 
						eek-theme-node.h \
 | 
				
			||||||
	eek-gtk-renderer.h
 | 
						eek-enumtypes.h
 | 
				
			||||||
if !ENABLE_CLUTTER
 | 
					 | 
				
			||||||
IGNORE_HFILES += eek-clutter-keyboard.h eek-clutter.h
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 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
 | 
				
			||||||
@ -108,17 +105,10 @@ expand_content_files=eek-overview.xml
 | 
				
			|||||||
GTKDOC_CFLAGS = $(GIO2_CFLAGS)
 | 
					GTKDOC_CFLAGS = $(GIO2_CFLAGS)
 | 
				
			||||||
GTKDOC_LIBS = $(top_builddir)/eek/libeek.la \
 | 
					GTKDOC_LIBS = $(top_builddir)/eek/libeek.la \
 | 
				
			||||||
	$(top_builddir)/eek/libeek-gtk.la \
 | 
						$(top_builddir)/eek/libeek-gtk.la \
 | 
				
			||||||
	$(top_builddir)/eek/libeek-xkb.la \
 | 
					 | 
				
			||||||
	$(top_builddir)/eek/libeek-xkl.la \
 | 
						$(top_builddir)/eek/libeek-xkl.la \
 | 
				
			||||||
	$(GIO2_LIBS) \
 | 
						$(GIO2_LIBS) \
 | 
				
			||||||
	$(GTK_LIBS) \
 | 
						$(GTK_LIBS) \
 | 
				
			||||||
	$(XKB_LIBS)
 | 
						$(LIBXKLAVIER_LIBS)
 | 
				
			||||||
 | 
					 | 
				
			||||||
if ENABLE_CLUTTER
 | 
					 | 
				
			||||||
GTKDOC_LIBS += \
 | 
					 | 
				
			||||||
	$(top_builddir)/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
 | 
				
			||||||
 | 
				
			|||||||
@ -37,6 +37,7 @@
 | 
				
			|||||||
    <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-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"/>
 | 
				
			||||||
@ -45,16 +46,17 @@
 | 
				
			|||||||
      <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-symbol.xml"/>
 | 
				
			||||||
      <xi:include href="xml/eek-keysym.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"/>
 | 
				
			||||||
    </chapter>
 | 
					    </chapter>
 | 
				
			||||||
    <chapter>
 | 
					    <chapter>
 | 
				
			||||||
      <title>Clutter Keyboard</title>
 | 
					      <title>GTK Adapter</title>
 | 
				
			||||||
      <xi:include href="xml/eek-clutter-keyboard.xml"/>
 | 
					      <xi:include href="xml/eek-gtk-keyboard.xml"/>
 | 
				
			||||||
    </chapter>
 | 
					    </chapter>
 | 
				
			||||||
    <chapter>
 | 
					    <chapter>
 | 
				
			||||||
      <title>GTK Keyboard</title>
 | 
					      <title>Clutter Adapter</title>
 | 
				
			||||||
      <xi:include href="xml/eek-gtk-keyboard.xml"/>
 | 
					      <xi:include href="xml/eek-clutter-keyboard.xml"/>
 | 
				
			||||||
    </chapter>
 | 
					    </chapter>
 | 
				
			||||||
    <chapter>
 | 
					    <chapter>
 | 
				
			||||||
      <title>Libxklavier Layout Engine</title>
 | 
					      <title>Libxklavier Layout Engine</title>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,49 +1,138 @@
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-keyboard</FILE>
 | 
					<FILE>eek</FILE>
 | 
				
			||||||
<TITLE>EekKeyboard</TITLE>
 | 
					eek_init
 | 
				
			||||||
EekKeyboardClass
 | 
					 | 
				
			||||||
EekKeyboardPrivate
 | 
					 | 
				
			||||||
EekKeyboard
 | 
					 | 
				
			||||||
eek_keyboard_new
 | 
					 | 
				
			||||||
eek_keyboard_get_layout
 | 
					 | 
				
			||||||
eek_keyboard_get_size
 | 
					 | 
				
			||||||
eek_keyboard_set_size
 | 
					 | 
				
			||||||
eek_keyboard_set_symbol_index
 | 
					 | 
				
			||||||
eek_keyboard_get_symbol_index
 | 
					 | 
				
			||||||
eek_keyboard_set_group
 | 
					 | 
				
			||||||
eek_keyboard_set_level
 | 
					 | 
				
			||||||
eek_keyboard_get_group
 | 
					 | 
				
			||||||
eek_keyboard_get_level
 | 
					 | 
				
			||||||
eek_keyboard_set_modifier_behavior
 | 
					 | 
				
			||||||
eek_keyboard_get_modifier_behavior
 | 
					 | 
				
			||||||
eek_keyboard_get_modifiers
 | 
					 | 
				
			||||||
eek_keyboard_create_section
 | 
					 | 
				
			||||||
eek_keyboard_find_key_by_keycode
 | 
					 | 
				
			||||||
eek_keyboard_add_outline
 | 
					 | 
				
			||||||
eek_keyboard_get_outline
 | 
					 | 
				
			||||||
<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
 | 
					</SECTION>
 | 
				
			||||||
EekLayout
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-clutter-key</FILE>
 | 
				
			||||||
 | 
					<TITLE>EekClutterKey</TITLE>
 | 
				
			||||||
 | 
					EekClutterKey
 | 
				
			||||||
 | 
					EekClutterKeyClass
 | 
				
			||||||
 | 
					eek_clutter_key_new
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_LAYOUT
 | 
					EEK_CLUTTER_KEY
 | 
				
			||||||
EEK_IS_LAYOUT
 | 
					EEK_CLUTTER_KEY_CLASS
 | 
				
			||||||
EEK_TYPE_LAYOUT
 | 
					EEK_CLUTTER_KEY_GET_CLASS
 | 
				
			||||||
eek_layout_get_type
 | 
					EEK_IS_CLUTTER_KEY
 | 
				
			||||||
EEK_LAYOUT_CLASS
 | 
					EEK_IS_CLUTTER_KEY_CLASS
 | 
				
			||||||
EEK_IS_LAYOUT_CLASS
 | 
					EEK_TYPE_CLUTTER_KEY
 | 
				
			||||||
EEK_LAYOUT_GET_CLASS
 | 
					EekClutterKeyPrivate
 | 
				
			||||||
 | 
					eek_clutter_key_get_type
 | 
				
			||||||
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-clutter-keyboard</FILE>
 | 
				
			||||||
 | 
					<TITLE>EekClutterKeyboard</TITLE>
 | 
				
			||||||
 | 
					EekClutterKeyboard
 | 
				
			||||||
 | 
					EekClutterKeyboardClass
 | 
				
			||||||
 | 
					eek_clutter_keyboard_new
 | 
				
			||||||
 | 
					eek_clutter_keyboard_set_theme
 | 
				
			||||||
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
 | 
					EEK_CLUTTER_KEYBOARD
 | 
				
			||||||
 | 
					EEK_CLUTTER_KEYBOARD_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>
 | 
				
			||||||
 | 
					<FILE>eek-clutter-renderer</FILE>
 | 
				
			||||||
 | 
					<TITLE>EekClutterRenderer</TITLE>
 | 
				
			||||||
 | 
					EekClutterRenderer
 | 
				
			||||||
 | 
					EekClutterRendererClass
 | 
				
			||||||
 | 
					eek_clutter_renderer_new
 | 
				
			||||||
 | 
					eek_clutter_renderer_render_key
 | 
				
			||||||
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
 | 
					EEK_CLUTTER_RENDERER
 | 
				
			||||||
 | 
					EEK_CLUTTER_RENDERER_CLASS
 | 
				
			||||||
 | 
					EEK_CLUTTER_RENDERER_GET_CLASS
 | 
				
			||||||
 | 
					EEK_IS_CLUTTER_RENDERER
 | 
				
			||||||
 | 
					EEK_IS_CLUTTER_RENDERER_CLASS
 | 
				
			||||||
 | 
					EEK_TYPE_CLUTTER_RENDERER
 | 
				
			||||||
 | 
					EekClutterRendererPrivate
 | 
				
			||||||
 | 
					eek_clutter_renderer_get_type
 | 
				
			||||||
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-clutter-section</FILE>
 | 
				
			||||||
 | 
					<TITLE>EekClutterSection</TITLE>
 | 
				
			||||||
 | 
					EekClutterSection
 | 
				
			||||||
 | 
					EekClutterSectionClass
 | 
				
			||||||
 | 
					eek_clutter_section_new
 | 
				
			||||||
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
 | 
					EEK_CLUTTER_SECTION
 | 
				
			||||||
 | 
					EEK_CLUTTER_SECTION_CLASS
 | 
				
			||||||
 | 
					EEK_CLUTTER_SECTION_GET_CLASS
 | 
				
			||||||
 | 
					EEK_IS_CLUTTER_SECTION
 | 
				
			||||||
 | 
					EEK_IS_CLUTTER_SECTION_CLASS
 | 
				
			||||||
 | 
					EEK_TYPE_CLUTTER_SECTION
 | 
				
			||||||
 | 
					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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
@ -51,119 +140,315 @@ EEK_LAYOUT_GET_CLASS
 | 
				
			|||||||
<TITLE>EekGtkKeyboard</TITLE>
 | 
					<TITLE>EekGtkKeyboard</TITLE>
 | 
				
			||||||
EekGtkKeyboard
 | 
					EekGtkKeyboard
 | 
				
			||||||
EekGtkKeyboardClass
 | 
					EekGtkKeyboardClass
 | 
				
			||||||
EekGtkKeyboardPrivate
 | 
					 | 
				
			||||||
eek_gtk_keyboard_new
 | 
					eek_gtk_keyboard_new
 | 
				
			||||||
 | 
					eek_gtk_keyboard_set_theme
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_GTK_KEYBOARD
 | 
					EEK_GTK_KEYBOARD
 | 
				
			||||||
EEK_IS_GTK_KEYBOARD
 | 
					 | 
				
			||||||
EEK_TYPE_GTK_KEYBOARD
 | 
					 | 
				
			||||||
eek_gtk_keyboard_get_type
 | 
					 | 
				
			||||||
EEK_GTK_KEYBOARD_CLASS
 | 
					EEK_GTK_KEYBOARD_CLASS
 | 
				
			||||||
EEK_IS_GTK_KEYBOARD_CLASS
 | 
					 | 
				
			||||||
EEK_GTK_KEYBOARD_GET_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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-section</FILE>
 | 
					<FILE>eek-section</FILE>
 | 
				
			||||||
<TITLE>EekSection</TITLE>
 | 
					<TITLE>EekSection</TITLE>
 | 
				
			||||||
EekSectionClass
 | 
					 | 
				
			||||||
EekSectionPrivate
 | 
					 | 
				
			||||||
EekSection
 | 
					EekSection
 | 
				
			||||||
eek_section_set_angle
 | 
					EekSectionClass
 | 
				
			||||||
eek_section_get_angle
 | 
					 | 
				
			||||||
eek_section_get_n_rows
 | 
					 | 
				
			||||||
eek_section_add_row
 | 
					eek_section_add_row
 | 
				
			||||||
eek_section_get_row
 | 
					 | 
				
			||||||
eek_section_create_key
 | 
					eek_section_create_key
 | 
				
			||||||
eek_section_find_key_by_keycode
 | 
					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>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_SECTION
 | 
					 | 
				
			||||||
EEK_IS_SECTION
 | 
					EEK_IS_SECTION
 | 
				
			||||||
EEK_TYPE_SECTION
 | 
					 | 
				
			||||||
eek_section_get_type
 | 
					 | 
				
			||||||
EEK_SECTION_CLASS
 | 
					 | 
				
			||||||
EEK_IS_SECTION_CLASS
 | 
					EEK_IS_SECTION_CLASS
 | 
				
			||||||
 | 
					EEK_SECTION
 | 
				
			||||||
 | 
					EEK_SECTION_CLASS
 | 
				
			||||||
EEK_SECTION_GET_CLASS
 | 
					EEK_SECTION_GET_CLASS
 | 
				
			||||||
 | 
					EEK_TYPE_SECTION
 | 
				
			||||||
 | 
					EekSectionPrivate
 | 
				
			||||||
 | 
					eek_section_get_type
 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-container</FILE>
 | 
					<FILE>eek-serializable</FILE>
 | 
				
			||||||
<TITLE>EekContainer</TITLE>
 | 
					<TITLE>EekSerializable</TITLE>
 | 
				
			||||||
EekContainerClass
 | 
					EekSerializableIface
 | 
				
			||||||
EekContainerPrivate
 | 
					eek_serializable_deserialize
 | 
				
			||||||
EekCallback
 | 
					eek_serializable_serialize
 | 
				
			||||||
EekCompareFunc
 | 
					 | 
				
			||||||
EekContainer
 | 
					 | 
				
			||||||
eek_container_foreach_child
 | 
					 | 
				
			||||||
eek_container_find
 | 
					 | 
				
			||||||
eek_container_add_child
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_CONTAINER
 | 
					EEK_IS_SERIALIZABLE
 | 
				
			||||||
EEK_IS_CONTAINER
 | 
					EEK_SERIALIZABLE
 | 
				
			||||||
EEK_TYPE_CONTAINER
 | 
					EEK_SERIALIZABLE_GET_IFACE
 | 
				
			||||||
eek_container_get_type
 | 
					EEK_TYPE_SERIALIZABLE
 | 
				
			||||||
EEK_CONTAINER_CLASS
 | 
					eek_serializable_get_type
 | 
				
			||||||
EEK_IS_CONTAINER_CLASS
 | 
					</SECTION>
 | 
				
			||||||
EEK_CONTAINER_GET_CLASS
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-special-keysym-entries</FILE>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-symbol</FILE>
 | 
					<FILE>eek-symbol</FILE>
 | 
				
			||||||
<TITLE>EekSymbol</TITLE>
 | 
					<TITLE>EekSymbol</TITLE>
 | 
				
			||||||
 | 
					EekSymbol
 | 
				
			||||||
EekSymbolCategory
 | 
					EekSymbolCategory
 | 
				
			||||||
EekSymbolClass
 | 
					EekSymbolClass
 | 
				
			||||||
EekSymbolPrivate
 | 
					eek_symbol_category_from_name
 | 
				
			||||||
EekSymbol
 | 
					eek_symbol_category_get_name
 | 
				
			||||||
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_get_category
 | 
				
			||||||
eek_symbol_get_modifier_mask
 | 
					 | 
				
			||||||
eek_symbol_set_modifier_mask
 | 
					 | 
				
			||||||
eek_symbol_is_modifier
 | 
					 | 
				
			||||||
eek_symbol_set_icon_name
 | 
					 | 
				
			||||||
eek_symbol_get_icon_name
 | 
					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>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_SYMBOL
 | 
					 | 
				
			||||||
EEK_IS_SYMBOL
 | 
					EEK_IS_SYMBOL
 | 
				
			||||||
EEK_TYPE_SYMBOL
 | 
					 | 
				
			||||||
eek_symbol_get_type
 | 
					 | 
				
			||||||
EEK_SYMBOL_CLASS
 | 
					 | 
				
			||||||
EEK_IS_SYMBOL_CLASS
 | 
					EEK_IS_SYMBOL_CLASS
 | 
				
			||||||
 | 
					EEK_SYMBOL
 | 
				
			||||||
 | 
					EEK_SYMBOL_CLASS
 | 
				
			||||||
EEK_SYMBOL_GET_CLASS
 | 
					EEK_SYMBOL_GET_CLASS
 | 
				
			||||||
 | 
					EEK_TYPE_SYMBOL
 | 
				
			||||||
 | 
					EekSymbolPrivate
 | 
				
			||||||
 | 
					eek_symbol_get_type
 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-xkl-layout</FILE>
 | 
					<FILE>eek-symbol-matrix</FILE>
 | 
				
			||||||
<TITLE>EekXklLayout</TITLE>
 | 
					EekSymbolMatrix
 | 
				
			||||||
EekXklLayout
 | 
					eek_symbol_matrix_copy
 | 
				
			||||||
EekXklLayoutClass
 | 
					eek_symbol_matrix_free
 | 
				
			||||||
EekXklLayoutPrivate
 | 
					eek_symbol_matrix_get_symbol
 | 
				
			||||||
eek_xkl_layout_new
 | 
					eek_symbol_matrix_new
 | 
				
			||||||
eek_xkl_layout_set_config
 | 
					eek_symbol_matrix_set_symbol
 | 
				
			||||||
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_enable_option
 | 
					 | 
				
			||||||
eek_xkl_layout_disable_option
 | 
					 | 
				
			||||||
eek_xkl_layout_get_model
 | 
					 | 
				
			||||||
eek_xkl_layout_get_layouts
 | 
					 | 
				
			||||||
eek_xkl_layout_get_variants
 | 
					 | 
				
			||||||
eek_xkl_layout_get_options
 | 
					 | 
				
			||||||
eek_xkl_layout_get_option
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_XKL_LAYOUT
 | 
					EEK_TYPE_SYMBOL_MATRIX
 | 
				
			||||||
EEK_IS_XKL_LAYOUT
 | 
					eek_symbol_matrix_get_type
 | 
				
			||||||
EEK_TYPE_XKL_LAYOUT
 | 
					</SECTION>
 | 
				
			||||||
eek_xkl_layout_get_type
 | 
					
 | 
				
			||||||
EEK_XKL_LAYOUT_CLASS
 | 
					<SECTION>
 | 
				
			||||||
EEK_IS_XKL_LAYOUT_CLASS
 | 
					<FILE>eek-text</FILE>
 | 
				
			||||||
EEK_XKL_LAYOUT_GET_CLASS
 | 
					<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>
 | 
				
			||||||
@ -171,138 +456,65 @@ EEK_XKL_LAYOUT_GET_CLASS
 | 
				
			|||||||
<TITLE>EekXkbLayout</TITLE>
 | 
					<TITLE>EekXkbLayout</TITLE>
 | 
				
			||||||
EekXkbLayout
 | 
					EekXkbLayout
 | 
				
			||||||
EekXkbLayoutClass
 | 
					EekXkbLayoutClass
 | 
				
			||||||
EekXkbLayoutPrivate
 | 
					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_names_full_valist
 | 
					eek_xkb_layout_set_names_full_valist
 | 
				
			||||||
eek_xkb_layout_set_keycodes
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
EekKeyPrivate
 | 
					 | 
				
			||||||
EekKey
 | 
					 | 
				
			||||||
eek_key_set_keycode
 | 
					 | 
				
			||||||
eek_key_get_keycode
 | 
					 | 
				
			||||||
eek_key_set_symbol_matrix
 | 
					 | 
				
			||||||
eek_key_get_symbol_matrix
 | 
					 | 
				
			||||||
eek_key_get_symbol
 | 
					 | 
				
			||||||
eek_key_get_symbol_with_fallback
 | 
					 | 
				
			||||||
eek_key_get_symbol_at_index
 | 
					 | 
				
			||||||
eek_key_set_index
 | 
					 | 
				
			||||||
eek_key_get_index
 | 
					 | 
				
			||||||
eek_key_set_oref
 | 
					 | 
				
			||||||
eek_key_get_oref
 | 
					 | 
				
			||||||
eek_key_is_pressed
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					 | 
				
			||||||
EEK_KEY
 | 
					 | 
				
			||||||
EEK_IS_KEY
 | 
					 | 
				
			||||||
EEK_TYPE_KEY
 | 
					 | 
				
			||||||
eek_key_get_type
 | 
					 | 
				
			||||||
EEK_KEY_CLASS
 | 
					 | 
				
			||||||
EEK_IS_KEY_CLASS
 | 
					 | 
				
			||||||
EEK_KEY_GET_CLASS
 | 
					 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-serializable</FILE>
 | 
					<FILE>eek-xkl</FILE>
 | 
				
			||||||
<TITLE>EekSerializable</TITLE>
 | 
					
 | 
				
			||||||
EekSerializable
 | 
					 | 
				
			||||||
EekSerializableIface
 | 
					 | 
				
			||||||
eek_serializable_serialize
 | 
					 | 
				
			||||||
eek_serializable_deserialize
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					 | 
				
			||||||
EEK_SERIALIZABLE
 | 
					 | 
				
			||||||
EEK_IS_SERIALIZABLE
 | 
					 | 
				
			||||||
EEK_TYPE_SERIALIZABLE
 | 
					 | 
				
			||||||
eek_serializable_get_type
 | 
					 | 
				
			||||||
EEK_SERIALIZABLE_GET_IFACE
 | 
					 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-element</FILE>
 | 
					<FILE>eek-xkl-layout</FILE>
 | 
				
			||||||
<TITLE>EekElement</TITLE>
 | 
					<TITLE>EekXklLayout</TITLE>
 | 
				
			||||||
EekElementClass
 | 
					EekXklLayout
 | 
				
			||||||
EekElementPrivate
 | 
					EekXklLayoutClass
 | 
				
			||||||
EekElement
 | 
					eek_xkl_layout_disable_option
 | 
				
			||||||
eek_element_set_parent
 | 
					eek_xkl_layout_enable_option
 | 
				
			||||||
eek_element_get_parent
 | 
					eek_xkl_layout_get_layouts
 | 
				
			||||||
eek_element_set_name
 | 
					eek_xkl_layout_get_model
 | 
				
			||||||
eek_element_get_name
 | 
					eek_xkl_layout_get_option
 | 
				
			||||||
eek_element_set_bounds
 | 
					eek_xkl_layout_get_options
 | 
				
			||||||
eek_element_get_bounds
 | 
					eek_xkl_layout_get_variants
 | 
				
			||||||
eek_element_set_position
 | 
					eek_xkl_layout_new
 | 
				
			||||||
eek_element_set_size
 | 
					eek_xkl_layout_set_config
 | 
				
			||||||
eek_element_get_absolute_position
 | 
					eek_xkl_layout_set_config_full
 | 
				
			||||||
eek_element_set_symbol_index
 | 
					eek_xkl_layout_set_layouts
 | 
				
			||||||
eek_element_get_symbol_index
 | 
					eek_xkl_layout_set_model
 | 
				
			||||||
eek_element_set_group
 | 
					eek_xkl_layout_set_options
 | 
				
			||||||
eek_element_set_level
 | 
					eek_xkl_layout_set_variants
 | 
				
			||||||
eek_element_get_group
 | 
					 | 
				
			||||||
eek_element_get_level
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_ELEMENT
 | 
					EEK_IS_XKL_LAYOUT
 | 
				
			||||||
EEK_IS_ELEMENT
 | 
					EEK_IS_XKL_LAYOUT_CLASS
 | 
				
			||||||
EEK_TYPE_ELEMENT
 | 
					EEK_TYPE_XKL_LAYOUT
 | 
				
			||||||
eek_element_get_type
 | 
					EEK_XKL_LAYOUT
 | 
				
			||||||
EEK_ELEMENT_CLASS
 | 
					EEK_XKL_LAYOUT_CLASS
 | 
				
			||||||
EEK_IS_ELEMENT_CLASS
 | 
					EEK_XKL_LAYOUT_GET_CLASS
 | 
				
			||||||
EEK_ELEMENT_GET_CLASS
 | 
					EekXklLayoutPrivate
 | 
				
			||||||
</SECTION>
 | 
					eek_xkl_layout_get_type
 | 
				
			||||||
 | 
					 | 
				
			||||||
<SECTION>
 | 
					 | 
				
			||||||
<FILE>eek-xml-layout</FILE>
 | 
					 | 
				
			||||||
<TITLE>EekXmlLayout</TITLE>
 | 
					 | 
				
			||||||
EekXmlLayout
 | 
					 | 
				
			||||||
EekXmlLayoutClass
 | 
					 | 
				
			||||||
EekXmlLayoutPrivate
 | 
					 | 
				
			||||||
eek_xml_layout_new
 | 
					 | 
				
			||||||
eek_xml_layout_set_source
 | 
					 | 
				
			||||||
eek_xml_layout_get_source
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					 | 
				
			||||||
EEK_XML_LAYOUT
 | 
					 | 
				
			||||||
EEK_IS_XML_LAYOUT
 | 
					 | 
				
			||||||
EEK_TYPE_XML_LAYOUT
 | 
					 | 
				
			||||||
eek_xml_layout_get_type
 | 
					 | 
				
			||||||
EEK_XML_LAYOUT_CLASS
 | 
					 | 
				
			||||||
EEK_IS_XML_LAYOUT_CLASS
 | 
					 | 
				
			||||||
EEK_XML_LAYOUT_GET_CLASS
 | 
					 | 
				
			||||||
</SECTION>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<SECTION>
 | 
					 | 
				
			||||||
<FILE>eek-keysym</FILE>
 | 
					 | 
				
			||||||
<TITLE>EekKeysym</TITLE>
 | 
					 | 
				
			||||||
EEK_KEYSYM
 | 
					 | 
				
			||||||
EekKeysymClass
 | 
					 | 
				
			||||||
EekKeysymPrivate
 | 
					 | 
				
			||||||
EekKeysym
 | 
					 | 
				
			||||||
eek_keysym_new
 | 
					 | 
				
			||||||
eek_keysym_get_xkeysym
 | 
					 | 
				
			||||||
eek_keysym_new_from_name
 | 
					 | 
				
			||||||
<SUBSECTION Standard>
 | 
					 | 
				
			||||||
EEK_INVALID_KEYSYM
 | 
					 | 
				
			||||||
EEK_IS_KEYSYM
 | 
					 | 
				
			||||||
EEK_TYPE_KEYSYM
 | 
					 | 
				
			||||||
eek_keysym_get_type
 | 
					 | 
				
			||||||
EEK_KEYSYM_CLASS
 | 
					 | 
				
			||||||
EEK_IS_KEYSYM_CLASS
 | 
					 | 
				
			||||||
EEK_KEYSYM_GET_CLASS
 | 
					 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
@ -312,34 +524,21 @@ eek_keyboard_output
 | 
				
			|||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-types</FILE>
 | 
					<FILE>eek-xml-layout</FILE>
 | 
				
			||||||
I_
 | 
					<TITLE>EekXmlLayout</TITLE>
 | 
				
			||||||
EEK_TYPE_SYMBOL_MATRIX
 | 
					EekXmlLayout
 | 
				
			||||||
EEK_TYPE_POINT
 | 
					EekXmlLayoutClass
 | 
				
			||||||
EEK_TYPE_BOUNDS
 | 
					eek_xml_layout_get_source
 | 
				
			||||||
EEK_TYPE_OUTLINE
 | 
					eek_xml_layout_new
 | 
				
			||||||
EEK_TYPE_COLOR
 | 
					eek_xml_layout_set_source
 | 
				
			||||||
EekOrientation
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EekModifierBehavior
 | 
					EEK_IS_XML_LAYOUT
 | 
				
			||||||
EekModifierType
 | 
					EEK_IS_XML_LAYOUT_CLASS
 | 
				
			||||||
EEK_INVALID_KEYCODE
 | 
					EEK_TYPE_XML_LAYOUT
 | 
				
			||||||
EekSymbolMatrix
 | 
					EEK_XML_LAYOUT
 | 
				
			||||||
EekPoint
 | 
					EEK_XML_LAYOUT_CLASS
 | 
				
			||||||
EekBounds
 | 
					EEK_XML_LAYOUT_GET_CLASS
 | 
				
			||||||
EekOutline
 | 
					EekXmlLayoutPrivate
 | 
				
			||||||
EekColor
 | 
					eek_xml_layout_get_type
 | 
				
			||||||
eek_symbol_matrix_get_type
 | 
					 | 
				
			||||||
eek_symbol_matrix_new
 | 
					 | 
				
			||||||
eek_symbol_matrix_copy
 | 
					 | 
				
			||||||
eek_symbol_matrix_free
 | 
					 | 
				
			||||||
eek_point_get_type
 | 
					 | 
				
			||||||
eek_point_rotate
 | 
					 | 
				
			||||||
eek_bounds_get_type
 | 
					 | 
				
			||||||
eek_bounds_long_side
 | 
					 | 
				
			||||||
eek_outline_get_type
 | 
					 | 
				
			||||||
eek_outline_copy
 | 
					 | 
				
			||||||
eek_outline_free
 | 
					 | 
				
			||||||
eek_color_get_type
 | 
					 | 
				
			||||||
eek_color_new
 | 
					 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -35,10 +35,15 @@
 | 
				
			|||||||
  <part id="apireference">
 | 
					  <part id="apireference">
 | 
				
			||||||
    <title>API Manual</title>
 | 
					    <title>API Manual</title>
 | 
				
			||||||
    <chapter>
 | 
					    <chapter>
 | 
				
			||||||
      <title>D-Bus client interface to eekboard-server</title>
 | 
					      <title>Client interface to eekboard-server</title>
 | 
				
			||||||
      <xi:include href="xml/eekboard-eekboard.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"/>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,22 +1,41 @@
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eekboard-eekboard</FILE>
 | 
					<FILE>eekboard-client</FILE>
 | 
				
			||||||
<TITLE>EekboardEekboard</TITLE>
 | 
					<TITLE>EekboardClient</TITLE>
 | 
				
			||||||
EekboardEekboard
 | 
					EekboardClient
 | 
				
			||||||
EekboardEekboardClass
 | 
					EekboardClientClass
 | 
				
			||||||
EekboardEekboardPrivate
 | 
					eekboard_client_new
 | 
				
			||||||
eekboard_eekboard_new
 | 
					eekboard_client_create_context
 | 
				
			||||||
eekboard_eekboard_create_context
 | 
					eekboard_client_push_context
 | 
				
			||||||
eekboard_eekboard_push_context
 | 
					eekboard_client_pop_context
 | 
				
			||||||
eekboard_eekboard_pop_context
 | 
					eekboard_client_destroy_context
 | 
				
			||||||
eekboard_eekboard_destroy_context
 | 
					EekboardClientPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEKBOARD_EEKBOARD
 | 
					EEKBOARD_CLIENT
 | 
				
			||||||
EEKBOARD_IS_EEKBOARD
 | 
					EEKBOARD_IS_CLIENT
 | 
				
			||||||
EEKBOARD_TYPE_EEKBOARD
 | 
					EEKBOARD_TYPE_CLIENT
 | 
				
			||||||
eekboard_eekboard_get_type
 | 
					eekboard_client_get_type
 | 
				
			||||||
EEKBOARD_EEKBOARD_CLASS
 | 
					EEKBOARD_CLIENT_CLASS
 | 
				
			||||||
EEKBOARD_IS_EEKBOARD_CLASS
 | 
					EEKBOARD_IS_CLIENT_CLASS
 | 
				
			||||||
EEKBOARD_EEKBOARD_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_EEKBOARD_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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,2 +1,4 @@
 | 
				
			|||||||
 | 
					eekboard_client_get_type
 | 
				
			||||||
eekboard_context_get_type
 | 
					eekboard_context_get_type
 | 
				
			||||||
eekboard_eekboard_get_type
 | 
					eekboard_context_service_get_type
 | 
				
			||||||
 | 
					eekboard_service_get_type
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										131
									
								
								eek/Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								eek/Makefile.am
									
									
									
									
									
								
							@ -19,13 +19,8 @@
 | 
				
			|||||||
lib_LTLIBRARIES =				\
 | 
					lib_LTLIBRARIES =				\
 | 
				
			||||||
	libeek.la				\
 | 
						libeek.la				\
 | 
				
			||||||
	libeek-gtk.la				\
 | 
						libeek-gtk.la				\
 | 
				
			||||||
	libeek-xkb.la				\
 | 
					 | 
				
			||||||
	libeek-xkl.la
 | 
						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			\
 | 
				
			||||||
	$(srcdir)/eek-element.h			\
 | 
						$(srcdir)/eek-element.h			\
 | 
				
			||||||
@ -35,6 +30,8 @@ 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		\
 | 
				
			||||||
@ -53,14 +50,17 @@ libeek_private_headers =			\
 | 
				
			|||||||
	$(srcdir)/eek-theme-node.h
 | 
						$(srcdir)/eek-theme-node.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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			\
 | 
				
			||||||
@ -86,35 +86,28 @@ libeek_marshalers_sources =			\
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
BUILT_SOURCES =					\
 | 
					BUILT_SOURCES =					\
 | 
				
			||||||
	$(libeek_keysym_sources)		\
 | 
						$(libeek_keysym_sources)		\
 | 
				
			||||||
 | 
						$(libeek_enumtypes_sources)		\
 | 
				
			||||||
	$(libeek_marshalers_sources)
 | 
						$(libeek_marshalers_sources)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_la_SOURCES =				\
 | 
					libeek_la_SOURCES =				\
 | 
				
			||||||
	$(libeek_sources)			\
 | 
						$(libeek_sources)			\
 | 
				
			||||||
 | 
						$(srcdir)/eek-enumtypes.c		\
 | 
				
			||||||
	$(srcdir)/eek-marshalers.c
 | 
						$(srcdir)/eek-marshalers.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_la_CFLAGS = $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) $(LIBCROCO_CFLAGS)
 | 
					libeek_la_CFLAGS =					\
 | 
				
			||||||
libeek_la_LIBADD = $(GIO2_LIBS) $(PANGOCAIRO_LIBS) $(LIBCROCO_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		\
 | 
				
			||||||
@ -126,52 +119,54 @@ libeek_gtk_sources =				\
 | 
				
			|||||||
	$(srcdir)/eek-gtk-renderer.c
 | 
						$(srcdir)/eek-gtk-renderer.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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 =			\
 | 
					 | 
				
			||||||
	$(srcdir)/eek-xkb-layout.h		\
 | 
					 | 
				
			||||||
	$(srcdir)/eek-xkb.h
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
libeek_xkb_sources =				\
 | 
					 | 
				
			||||||
	$(srcdir)/eek-xkb-layout.c
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
libeek_xkb_la_SOURCES = $(libeek_xkb_sources)
 | 
					 | 
				
			||||||
libeek_xkb_la_CFLAGS = $(XKB_CFLAGS) $(GTK_CFLAGS)
 | 
					 | 
				
			||||||
libeek_xkb_la_LIBADD = libeek.la $(XKB_LIBS) $(GTK_LIBS)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_xkl_public_headers =			\
 | 
					libeek_xkl_public_headers =			\
 | 
				
			||||||
	$(srcdir)/eek-xkl-layout.h		\
 | 
						$(srcdir)/eek-xkl-layout.h		\
 | 
				
			||||||
	$(srcdir)/eek-xkl.h
 | 
						$(srcdir)/eek-xkl.h			\
 | 
				
			||||||
 | 
						$(srcdir)/eek-xkb-layout.h		\
 | 
				
			||||||
 | 
						$(srcdir)/eek-xkb.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_xkl_sources =				\
 | 
					libeek_xkl_sources =				\
 | 
				
			||||||
 | 
						$(srcdir)/eek-xkb-layout.c		\
 | 
				
			||||||
	$(srcdir)/eek-xkl-layout.c
 | 
						$(srcdir)/eek-xkl-layout.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_xkl_la_SOURCES = $(libeek_xkl_sources)
 | 
					libeek_xkl_la_SOURCES = $(libeek_xkl_sources)
 | 
				
			||||||
libeek_xkl_la_CFLAGS = $(LIBXKLAVIER_CFLAGS) $(GTK_CFLAGS)
 | 
					libeek_xkl_la_CFLAGS = -DEEK_COMPILATION=1 $(LIBXKLAVIER_CFLAGS)
 | 
				
			||||||
libeek_xkl_la_LIBADD = libeek-xkb.la $(LIBXKLAVIER_LIBS) $(GTK_LIBS)
 | 
					libeek_xkl_la_LIBADD = libeek.la $(LIBXKLAVIER_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)	\
 | 
						$(srcdir)/eek-enumtypes.h		\
 | 
				
			||||||
	$(libeek_gtk_public_headers)		\
 | 
						$(libeek_gtk_public_headers)		\
 | 
				
			||||||
	$(libeek_xkb_public_headers)		\
 | 
					 | 
				
			||||||
	$(libeek_xkl_public_headers)
 | 
						$(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)		\
 | 
					 | 
				
			||||||
	$(libeek_xkl_private_headers)
 | 
						$(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) ./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) ./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) ./gen-keysym-entries.py xkeysym_keysym_entries \
 | 
				
			||||||
 | 
							< $< > $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eek-enumtypes.h: $(libeek_public_headers) eek-enumtypes.h.template
 | 
				
			||||||
 | 
						$(AM_V_GEN) $(GLIB_MKENUMS) --template 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 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
 | 
				
			||||||
@ -187,13 +182,8 @@ 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		\
 | 
					 | 
				
			||||||
	eek-xkl-$(EEK_API_VERSION).pc
 | 
						eek-xkl-$(EEK_API_VERSION).pc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ENABLE_CLUTTER
 | 
					 | 
				
			||||||
pkgconfig_DATA += eek-clutter-$(EEK_API_VERSION).pc
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CLEANFILES =
 | 
					CLEANFILES =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DISTCLEANFILES =				\
 | 
					DISTCLEANFILES =				\
 | 
				
			||||||
@ -205,6 +195,8 @@ EXTRA_DIST =					\
 | 
				
			|||||||
	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-enumtypes.h.template		\
 | 
				
			||||||
 | 
						eek-enumtypes.c.template		\
 | 
				
			||||||
	eek-marshalers.list
 | 
						eek-marshalers.list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-include $(INTROSPECTION_MAKEFILE)
 | 
					-include $(INTROSPECTION_MAKEFILE)
 | 
				
			||||||
@ -215,34 +207,21 @@ 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 = --strip-prefix=Eek --pkg=glib-2.0 --pkg-export=eek-$(EEK_API_VERSION)
 | 
				
			||||||
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) $(srcdir)/eek-enumtypes.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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_SCANNERFLAGS = --pkg-export=eek-gtk-$(EEK_API_VERSION)
 | 
				
			||||||
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Gtk-@GTK_API_VERSION@ Eek@EEK_LIBRARY_SUFFIX@
 | 
					EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Gtk-@GTK_API_VERSION@ Eek@EEK_LIBRARY_SUFFIX@
 | 
				
			||||||
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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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_INCLUDES = GObject-2.0 Eek@EEK_LIBRARY_SUFFIX@
 | 
				
			||||||
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Clutter-1.0 Eek@EEK_LIBRARY_SUFFIX@
 | 
					 | 
				
			||||||
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_clutter_la_CFLAGS)
 | 
					 | 
				
			||||||
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-clutter.la
 | 
					 | 
				
			||||||
EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_clutter_sources) $(libeek_clutter_public_headers)
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EekXkb@EEK_LIBRARY_SUFFIX@.gir: libeek-xkb.la Eek@EEK_LIBRARY_SUFFIX@.gir
 | 
					 | 
				
			||||||
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Eek@EEK_LIBRARY_SUFFIX@
 | 
					 | 
				
			||||||
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkb_la_CFLAGS)
 | 
					 | 
				
			||||||
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkb.la
 | 
					 | 
				
			||||||
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_CFLAGS = $(libeek_xkl_la_CFLAGS)
 | 
				
			||||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkl.la
 | 
					EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkl.la
 | 
				
			||||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_sources) $(libeek_xkl_public_headers)
 | 
					EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_sources) $(libeek_xkl_public_headers)
 | 
				
			||||||
@ -250,14 +229,8 @@ EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_sources) $(libeek_xkl_publ
 | 
				
			|||||||
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		\
 | 
					 | 
				
			||||||
	EekXkl@EEK_LIBRARY_SUFFIX@.gir
 | 
						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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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@
 | 
				
			||||||
 | 
				
			|||||||
@ -1,30 +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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
prefix=@prefix@
 | 
					 | 
				
			||||||
exec_prefix=@exec_prefix@
 | 
					 | 
				
			||||||
libdir=@libdir@
 | 
					 | 
				
			||||||
includedir=@includedir@
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Name: libeek-clutter
 | 
					 | 
				
			||||||
Description: A Library to Create Keyboard-like UI (Clutter Support)
 | 
					 | 
				
			||||||
URL: http://ueno.github.com/eekboard/
 | 
					 | 
				
			||||||
Version: @VERSION@
 | 
					 | 
				
			||||||
Requires: eek-@EEK_API_VERSION@ clutter-1.0
 | 
					 | 
				
			||||||
Libs: -L${libdir} -leek-clutter
 | 
					 | 
				
			||||||
Cflags: -I${includedir}/eek-@EEK_API_VERSION@
 | 
					 | 
				
			||||||
@ -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);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -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 */
 | 
					 | 
				
			||||||
@ -1,272 +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
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef HAVE_CONFIG_H
 | 
					 | 
				
			||||||
#include "config.h"
 | 
					 | 
				
			||||||
#endif  /* HAVE_CONFIG_H */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <string.h>
 | 
					 | 
				
			||||||
#include <gdk-pixbuf/gdk-pixbuf.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;
 | 
					 | 
				
			||||||
    EekTheme *theme;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (priv->theme)
 | 
					 | 
				
			||||||
        eek_renderer_set_theme (EEK_RENDERER(priv->renderer), priv->theme);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    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;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (priv->theme) {
 | 
					 | 
				
			||||||
        g_object_unref (priv->theme);
 | 
					 | 
				
			||||||
        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);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
eek_clutter_keyboard_set_theme (EekClutterKeyboard *keyboard,
 | 
					 | 
				
			||||||
                                EekTheme           *theme)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekClutterKeyboardPrivate *priv;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_return_if_fail (EEK_IS_CLUTTER_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    g_return_if_fail (EEK_IS_THEME(theme));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
    priv->theme = g_object_ref (theme);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -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_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);
 | 
					 | 
				
			||||||
void          eek_clutter_keyboard_set_theme (EekClutterKeyboard *keyboard,
 | 
					 | 
				
			||||||
                                              EekTheme           *theme);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
G_END_DECLS
 | 
					 | 
				
			||||||
#endif  /* EEK_CLUTTER_KEYBOARD_H */
 | 
					 | 
				
			||||||
@ -1,235 +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 <string.h>
 | 
					 | 
				
			||||||
#include <gdk-pixbuf/gdk-pixbuf.h>
 | 
					 | 
				
			||||||
#include <cogl/cogl.h>
 | 
					 | 
				
			||||||
#include <cogl/cogl-pango.h>
 | 
					 | 
				
			||||||
#include <clutter/clutter.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_finalize (GObject *object)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekClutterRendererPrivate *priv = EEK_CLUTTER_RENDERER_GET_PRIVATE(object);
 | 
					 | 
				
			||||||
    g_hash_table_destroy (priv->outline_texture_cache);
 | 
					 | 
				
			||||||
    G_OBJECT_CLASS (eek_clutter_renderer_parent_class)->finalize (object);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    gobject_class->finalize = eek_clutter_renderer_finalize;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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, };
 | 
					 | 
				
			||||||
    EekColor foreground;
 | 
					 | 
				
			||||||
    CoglColor color;
 | 
					 | 
				
			||||||
    ClutterGeometry geom;
 | 
					 | 
				
			||||||
    gulong oref;
 | 
					 | 
				
			||||||
    EekKeyboard *keyboard;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_assert (EEK_IS_CLUTTER_RENDERER(renderer));
 | 
					 | 
				
			||||||
    g_assert (CLUTTER_IS_ACTOR(actor));
 | 
					 | 
				
			||||||
    g_assert (EEK_IS_KEY(key));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    oref = eek_key_get_oref (key);
 | 
					 | 
				
			||||||
    g_object_get (renderer, "keyboard", &keyboard, NULL);
 | 
					 | 
				
			||||||
    outline = eek_keyboard_get_outline (keyboard, oref);
 | 
					 | 
				
			||||||
    g_object_unref (keyboard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv = EEK_CLUTTER_RENDERER_GET_PRIVATE(renderer);
 | 
					 | 
				
			||||||
    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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    eek_renderer_get_foreground_color (EEK_RENDERER(renderer),
 | 
					 | 
				
			||||||
                                       EEK_ELEMENT(key),
 | 
					 | 
				
			||||||
                                       &foreground);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cogl_color_set_from_4f (&color,
 | 
					 | 
				
			||||||
                            foreground.red,
 | 
					 | 
				
			||||||
                            foreground.green,
 | 
					 | 
				
			||||||
                            foreground.blue,
 | 
					 | 
				
			||||||
                            foreground.alpha);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -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 */
 | 
					 | 
				
			||||||
@ -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);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -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 */
 | 
					 | 
				
			||||||
@ -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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -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.
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,6 @@
 | 
				
			|||||||
#include "eek-element.h"
 | 
					#include "eek-element.h"
 | 
				
			||||||
#include "eek-container.h"
 | 
					#include "eek-container.h"
 | 
				
			||||||
#include "eek-marshalers.h"
 | 
					#include "eek-marshalers.h"
 | 
				
			||||||
#include "eek-serializable.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
@ -53,11 +52,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 (EekElement, eek_element, G_TYPE_OBJECT);
 | 
				
			||||||
 | 
					 | 
				
			||||||
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (EekElement, eek_element, G_TYPE_OBJECT,
 | 
					 | 
				
			||||||
                                  G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE,
 | 
					 | 
				
			||||||
                                                         eek_serializable_iface_init));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#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))
 | 
				
			||||||
@ -72,155 +67,6 @@ struct _EekElementPrivate
 | 
				
			|||||||
    gint level;
 | 
					    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
 | 
					 | 
				
			||||||
_g_variant_get_bounds (GVariant *variant, EekBounds *bounds)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 0, "d", &bounds->x);
 | 
					 | 
				
			||||||
    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
 | 
					 | 
				
			||||||
eek_element_real_set_symbol_index (EekElement *self,
 | 
					 | 
				
			||||||
                                   gint        group,
 | 
					 | 
				
			||||||
                                   gint        level)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (priv->group != group || priv->level != level) {
 | 
					 | 
				
			||||||
        priv->group = group;
 | 
					 | 
				
			||||||
        priv->level = level;
 | 
					 | 
				
			||||||
        g_signal_emit_by_name (self, "symbol-index-changed", group, level);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_element_real_get_symbol_index (EekElement *self,
 | 
					 | 
				
			||||||
                                   gint       *group,
 | 
					 | 
				
			||||||
                                   gint       *level)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekElementPrivate *priv = EEK_ELEMENT_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (group)
 | 
					 | 
				
			||||||
        *group = priv->group;
 | 
					 | 
				
			||||||
    if (level)
 | 
					 | 
				
			||||||
        *level = priv->level;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_element_real_symbol_index_changed (EekElement *self,
 | 
					eek_element_real_symbol_index_changed (EekElement *self,
 | 
				
			||||||
                                       gint        group,
 | 
					                                       gint        group,
 | 
				
			||||||
@ -244,22 +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:
 | 
					    case PROP_GROUP:
 | 
				
			||||||
        eek_element_set_group (EEK_ELEMENT(object),
 | 
					        eek_element_set_group (element, g_value_get_int (value));
 | 
				
			||||||
                               g_value_get_int (value));
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_LEVEL:
 | 
					    case PROP_LEVEL:
 | 
				
			||||||
        eek_element_set_level (EEK_ELEMENT(object),
 | 
					        eek_element_set_level (element, g_value_get_int (value));
 | 
				
			||||||
                               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;
 | 
				
			||||||
@ -272,21 +117,22 @@ 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:
 | 
					    case PROP_GROUP:
 | 
				
			||||||
        g_value_set_int (value, eek_element_get_group (EEK_ELEMENT(object)));
 | 
					        g_value_set_int (value, eek_element_get_group (element));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_LEVEL:
 | 
					    case PROP_LEVEL:
 | 
				
			||||||
        g_value_set_int (value, eek_element_get_level (EEK_ELEMENT(object)));
 | 
					        g_value_set_int (value, eek_element_get_level (element));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
					        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
				
			||||||
@ -303,15 +149,6 @@ 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;
 | 
					 | 
				
			||||||
    klass->get_parent = eek_element_real_get_parent;
 | 
					 | 
				
			||||||
    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;
 | 
					 | 
				
			||||||
    klass->set_symbol_index = eek_element_real_set_symbol_index;
 | 
					 | 
				
			||||||
    klass->get_symbol_index = eek_element_real_get_symbol_index;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* signals */
 | 
					    /* signals */
 | 
				
			||||||
    klass->symbol_index_changed = eek_element_real_symbol_index_changed;
 | 
					    klass->symbol_index_changed = eek_element_real_symbol_index_changed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -404,8 +241,6 @@ 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;
 | 
					 | 
				
			||||||
    memset (&priv->bounds, 0, sizeof priv->bounds);
 | 
					 | 
				
			||||||
    priv->group = -1;
 | 
					    priv->group = -1;
 | 
				
			||||||
    priv->level = -1;
 | 
					    priv->level = -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -413,7 +248,7 @@ eek_element_init (EekElement *self)
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * 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.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -422,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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -437,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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -452,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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -466,7 +315,7 @@ G_CONST_RETURN 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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -483,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
 | 
				
			||||||
@ -500,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));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -585,8 +435,18 @@ eek_element_set_symbol_index (EekElement *element,
 | 
				
			|||||||
                              gint        group,
 | 
					                              gint        group,
 | 
				
			||||||
                              gint        level)
 | 
					                              gint        level)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    gboolean emit_signal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_return_if_fail (EEK_IS_ELEMENT(element));
 | 
					    g_return_if_fail (EEK_IS_ELEMENT(element));
 | 
				
			||||||
    EEK_ELEMENT_GET_CLASS(element)->set_symbol_index (element, group, level);
 | 
					
 | 
				
			||||||
 | 
					    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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -604,8 +464,11 @@ eek_element_get_symbol_index (EekElement *element,
 | 
				
			|||||||
                              gint       *level)
 | 
					                              gint       *level)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_if_fail (EEK_IS_ELEMENT(element));
 | 
					    g_return_if_fail (EEK_IS_ELEMENT(element));
 | 
				
			||||||
    g_return_if_fail (group || level);
 | 
					    g_return_if_fail (group != NULL || level != NULL);
 | 
				
			||||||
    EEK_ELEMENT_GET_CLASS(element)->get_symbol_index (element, group, level);
 | 
					    if (group != NULL)
 | 
				
			||||||
 | 
					        *group = eek_element_get_group (element);
 | 
				
			||||||
 | 
					    if (level != NULL)
 | 
				
			||||||
 | 
					        *level = eek_element_get_level (element);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -622,10 +485,13 @@ void
 | 
				
			|||||||
eek_element_set_group (EekElement *element,
 | 
					eek_element_set_group (EekElement *element,
 | 
				
			||||||
                       gint        group)
 | 
					                       gint        group)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    gint level;
 | 
					    g_return_if_fail (EEK_IS_ELEMENT(element));
 | 
				
			||||||
 | 
					    if (element->priv->group != group) {
 | 
				
			||||||
    level = eek_element_get_level (element);
 | 
					        element->priv->group = group;
 | 
				
			||||||
    eek_element_set_symbol_index (element, group, level);
 | 
					        g_object_notify (G_OBJECT(element), "group");
 | 
				
			||||||
 | 
					        g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0,
 | 
				
			||||||
 | 
					                       group, element->priv->level);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -642,10 +508,13 @@ void
 | 
				
			|||||||
eek_element_set_level (EekElement *element,
 | 
					eek_element_set_level (EekElement *element,
 | 
				
			||||||
                       gint        level)
 | 
					                       gint        level)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    gint group;
 | 
					    g_return_if_fail (EEK_IS_ELEMENT(element));
 | 
				
			||||||
 | 
					    if (element->priv->level != level) {
 | 
				
			||||||
    group = eek_element_get_group (element);
 | 
					        element->priv->level = level;
 | 
				
			||||||
    eek_element_set_symbol_index (element, group, level);
 | 
					        g_object_notify (G_OBJECT(element), "level");
 | 
				
			||||||
 | 
					        g_signal_emit (element, signals[SYMBOL_INDEX_CHANGED], 0,
 | 
				
			||||||
 | 
					                       element->priv->group, level);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -660,10 +529,8 @@ eek_element_set_level (EekElement *element,
 | 
				
			|||||||
gint
 | 
					gint
 | 
				
			||||||
eek_element_get_group (EekElement *element)
 | 
					eek_element_get_group (EekElement *element)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    gint group;
 | 
					    g_return_val_if_fail (EEK_IS_ELEMENT(element), -1);
 | 
				
			||||||
 | 
					    return element->priv->group;
 | 
				
			||||||
    eek_element_get_symbol_index (element, &group, NULL);
 | 
					 | 
				
			||||||
    return group;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -678,8 +545,6 @@ eek_element_get_group (EekElement *element)
 | 
				
			|||||||
gint
 | 
					gint
 | 
				
			||||||
eek_element_get_level (EekElement *element)
 | 
					eek_element_get_level (EekElement *element)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    gint level;
 | 
					    g_return_val_if_fail (EEK_IS_ELEMENT(element), -1);
 | 
				
			||||||
 | 
					    return element->priv->level;
 | 
				
			||||||
    eek_element_get_symbol_index (element, NULL, &level);
 | 
					 | 
				
			||||||
    return level;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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,35 +51,11 @@ 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);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void                  (* set_bounds)           (EekElement  *self,
 | 
					 | 
				
			||||||
                                                    EekBounds   *bounds);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void                  (* get_bounds)           (EekElement  *self,
 | 
					 | 
				
			||||||
                                                    EekBounds   *bounds);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void                  (* set_symbol_index)     (EekElement  *self,
 | 
					 | 
				
			||||||
                                                    gint         group,
 | 
					 | 
				
			||||||
                                                    gint         level);
 | 
					 | 
				
			||||||
    void                  (* get_symbol_index)     (EekElement  *self,
 | 
					 | 
				
			||||||
                                                    gint        *group,
 | 
					 | 
				
			||||||
                                                    gint        *level);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* signals */
 | 
					    /* signals */
 | 
				
			||||||
    void                  (* symbol_index_changed) (EekElement  *self,
 | 
					    void                  (* symbol_index_changed) (EekElement  *self,
 | 
				
			||||||
                                                    gint         group,
 | 
					                                                    gint         group,
 | 
				
			||||||
                                                    gint         level);
 | 
					                                                    gint         level);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /*< private >*/
 | 
					 | 
				
			||||||
    /* padding */
 | 
					 | 
				
			||||||
    gpointer pdummy[21];
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType                 eek_element_get_type              (void) G_GNUC_CONST;
 | 
					GType                 eek_element_get_type              (void) G_GNUC_CONST;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										36
									
								
								eek/eek-enumtypes.c.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								eek/eek-enumtypes.c.template
									
									
									
									
									
										Normal 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 ***/
 | 
				
			||||||
							
								
								
									
										29
									
								
								eek/eek-enumtypes.h.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								eek/eek-enumtypes.h.template
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					/*** BEGIN file-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(__EEK_H_INSIDE__) && !defined(EEK_COMPILATION)
 | 
				
			||||||
 | 
					#error "Only <eek/eek.h> can be included directly."
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __EEK_ENUMTYPES_H__
 | 
				
			||||||
 | 
					#define __EEK_ENUMTYPES_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <glib-object.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					/*** END file-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN file-production ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* enumerations from "@filename@" */
 | 
				
			||||||
 | 
					/*** END file-production ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN value-header ***/
 | 
				
			||||||
 | 
					GType @enum_name@_get_type (void) G_GNUC_CONST;
 | 
				
			||||||
 | 
					#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
 | 
				
			||||||
 | 
					/*** END value-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN file-tail ***/
 | 
				
			||||||
 | 
					G_END_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __EEK_ENUMTYPES_H__ */
 | 
				
			||||||
 | 
					/*** END file-tail ***/
 | 
				
			||||||
@ -23,7 +23,7 @@ includedir=@includedir@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Name: libeek-gtk
 | 
					Name: libeek-gtk
 | 
				
			||||||
Description: A Library to Create Keyboard-like UI (GTK Support)
 | 
					Description: A Library to Create Keyboard-like UI (GTK Support)
 | 
				
			||||||
URL: http://ueno.github.com/eekboard/
 | 
					URL: http://fedorahosted.org/eekboard/
 | 
				
			||||||
Version: @VERSION@
 | 
					Version: @VERSION@
 | 
				
			||||||
Requires: eek-@EEK_API_VERSION@ gtk+-@GTK_API_VERSION@
 | 
					Requires: eek-@EEK_API_VERSION@ gtk+-@GTK_API_VERSION@
 | 
				
			||||||
Libs: -L${libdir} -leek-gtk
 | 
					Libs: -L${libdir} -leek-gtk
 | 
				
			||||||
 | 
				
			|||||||
@ -27,6 +27,10 @@
 | 
				
			|||||||
#include "config.h"
 | 
					#include "config.h"
 | 
				
			||||||
#endif  /* HAVE_CONFIG_H */
 | 
					#endif  /* HAVE_CONFIG_H */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef HAVE_LIBCANBERRA
 | 
				
			||||||
 | 
					#include <canberra-gtk.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "eek-gtk-keyboard.h"
 | 
					#include "eek-gtk-keyboard.h"
 | 
				
			||||||
@ -57,9 +61,11 @@ struct _EekGtkKeyboardPrivate
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekRenderer *renderer;
 | 
					    EekRenderer *renderer;
 | 
				
			||||||
    EekKeyboard *keyboard;
 | 
					    EekKeyboard *keyboard;
 | 
				
			||||||
    EekKey *dragged_key;
 | 
					 | 
				
			||||||
    gulong key_pressed_handler;
 | 
					    gulong key_pressed_handler;
 | 
				
			||||||
    gulong key_released_handler;
 | 
					    gulong key_released_handler;
 | 
				
			||||||
 | 
					    gulong key_locked_handler;
 | 
				
			||||||
 | 
					    gulong key_unlocked_handler;
 | 
				
			||||||
 | 
					    gulong key_cancelled_handler;
 | 
				
			||||||
    gulong symbol_index_changed_handler;
 | 
					    gulong symbol_index_changed_handler;
 | 
				
			||||||
    EekTheme *theme;
 | 
					    EekTheme *theme;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -71,12 +77,25 @@ static void       on_key_pressed          (EekKeyboard *keyboard,
 | 
				
			|||||||
static void       on_key_released         (EekKeyboard *keyboard,
 | 
					static void       on_key_released         (EekKeyboard *keyboard,
 | 
				
			||||||
                                           EekKey      *key,
 | 
					                                           EekKey      *key,
 | 
				
			||||||
                                           gpointer     user_data);
 | 
					                                           gpointer     user_data);
 | 
				
			||||||
 | 
					static void       on_key_locked          (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
					                                           EekKey      *key,
 | 
				
			||||||
 | 
					                                           gpointer     user_data);
 | 
				
			||||||
 | 
					static void       on_key_unlocked         (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
					                                           EekKey      *key,
 | 
				
			||||||
 | 
					                                           gpointer     user_data);
 | 
				
			||||||
 | 
					static void       on_key_cancelled        (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
					                                           EekKey      *key,
 | 
				
			||||||
 | 
					                                           gpointer     user_data);
 | 
				
			||||||
static void       on_symbol_index_changed (EekKeyboard *keyboard,
 | 
					static void       on_symbol_index_changed (EekKeyboard *keyboard,
 | 
				
			||||||
                                           gint         group,
 | 
					                                           gint         group,
 | 
				
			||||||
                                           gint         level,
 | 
					                                           gint         level,
 | 
				
			||||||
                                           gpointer     user_data);
 | 
					                                           gpointer     user_data);
 | 
				
			||||||
static void       render_pressed_key      (GtkWidget   *widget,
 | 
					static void       render_pressed_key      (GtkWidget   *widget,
 | 
				
			||||||
                                           EekKey      *key);
 | 
					                                           EekKey      *key);
 | 
				
			||||||
 | 
					static void       render_locked_key       (GtkWidget   *widget,
 | 
				
			||||||
 | 
					                                           EekKey      *key);
 | 
				
			||||||
 | 
					static void       render_released_key     (GtkWidget   *widget,
 | 
				
			||||||
 | 
					                                           EekKey      *key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_gtk_keyboard_real_realize (GtkWidget      *self)
 | 
					eek_gtk_keyboard_real_realize (GtkWidget      *self)
 | 
				
			||||||
@ -87,7 +106,8 @@ eek_gtk_keyboard_real_realize (GtkWidget      *self)
 | 
				
			|||||||
                           GDK_KEY_PRESS_MASK |
 | 
					                           GDK_KEY_PRESS_MASK |
 | 
				
			||||||
                           GDK_KEY_RELEASE_MASK |
 | 
					                           GDK_KEY_RELEASE_MASK |
 | 
				
			||||||
                           GDK_BUTTON_PRESS_MASK |
 | 
					                           GDK_BUTTON_PRESS_MASK |
 | 
				
			||||||
                           GDK_BUTTON_RELEASE_MASK);
 | 
					                           GDK_BUTTON_RELEASE_MASK |
 | 
				
			||||||
 | 
					                           GDK_BUTTON_MOTION_MASK);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GTK_WIDGET_CLASS (eek_gtk_keyboard_parent_class)->realize (self);
 | 
					    GTK_WIDGET_CLASS (eek_gtk_keyboard_parent_class)->realize (self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -99,6 +119,7 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
 | 
				
			|||||||
    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
    GtkAllocation allocation;
 | 
					    GtkAllocation allocation;
 | 
				
			||||||
    EekColor background;
 | 
					    EekColor background;
 | 
				
			||||||
 | 
					    GList *list, *head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    gtk_widget_get_allocation (self, &allocation);
 | 
					    gtk_widget_get_allocation (self, &allocation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -120,11 +141,11 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
 | 
				
			|||||||
        style = gtk_widget_get_style (self);
 | 
					        style = gtk_widget_get_style (self);
 | 
				
			||||||
        state = gtk_widget_get_state (self);
 | 
					        state = gtk_widget_get_state (self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        color = color_from_gdk_color (&style->fg[state]);
 | 
					        color = color_from_gdk_color (&style->text[state]);
 | 
				
			||||||
        eek_renderer_set_default_foreground_color (priv->renderer, color);
 | 
					        eek_renderer_set_default_foreground_color (priv->renderer, color);
 | 
				
			||||||
        eek_color_free (color);
 | 
					        eek_color_free (color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        color = color_from_gdk_color (&style->bg[state]);
 | 
					        color = color_from_gdk_color (&style->base[state]);
 | 
				
			||||||
        eek_renderer_set_default_background_color (priv->renderer, color);
 | 
					        eek_renderer_set_default_background_color (priv->renderer, color);
 | 
				
			||||||
        eek_color_free (color);
 | 
					        eek_color_free (color);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -142,29 +163,23 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
					    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* redraw dragged key */
 | 
					    /* redraw pressed key */
 | 
				
			||||||
    if (priv->dragged_key)
 | 
					    list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
				
			||||||
        render_pressed_key (self, priv->dragged_key);
 | 
					    for (head = list; head; head = g_list_next (head)) {
 | 
				
			||||||
 | 
					        render_pressed_key (self, head->data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    g_list_free (list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* redraw locked key */
 | 
				
			||||||
 | 
					    list = eek_keyboard_get_locked_keys (priv->keyboard);
 | 
				
			||||||
 | 
					    for (head = list; head; head = g_list_next (head)) {
 | 
				
			||||||
 | 
					        render_locked_key (self, ((EekModifierKey *)head->data)->key);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    g_list_free (list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					    return FALSE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !GTK_CHECK_VERSION (2, 91, 2)
 | 
					 | 
				
			||||||
static gboolean
 | 
					 | 
				
			||||||
eek_gtk_keyboard_real_expose_event (GtkWidget      *self,
 | 
					 | 
				
			||||||
                                    GdkEventExpose *event)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    gboolean retval;
 | 
					 | 
				
			||||||
    cairo_t *cr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (self)));
 | 
					 | 
				
			||||||
    retval = eek_gtk_keyboard_real_draw (self, cr);
 | 
					 | 
				
			||||||
    cairo_destroy (cr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return retval;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif  /* !GTK_CHECK_VERSION (2, 91, 2) */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_gtk_keyboard_real_size_allocate (GtkWidget     *self,
 | 
					eek_gtk_keyboard_real_size_allocate (GtkWidget     *self,
 | 
				
			||||||
                                     GtkAllocation *allocation)
 | 
					                                     GtkAllocation *allocation)
 | 
				
			||||||
@ -190,14 +205,8 @@ eek_gtk_keyboard_real_button_press_event (GtkWidget      *self,
 | 
				
			|||||||
    key = eek_renderer_find_key_by_position (priv->renderer,
 | 
					    key = eek_renderer_find_key_by_position (priv->renderer,
 | 
				
			||||||
                                             (gdouble)event->x,
 | 
					                                             (gdouble)event->x,
 | 
				
			||||||
                                             (gdouble)event->y);
 | 
					                                             (gdouble)event->y);
 | 
				
			||||||
 | 
					    if (key)
 | 
				
			||||||
    if (priv->dragged_key && priv->dragged_key != key)
 | 
					 | 
				
			||||||
        g_signal_emit_by_name (priv->dragged_key, "released", priv->keyboard);
 | 
					 | 
				
			||||||
    if (key && !eek_key_is_pressed (key)) {
 | 
					 | 
				
			||||||
        priv->dragged_key = key;
 | 
					 | 
				
			||||||
        g_signal_emit_by_name (key, "pressed", priv->keyboard);
 | 
					        g_signal_emit_by_name (key, "pressed", priv->keyboard);
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -206,15 +215,66 @@ eek_gtk_keyboard_real_button_release_event (GtkWidget      *self,
 | 
				
			|||||||
                                            GdkEventButton *event)
 | 
					                                            GdkEventButton *event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					    GList *list, *head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (priv->dragged_key) {
 | 
					    list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
				
			||||||
        g_signal_emit_by_name (priv->dragged_key, "released", priv->keyboard);
 | 
					    for (head = list; head; head = g_list_next (head))
 | 
				
			||||||
        priv->dragged_key = NULL;
 | 
					        g_signal_emit_by_name (head->data, "released", priv->keyboard);
 | 
				
			||||||
    }
 | 
					    g_list_free (list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static gboolean
 | 
				
			||||||
 | 
					eek_gtk_keyboard_real_motion_notify_event (GtkWidget      *self,
 | 
				
			||||||
 | 
					                                           GdkEventMotion *event)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					    EekKey *key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    key = eek_renderer_find_key_by_position (priv->renderer,
 | 
				
			||||||
 | 
					                                             (gdouble)event->x,
 | 
				
			||||||
 | 
					                                             (gdouble)event->y);
 | 
				
			||||||
 | 
					    if (key) {
 | 
				
			||||||
 | 
					        GList *list, *head;
 | 
				
			||||||
 | 
					        gboolean found = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
				
			||||||
 | 
					        for (head = list; head; head = g_list_next (head)) {
 | 
				
			||||||
 | 
					            if (head->data == key)
 | 
				
			||||||
 | 
					                found = TRUE;
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                g_signal_emit_by_name (head->data, "cancelled", priv->keyboard);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        g_list_free (list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!found)
 | 
				
			||||||
 | 
					            g_signal_emit_by_name (key, "pressed", priv->keyboard);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					eek_gtk_keyboard_real_unmap (GtkWidget *self)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (priv->keyboard) {
 | 
				
			||||||
 | 
					        GList *list, *head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Make a copy of HEAD before sending "released" signal on
 | 
				
			||||||
 | 
					           elements, so that the default handler of
 | 
				
			||||||
 | 
					           EekKeyboard::key-released signal can remove elements from its
 | 
				
			||||||
 | 
					           internal copy */
 | 
				
			||||||
 | 
					        list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
				
			||||||
 | 
					        for (head = list; head; head = g_list_next (head))
 | 
				
			||||||
 | 
					            g_signal_emit_by_name (head->data, "released", priv->keyboard);
 | 
				
			||||||
 | 
					        g_list_free (list);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GTK_WIDGET_CLASS (eek_gtk_keyboard_parent_class)->unmap (self);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_gtk_keyboard_set_keyboard (EekGtkKeyboard *self,
 | 
					eek_gtk_keyboard_set_keyboard (EekGtkKeyboard *self,
 | 
				
			||||||
                               EekKeyboard    *keyboard)
 | 
					                               EekKeyboard    *keyboard)
 | 
				
			||||||
@ -228,6 +288,15 @@ eek_gtk_keyboard_set_keyboard (EekGtkKeyboard *self,
 | 
				
			|||||||
    priv->key_released_handler =
 | 
					    priv->key_released_handler =
 | 
				
			||||||
        g_signal_connect (priv->keyboard, "key-released",
 | 
					        g_signal_connect (priv->keyboard, "key-released",
 | 
				
			||||||
                          G_CALLBACK(on_key_released), self);
 | 
					                          G_CALLBACK(on_key_released), self);
 | 
				
			||||||
 | 
					    priv->key_locked_handler =
 | 
				
			||||||
 | 
					        g_signal_connect (priv->keyboard, "key-locked",
 | 
				
			||||||
 | 
					                          G_CALLBACK(on_key_locked), self);
 | 
				
			||||||
 | 
					    priv->key_unlocked_handler =
 | 
				
			||||||
 | 
					        g_signal_connect (priv->keyboard, "key-unlocked",
 | 
				
			||||||
 | 
					                          G_CALLBACK(on_key_unlocked), self);
 | 
				
			||||||
 | 
					    priv->key_cancelled_handler =
 | 
				
			||||||
 | 
					        g_signal_connect (priv->keyboard, "key-cancelled",
 | 
				
			||||||
 | 
					                          G_CALLBACK(on_key_cancelled), self);
 | 
				
			||||||
    priv->symbol_index_changed_handler =
 | 
					    priv->symbol_index_changed_handler =
 | 
				
			||||||
        g_signal_connect (priv->keyboard, "symbol-index-changed",
 | 
					        g_signal_connect (priv->keyboard, "symbol-index-changed",
 | 
				
			||||||
                          G_CALLBACK(on_symbol_index_changed), self);
 | 
					                          G_CALLBACK(on_symbol_index_changed), self);
 | 
				
			||||||
@ -247,9 +316,7 @@ eek_gtk_keyboard_set_property (GObject      *object,
 | 
				
			|||||||
        eek_gtk_keyboard_set_keyboard (EEK_GTK_KEYBOARD(object), keyboard);
 | 
					        eek_gtk_keyboard_set_keyboard (EEK_GTK_KEYBOARD(object), keyboard);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_set_property (object,
 | 
					        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
				
			||||||
                               g_param_spec_get_name (pspec),
 | 
					 | 
				
			||||||
                               value);
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -273,17 +340,30 @@ eek_gtk_keyboard_dispose (GObject *object)
 | 
				
			|||||||
                                           priv->key_released_handler))
 | 
					                                           priv->key_released_handler))
 | 
				
			||||||
            g_signal_handler_disconnect (priv->keyboard,
 | 
					            g_signal_handler_disconnect (priv->keyboard,
 | 
				
			||||||
                                         priv->key_released_handler);
 | 
					                                         priv->key_released_handler);
 | 
				
			||||||
 | 
					        if (g_signal_handler_is_connected (priv->keyboard,
 | 
				
			||||||
 | 
					                                           priv->key_locked_handler))
 | 
				
			||||||
 | 
					            g_signal_handler_disconnect (priv->keyboard,
 | 
				
			||||||
 | 
					                                         priv->key_locked_handler);
 | 
				
			||||||
 | 
					        if (g_signal_handler_is_connected (priv->keyboard,
 | 
				
			||||||
 | 
					                                           priv->key_unlocked_handler))
 | 
				
			||||||
 | 
					            g_signal_handler_disconnect (priv->keyboard,
 | 
				
			||||||
 | 
					                                         priv->key_unlocked_handler);
 | 
				
			||||||
 | 
					        if (g_signal_handler_is_connected (priv->keyboard,
 | 
				
			||||||
 | 
					                                           priv->key_cancelled_handler))
 | 
				
			||||||
 | 
					            g_signal_handler_disconnect (priv->keyboard,
 | 
				
			||||||
 | 
					                                         priv->key_cancelled_handler);
 | 
				
			||||||
        if (g_signal_handler_is_connected (priv->keyboard,
 | 
					        if (g_signal_handler_is_connected (priv->keyboard,
 | 
				
			||||||
                                           priv->symbol_index_changed_handler))
 | 
					                                           priv->symbol_index_changed_handler))
 | 
				
			||||||
            g_signal_handler_disconnect (priv->keyboard,
 | 
					            g_signal_handler_disconnect (priv->keyboard,
 | 
				
			||||||
                                         priv->symbol_index_changed_handler);
 | 
					                                         priv->symbol_index_changed_handler);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
        if (priv->dragged_key) {
 | 
					        GList *list, *head;
 | 
				
			||||||
            g_signal_emit_by_name (priv->dragged_key,
 | 
					
 | 
				
			||||||
                                   "released",
 | 
					        list = eek_keyboard_get_pressed_keys (priv->keyboard);
 | 
				
			||||||
                                   priv->keyboard);
 | 
					        for (head = list; head; head = g_list_next (head)) {
 | 
				
			||||||
            priv->dragged_key = NULL;
 | 
					            g_signal_emit_by_name (head->data, "released", priv->keyboard);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        g_list_free (list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        g_object_unref (priv->keyboard);
 | 
					        g_object_unref (priv->keyboard);
 | 
				
			||||||
        priv->keyboard = NULL;
 | 
					        priv->keyboard = NULL;
 | 
				
			||||||
@ -308,16 +388,15 @@ eek_gtk_keyboard_class_init (EekGtkKeyboardClass *klass)
 | 
				
			|||||||
                              sizeof (EekGtkKeyboardPrivate));
 | 
					                              sizeof (EekGtkKeyboardPrivate));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    widget_class->realize = eek_gtk_keyboard_real_realize;
 | 
					    widget_class->realize = eek_gtk_keyboard_real_realize;
 | 
				
			||||||
#if GTK_CHECK_VERSION (2, 91, 2)
 | 
					    widget_class->unmap = eek_gtk_keyboard_real_unmap;
 | 
				
			||||||
    widget_class->draw = eek_gtk_keyboard_real_draw;
 | 
					    widget_class->draw = eek_gtk_keyboard_real_draw;
 | 
				
			||||||
#else  /* GTK_CHECK_VERSION (2, 91, 2) */
 | 
					 | 
				
			||||||
    widget_class->expose_event = eek_gtk_keyboard_real_expose_event;
 | 
					 | 
				
			||||||
#endif  /* !GTK_CHECK_VERSION (2, 91, 2) */
 | 
					 | 
				
			||||||
    widget_class->size_allocate = eek_gtk_keyboard_real_size_allocate;
 | 
					    widget_class->size_allocate = eek_gtk_keyboard_real_size_allocate;
 | 
				
			||||||
    widget_class->button_press_event =
 | 
					    widget_class->button_press_event =
 | 
				
			||||||
        eek_gtk_keyboard_real_button_press_event;
 | 
					        eek_gtk_keyboard_real_button_press_event;
 | 
				
			||||||
    widget_class->button_release_event =
 | 
					    widget_class->button_release_event =
 | 
				
			||||||
        eek_gtk_keyboard_real_button_release_event;
 | 
					        eek_gtk_keyboard_real_button_release_event;
 | 
				
			||||||
 | 
					    widget_class->motion_notify_event =
 | 
				
			||||||
 | 
					        eek_gtk_keyboard_real_motion_notify_event;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    gobject_class->set_property = eek_gtk_keyboard_set_property;
 | 
					    gobject_class->set_property = eek_gtk_keyboard_set_property;
 | 
				
			||||||
    gobject_class->dispose = eek_gtk_keyboard_dispose;
 | 
					    gobject_class->dispose = eek_gtk_keyboard_dispose;
 | 
				
			||||||
@ -335,12 +414,7 @@ eek_gtk_keyboard_class_init (EekGtkKeyboardClass *klass)
 | 
				
			|||||||
static void
 | 
					static void
 | 
				
			||||||
eek_gtk_keyboard_init (EekGtkKeyboard *self)
 | 
					eek_gtk_keyboard_init (EekGtkKeyboard *self)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv;
 | 
					    self->priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv = self->priv = EEK_GTK_KEYBOARD_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    priv->renderer = NULL;
 | 
					 | 
				
			||||||
    priv->keyboard = NULL;
 | 
					 | 
				
			||||||
    priv->dragged_key = NULL;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -366,15 +440,26 @@ color_from_gdk_color (GdkColor *gdk_color)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
magnify_bounds (EekBounds *bounds, EekBounds *large_bounds, gdouble scale)
 | 
					magnify_bounds (GtkWidget *self,
 | 
				
			||||||
 | 
					                EekBounds *bounds,
 | 
				
			||||||
 | 
					                EekBounds *large_bounds,
 | 
				
			||||||
 | 
					                gdouble    scale)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    GtkAllocation allocation;
 | 
				
			||||||
 | 
					    gdouble x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_assert (scale >= 1.0);
 | 
					    g_assert (scale >= 1.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    gtk_widget_get_allocation (self, &allocation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    large_bounds->width = bounds->width * scale;
 | 
					    large_bounds->width = bounds->width * scale;
 | 
				
			||||||
    large_bounds->height = bounds->height * scale;
 | 
					    large_bounds->height = bounds->height * scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    large_bounds->x = bounds->x - (large_bounds->width - bounds->width) / 2;
 | 
					    x = bounds->x - (large_bounds->width - bounds->width) / 2;
 | 
				
			||||||
    large_bounds->y = bounds->y - (large_bounds->height - bounds->height) / 2;
 | 
					    y = bounds->y - large_bounds->height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    large_bounds->x = CLAMP(x, 0, allocation.width - large_bounds->width);
 | 
				
			||||||
 | 
					    large_bounds->y = CLAMP(y, 0, allocation.height - large_bounds->height);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -388,10 +473,63 @@ render_pressed_key (GtkWidget *widget,
 | 
				
			|||||||
    cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
 | 
					    cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
					    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
				
			||||||
    magnify_bounds (&bounds, &large_bounds, 1.5);
 | 
					    magnify_bounds (widget, &bounds, &large_bounds, 1.5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_save (cr);
 | 
				
			||||||
 | 
					    cairo_translate (cr, bounds.x, bounds.y);
 | 
				
			||||||
 | 
					    eek_renderer_render_key (priv->renderer, cr, key, 1.0, TRUE);
 | 
				
			||||||
 | 
					    cairo_restore (cr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_save (cr);
 | 
				
			||||||
    cairo_translate (cr, large_bounds.x, large_bounds.y);
 | 
					    cairo_translate (cr, large_bounds.x, large_bounds.y);
 | 
				
			||||||
    eek_renderer_render_key (priv->renderer, cr, key, 1.5, TRUE);
 | 
					    eek_renderer_render_key (priv->renderer, cr, key, 1.5, TRUE);
 | 
				
			||||||
 | 
					    cairo_restore (cr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_destroy (cr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					render_locked_key (GtkWidget *widget,
 | 
				
			||||||
 | 
					                   EekKey    *key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
				
			||||||
 | 
					    EekBounds bounds;
 | 
				
			||||||
 | 
					    cairo_t *cr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
				
			||||||
 | 
					    cairo_translate (cr, bounds.x, bounds.y);
 | 
				
			||||||
 | 
					    eek_renderer_render_key (priv->renderer, cr, key, 1.0, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cairo_destroy (cr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					render_released_key (GtkWidget *widget,
 | 
				
			||||||
 | 
					                     EekKey    *key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
				
			||||||
 | 
					    EekBounds bounds, large_bounds;
 | 
				
			||||||
 | 
					    cairo_t *cr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
				
			||||||
 | 
					    magnify_bounds (widget, &bounds, &large_bounds, 2.0);
 | 
				
			||||||
 | 
					    cairo_rectangle (cr,
 | 
				
			||||||
 | 
					                     large_bounds.x,
 | 
				
			||||||
 | 
					                     large_bounds.y,
 | 
				
			||||||
 | 
					                     large_bounds.width,
 | 
				
			||||||
 | 
					                     large_bounds.height);
 | 
				
			||||||
 | 
					    cairo_rectangle (cr,
 | 
				
			||||||
 | 
					                     bounds.x,
 | 
				
			||||||
 | 
					                     bounds.y,
 | 
				
			||||||
 | 
					                     bounds.width,
 | 
				
			||||||
 | 
					                     bounds.height);
 | 
				
			||||||
 | 
					    cairo_clip (cr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
				
			||||||
    cairo_destroy (cr);
 | 
					    cairo_destroy (cr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -408,6 +546,14 @@ on_key_pressed (EekKeyboard *keyboard,
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    render_pressed_key (widget, key);
 | 
					    render_pressed_key (widget, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if HAVE_LIBCANBERRA
 | 
				
			||||||
 | 
					    ca_gtk_play_for_widget (widget, 0,
 | 
				
			||||||
 | 
					                            CA_PROP_EVENT_ID, "button-pressed",
 | 
				
			||||||
 | 
					                            CA_PROP_EVENT_DESCRIPTION, "virtual key pressed",
 | 
				
			||||||
 | 
					                            CA_PROP_APPLICATION_ID, "org.fedorahosted.Eekboard",
 | 
				
			||||||
 | 
					                            NULL);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -417,26 +563,65 @@ on_key_released (EekKeyboard *keyboard,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    GtkWidget *widget = user_data;
 | 
					    GtkWidget *widget = user_data;
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
				
			||||||
    cairo_t *cr;
 | 
					 | 
				
			||||||
    EekBounds bounds, large_bounds;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* renderer may have not been set yet if the widget is a popup */
 | 
					    /* renderer may have not been set yet if the widget is a popup */
 | 
				
			||||||
    if (!priv->renderer)
 | 
					    if (!priv->renderer)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cr = gdk_cairo_create (GDK_DRAWABLE (gtk_widget_get_window (widget)));
 | 
					    render_released_key (widget, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_renderer_get_key_bounds (priv->renderer, key, &bounds, TRUE);
 | 
					#if HAVE_LIBCANBERRA
 | 
				
			||||||
    magnify_bounds (&bounds, &large_bounds, 2.0);
 | 
					    ca_gtk_play_for_widget (widget, 0,
 | 
				
			||||||
    cairo_rectangle (cr,
 | 
					                            CA_PROP_EVENT_ID, "button-released",
 | 
				
			||||||
                     large_bounds.x,
 | 
					                            CA_PROP_EVENT_DESCRIPTION, "virtual key pressed",
 | 
				
			||||||
                     large_bounds.y,
 | 
					                            CA_PROP_APPLICATION_ID, "org.fedorahosted.Eekboard",
 | 
				
			||||||
                     large_bounds.width,
 | 
					                            NULL);
 | 
				
			||||||
                     large_bounds.height);
 | 
					#endif
 | 
				
			||||||
    cairo_clip (cr);
 | 
					}
 | 
				
			||||||
    eek_renderer_render_keyboard (priv->renderer, cr);
 | 
					
 | 
				
			||||||
    cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
 | 
					static void
 | 
				
			||||||
    cairo_destroy (cr);
 | 
					on_key_cancelled (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
					                 EekKey      *key,
 | 
				
			||||||
 | 
					                 gpointer     user_data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    GtkWidget *widget = user_data;
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* renderer may have not been set yet if the widget is a popup */
 | 
				
			||||||
 | 
					    if (!priv->renderer)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    render_released_key (widget, key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					on_key_locked (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
					               EekKey      *key,
 | 
				
			||||||
 | 
					               gpointer     user_data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    GtkWidget *widget = user_data;
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* renderer may have not been set yet if the widget is a popup */
 | 
				
			||||||
 | 
					    if (!priv->renderer)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    render_locked_key (widget, key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					on_key_unlocked (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
					                 EekKey      *key,
 | 
				
			||||||
 | 
					                 gpointer     user_data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    GtkWidget *widget = user_data;
 | 
				
			||||||
 | 
					    EekGtkKeyboardPrivate *priv = EEK_GTK_KEYBOARD_GET_PRIVATE(widget);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* renderer may have not been set yet if the widget is a popup */
 | 
				
			||||||
 | 
					    if (!priv->renderer)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    render_released_key (widget, key);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
 | 
				
			|||||||
@ -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-gtk.h> can be included directly."
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef EEK_GTK_KEYBOARD_H
 | 
					#ifndef EEK_GTK_KEYBOARD_H
 | 
				
			||||||
#define EEK_GTK_KEYBOARD_H 1
 | 
					#define EEK_GTK_KEYBOARD_H 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -51,58 +51,32 @@ pixbuf_to_cairo_surface (GdkPixbuf *pixbuf)
 | 
				
			|||||||
  return surface;
 | 
					  return surface;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static cairo_surface_t *
 | 
				
			||||||
eek_gtk_renderer_real_render_key_icon (EekRenderer *self,
 | 
					eek_gtk_renderer_real_get_icon_surface (EekRenderer *self,
 | 
				
			||||||
                                       cairo_t     *cr,
 | 
					                                        const gchar *icon_name,
 | 
				
			||||||
                                       EekKey      *key,
 | 
					                                        gint size)
 | 
				
			||||||
                                       gdouble      scale,
 | 
					 | 
				
			||||||
                                       gboolean     rotate)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekBounds bounds;
 | 
					 | 
				
			||||||
    EekSymbol *symbol;
 | 
					 | 
				
			||||||
    const gchar *icon_name;
 | 
					 | 
				
			||||||
    GdkPixbuf *pixbuf;
 | 
					    GdkPixbuf *pixbuf;
 | 
				
			||||||
    cairo_surface_t *surface;
 | 
					 | 
				
			||||||
    GError *error;
 | 
					    GError *error;
 | 
				
			||||||
    gint width, height;
 | 
					    cairo_surface_t *surface;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
					 | 
				
			||||||
    g_return_if_fail (symbol);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    icon_name = eek_symbol_get_icon_name (symbol);
 | 
					 | 
				
			||||||
    g_return_if_fail (icon_name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
 | 
					 | 
				
			||||||
    bounds.width *= scale;
 | 
					 | 
				
			||||||
    bounds.height *= scale;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    error = NULL;
 | 
					    error = NULL;
 | 
				
			||||||
    pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
 | 
					    pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
 | 
				
			||||||
                                       icon_name,
 | 
					                                       icon_name,
 | 
				
			||||||
                                       MIN(bounds.width, bounds.height),
 | 
					                                       size,
 | 
				
			||||||
                                       0,
 | 
					                                       0,
 | 
				
			||||||
                                       &error);
 | 
					                                       &error);
 | 
				
			||||||
    g_return_if_fail (pixbuf);
 | 
					    if (pixbuf == NULL) {
 | 
				
			||||||
 | 
					        g_warning ("can't get icon pixbuf for %s: %s",
 | 
				
			||||||
 | 
					                   icon_name,
 | 
				
			||||||
 | 
					                   error->message);
 | 
				
			||||||
 | 
					        g_error_free (error);
 | 
				
			||||||
 | 
					        return NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    width = gdk_pixbuf_get_width (pixbuf);
 | 
					 | 
				
			||||||
    height = gdk_pixbuf_get_height (pixbuf);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (bounds.width * height < bounds.height * width)
 | 
					 | 
				
			||||||
        scale = bounds.width / width;
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        scale = bounds.height / height;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cairo_save (cr);
 | 
					 | 
				
			||||||
    cairo_translate (cr,
 | 
					 | 
				
			||||||
                     (bounds.width - width * scale) / 2,
 | 
					 | 
				
			||||||
                     (bounds.height - height * scale) / 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    eek_renderer_apply_transformation_for_key (self, cr, key, scale, rotate);
 | 
					 | 
				
			||||||
    surface = pixbuf_to_cairo_surface (pixbuf);
 | 
					    surface = pixbuf_to_cairo_surface (pixbuf);
 | 
				
			||||||
    g_object_unref (pixbuf);
 | 
					    g_object_unref (pixbuf);
 | 
				
			||||||
    cairo_set_source_surface (cr, surface, 0.0, 0.0);
 | 
					    return surface;
 | 
				
			||||||
    cairo_paint (cr);
 | 
					 | 
				
			||||||
    cairo_restore (cr);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -110,7 +84,7 @@ eek_gtk_renderer_class_init (EekGtkRendererClass *klass)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekRendererClass *renderer_class = EEK_RENDERER_CLASS (klass);
 | 
					    EekRendererClass *renderer_class = EEK_RENDERER_CLASS (klass);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    renderer_class->render_key_icon = eek_gtk_renderer_real_render_key_icon;
 | 
					    renderer_class->get_icon_surface = eek_gtk_renderer_real_get_icon_surface;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -123,12 +97,8 @@ eek_gtk_renderer_new (EekKeyboard  *keyboard,
 | 
				
			|||||||
                      PangoContext *pcontext,
 | 
					                      PangoContext *pcontext,
 | 
				
			||||||
                      GtkWidget    *widget)
 | 
					                      GtkWidget    *widget)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekRenderer *renderer;
 | 
					    return g_object_new (EEK_TYPE_GTK_RENDERER,
 | 
				
			||||||
 | 
					                         "keyboard", keyboard,
 | 
				
			||||||
    renderer = g_object_new (EEK_TYPE_GTK_RENDERER,
 | 
					                         "pango-context", pcontext,
 | 
				
			||||||
                             "keyboard", keyboard,
 | 
					                         NULL);
 | 
				
			||||||
                             "pango-context", pcontext,
 | 
					 | 
				
			||||||
                             NULL);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return renderer;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										368
									
								
								eek/eek-key.c
									
									
									
									
									
								
							
							
						
						
									
										368
									
								
								eek/eek-key.c
									
									
									
									
									
								
							@ -39,7 +39,6 @@
 | 
				
			|||||||
#include "eek-section.h"
 | 
					#include "eek-section.h"
 | 
				
			||||||
#include "eek-keyboard.h"
 | 
					#include "eek-keyboard.h"
 | 
				
			||||||
#include "eek-symbol.h"
 | 
					#include "eek-symbol.h"
 | 
				
			||||||
#include "eek-serializable.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
@ -54,16 +53,15 @@ enum {
 | 
				
			|||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PRESSED,
 | 
					    PRESSED,
 | 
				
			||||||
    RELEASED,
 | 
					    RELEASED,
 | 
				
			||||||
 | 
					    LOCKED,
 | 
				
			||||||
 | 
					    UNLOCKED,
 | 
				
			||||||
 | 
					    CANCELLED,
 | 
				
			||||||
    LAST_SIGNAL
 | 
					    LAST_SIGNAL
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static guint signals[LAST_SIGNAL] = { 0, };
 | 
					static guint signals[LAST_SIGNAL] = { 0, };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void eek_serializable_iface_init (EekSerializableIface *iface);
 | 
					G_DEFINE_TYPE (EekKey, eek_key, EEK_TYPE_ELEMENT);
 | 
				
			||||||
 | 
					 | 
				
			||||||
G_DEFINE_TYPE_WITH_CODE (EekKey, eek_key, EEK_TYPE_ELEMENT,
 | 
					 | 
				
			||||||
                         G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE,
 | 
					 | 
				
			||||||
                                                eek_serializable_iface_init));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EEK_KEY_GET_PRIVATE(obj)                                  \
 | 
					#define EEK_KEY_GET_PRIVATE(obj)                                  \
 | 
				
			||||||
    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_KEY, EekKeyPrivate))
 | 
					    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_KEY, EekKeyPrivate))
 | 
				
			||||||
@ -77,183 +75,9 @@ struct _EekKeyPrivate
 | 
				
			|||||||
    gint row;
 | 
					    gint row;
 | 
				
			||||||
    gulong oref;
 | 
					    gulong oref;
 | 
				
			||||||
    gboolean is_pressed;
 | 
					    gboolean is_pressed;
 | 
				
			||||||
 | 
					    gboolean is_locked;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static EekSerializableIface *eek_key_parent_serializable_iface;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static GVariant *
 | 
					 | 
				
			||||||
_g_variant_new_symbol_matrix (EekSymbolMatrix *symbol_matrix)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    GVariantBuilder builder, array;
 | 
					 | 
				
			||||||
    gint i, num_symbols = symbol_matrix->num_groups * symbol_matrix->num_levels;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_builder_init (&builder, G_VARIANT_TYPE ("(iiv)"));
 | 
					 | 
				
			||||||
    g_variant_builder_add (&builder, "i", symbol_matrix->num_groups);
 | 
					 | 
				
			||||||
    g_variant_builder_add (&builder, "i", symbol_matrix->num_levels);
 | 
					 | 
				
			||||||
    g_variant_builder_init (&array, G_VARIANT_TYPE ("av"));
 | 
					 | 
				
			||||||
    for (i = 0; i < num_symbols; i++) {
 | 
					 | 
				
			||||||
        GVariant *symbol = eek_serializable_serialize
 | 
					 | 
				
			||||||
            (EEK_SERIALIZABLE(symbol_matrix->data[i]));
 | 
					 | 
				
			||||||
        g_variant_builder_add (&array, "v", symbol);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    g_variant_builder_add (&builder, "v", g_variant_builder_end (&array));
 | 
					 | 
				
			||||||
    return g_variant_builder_end (&builder);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static EekSymbolMatrix *
 | 
					 | 
				
			||||||
_g_variant_get_symbol_matrix (GVariant *variant)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    gint num_groups, num_levels, i;
 | 
					 | 
				
			||||||
    EekSymbolMatrix *symbol_matrix;
 | 
					 | 
				
			||||||
    GVariant *array, *child;
 | 
					 | 
				
			||||||
    GVariantIter iter;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 0, "i", &num_groups);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 1, "i", &num_levels);
 | 
					 | 
				
			||||||
    symbol_matrix = eek_symbol_matrix_new (num_groups, num_levels);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 2, "v", &array);
 | 
					 | 
				
			||||||
    g_variant_iter_init (&iter, array);
 | 
					 | 
				
			||||||
    for (i = 0; i < num_groups * num_levels; i++) {
 | 
					 | 
				
			||||||
        EekSerializable *serializable;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!g_variant_iter_next (&iter, "v", &child)) {
 | 
					 | 
				
			||||||
            eek_symbol_matrix_free (symbol_matrix);
 | 
					 | 
				
			||||||
            g_return_val_if_reached (NULL);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        serializable = eek_serializable_deserialize (child);
 | 
					 | 
				
			||||||
        symbol_matrix->data[i] = EEK_SYMBOL(serializable);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return symbol_matrix;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_key_real_serialize (EekSerializable *self,
 | 
					 | 
				
			||||||
                        GVariantBuilder *builder)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    eek_key_parent_serializable_iface->serialize (self, builder);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "u", priv->keycode);
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "v",
 | 
					 | 
				
			||||||
                           _g_variant_new_symbol_matrix (priv->symbol_matrix));
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "i", priv->column);
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "i", priv->row);
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "u", priv->oref);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static gsize
 | 
					 | 
				
			||||||
eek_key_real_deserialize (EekSerializable *self,
 | 
					 | 
				
			||||||
                          GVariant        *variant,
 | 
					 | 
				
			||||||
                          gsize            index)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    GVariant *symbol_matrix;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    index = eek_key_parent_serializable_iface->deserialize (self,
 | 
					 | 
				
			||||||
                                                            variant,
 | 
					 | 
				
			||||||
                                                            index);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "u", &priv->keycode);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "v", &symbol_matrix);
 | 
					 | 
				
			||||||
    eek_symbol_matrix_free (priv->symbol_matrix);
 | 
					 | 
				
			||||||
    priv->symbol_matrix = _g_variant_get_symbol_matrix (symbol_matrix);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "i", &priv->column);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "i", &priv->row);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "u", &priv->oref);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return index;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_serializable_iface_init (EekSerializableIface *iface)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    eek_key_parent_serializable_iface =
 | 
					 | 
				
			||||||
        g_type_interface_peek_parent (iface);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    iface->serialize = eek_key_real_serialize;
 | 
					 | 
				
			||||||
    iface->deserialize = eek_key_real_deserialize;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_key_real_set_keycode (EekKey *self, guint keycode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    priv->keycode = keycode;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static guint
 | 
					 | 
				
			||||||
eek_key_real_get_keycode (EekKey *self)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    return priv->keycode;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_key_real_set_symbol_matrix (EekKey          *self,
 | 
					 | 
				
			||||||
                                EekSymbolMatrix *matrix)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    eek_symbol_matrix_free (priv->symbol_matrix);
 | 
					 | 
				
			||||||
    priv->symbol_matrix = eek_symbol_matrix_copy (matrix);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static EekSymbolMatrix *
 | 
					 | 
				
			||||||
eek_key_real_get_symbol_matrix (EekKey *self)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    return priv->symbol_matrix;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_key_real_set_index (EekKey *self,
 | 
					 | 
				
			||||||
                        gint    column,
 | 
					 | 
				
			||||||
                        gint    row)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_return_if_fail (0 <= column);
 | 
					 | 
				
			||||||
    g_return_if_fail (0 <= row);
 | 
					 | 
				
			||||||
    priv->column = column;
 | 
					 | 
				
			||||||
    priv->row = row;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_key_real_get_index (EekKey *self,
 | 
					 | 
				
			||||||
                        gint   *column,
 | 
					 | 
				
			||||||
                        gint   *row)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (column)
 | 
					 | 
				
			||||||
        *column = priv->column;
 | 
					 | 
				
			||||||
    if (row)
 | 
					 | 
				
			||||||
        *row = priv->row;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_key_real_set_oref (EekKey *self, gulong oref)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    priv->oref = oref;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static gulong
 | 
					 | 
				
			||||||
eek_key_real_get_oref (EekKey *self)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    return priv->oref;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static gboolean
 | 
					 | 
				
			||||||
eek_key_real_is_pressed (EekKey *self)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    return priv->is_pressed;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_key_real_pressed (EekKey *self)
 | 
					eek_key_real_pressed (EekKey *self)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -276,6 +100,39 @@ eek_key_real_released (EekKey *self)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					eek_key_real_locked (EekKey *self)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    priv->is_locked = TRUE;
 | 
				
			||||||
 | 
					#if DEBUG
 | 
				
			||||||
 | 
					    g_debug ("locked %X", eek_key_get_keycode (self));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					eek_key_real_unlocked (EekKey *self)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    priv->is_locked = FALSE;
 | 
				
			||||||
 | 
					#if DEBUG
 | 
				
			||||||
 | 
					    g_debug ("unlocked %X", eek_key_get_keycode (self));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					eek_key_real_cancelled (EekKey *self)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    priv->is_pressed = FALSE;
 | 
				
			||||||
 | 
					#if DEBUG
 | 
				
			||||||
 | 
					    g_debug ("cancelled %X", eek_key_get_keycode (self));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_key_finalize (GObject *object)
 | 
					eek_key_finalize (GObject *object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -313,9 +170,7 @@ eek_key_set_property (GObject      *object,
 | 
				
			|||||||
        eek_key_set_oref (EEK_KEY(object), g_value_get_uint (value));
 | 
					        eek_key_set_oref (EEK_KEY(object), g_value_get_uint (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_set_property (object,
 | 
					        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
				
			||||||
                               g_param_spec_get_name (pspec),
 | 
					 | 
				
			||||||
                               value);
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -328,7 +183,6 @@ eek_key_get_property (GObject    *object,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    gint column, row;
 | 
					    gint column, row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEY(object));
 | 
					 | 
				
			||||||
    switch (prop_id) {
 | 
					    switch (prop_id) {
 | 
				
			||||||
    case PROP_KEYCODE:
 | 
					    case PROP_KEYCODE:
 | 
				
			||||||
        g_value_set_uint (value, eek_key_get_keycode (EEK_KEY(object)));
 | 
					        g_value_set_uint (value, eek_key_get_keycode (EEK_KEY(object)));
 | 
				
			||||||
@ -349,9 +203,7 @@ eek_key_get_property (GObject    *object,
 | 
				
			|||||||
        g_value_set_uint (value, eek_key_get_oref (EEK_KEY(object)));
 | 
					        g_value_set_uint (value, eek_key_get_oref (EEK_KEY(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_get_property (object,
 | 
					        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
				
			||||||
                               g_param_spec_get_name (pspec),
 | 
					 | 
				
			||||||
                               value);
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -365,16 +217,6 @@ eek_key_class_init (EekKeyClass *klass)
 | 
				
			|||||||
    g_type_class_add_private (gobject_class,
 | 
					    g_type_class_add_private (gobject_class,
 | 
				
			||||||
                              sizeof (EekKeyPrivate));
 | 
					                              sizeof (EekKeyPrivate));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    klass->get_keycode = eek_key_real_get_keycode;
 | 
					 | 
				
			||||||
    klass->set_keycode = eek_key_real_set_keycode;
 | 
					 | 
				
			||||||
    klass->set_symbol_matrix = eek_key_real_set_symbol_matrix;
 | 
					 | 
				
			||||||
    klass->get_symbol_matrix = eek_key_real_get_symbol_matrix;
 | 
					 | 
				
			||||||
    klass->set_index = eek_key_real_set_index;
 | 
					 | 
				
			||||||
    klass->get_index = eek_key_real_get_index;
 | 
					 | 
				
			||||||
    klass->set_oref = eek_key_real_set_oref;
 | 
					 | 
				
			||||||
    klass->get_oref = eek_key_real_get_oref;
 | 
					 | 
				
			||||||
    klass->is_pressed = eek_key_real_is_pressed;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    gobject_class->set_property = eek_key_set_property;
 | 
					    gobject_class->set_property = eek_key_set_property;
 | 
				
			||||||
    gobject_class->get_property = eek_key_get_property;
 | 
					    gobject_class->get_property = eek_key_get_property;
 | 
				
			||||||
    gobject_class->finalize     = eek_key_finalize;
 | 
					    gobject_class->finalize     = eek_key_finalize;
 | 
				
			||||||
@ -382,6 +224,9 @@ eek_key_class_init (EekKeyClass *klass)
 | 
				
			|||||||
    /* signals */
 | 
					    /* signals */
 | 
				
			||||||
    klass->pressed = eek_key_real_pressed;
 | 
					    klass->pressed = eek_key_real_pressed;
 | 
				
			||||||
    klass->released = eek_key_real_released;
 | 
					    klass->released = eek_key_real_released;
 | 
				
			||||||
 | 
					    klass->locked = eek_key_real_locked;
 | 
				
			||||||
 | 
					    klass->unlocked = eek_key_real_unlocked;
 | 
				
			||||||
 | 
					    klass->cancelled = eek_key_real_cancelled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * EekKey:keycode:
 | 
					     * EekKey:keycode:
 | 
				
			||||||
@ -478,6 +323,59 @@ eek_key_class_init (EekKeyClass *klass)
 | 
				
			|||||||
                      NULL,
 | 
					                      NULL,
 | 
				
			||||||
                      g_cclosure_marshal_VOID__VOID,
 | 
					                      g_cclosure_marshal_VOID__VOID,
 | 
				
			||||||
                      G_TYPE_NONE, 0);
 | 
					                      G_TYPE_NONE, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKey::locked:
 | 
				
			||||||
 | 
					     * @key: an #EekKey
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::locked signal is emitted each time @key is shifted to
 | 
				
			||||||
 | 
					     * the locked state.  The class handler runs before signal
 | 
				
			||||||
 | 
					     * handlers to allow signal handlers to read the status of @key
 | 
				
			||||||
 | 
					     * with eek_key_is_locked().
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    signals[LOCKED] =
 | 
				
			||||||
 | 
					        g_signal_new (I_("locked"),
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_FIRST,
 | 
				
			||||||
 | 
					                      G_STRUCT_OFFSET(EekKeyClass, locked),
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      g_cclosure_marshal_VOID__VOID,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKey::unlocked:
 | 
				
			||||||
 | 
					     * @key: an #EekKey
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::unlocked signal is emitted each time @key is shifted to
 | 
				
			||||||
 | 
					     * the unlocked state.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					   signals[UNLOCKED] =
 | 
				
			||||||
 | 
					        g_signal_new (I_("unlocked"),
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_LAST,
 | 
				
			||||||
 | 
					                      G_STRUCT_OFFSET(EekKeyClass, unlocked),
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      g_cclosure_marshal_VOID__VOID,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKey::cancelled:
 | 
				
			||||||
 | 
					     * @key: an #EekKey
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::cancelled signal is emitted each time @key is shifted to
 | 
				
			||||||
 | 
					     * the cancelled state.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					   signals[CANCELLED] =
 | 
				
			||||||
 | 
					        g_signal_new (I_("cancelled"),
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_LAST,
 | 
				
			||||||
 | 
					                      G_STRUCT_OFFSET(EekKeyClass, cancelled),
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      g_cclosure_marshal_VOID__VOID,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -486,10 +384,7 @@ eek_key_init (EekKey *self)
 | 
				
			|||||||
    EekKeyPrivate *priv;
 | 
					    EekKeyPrivate *priv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    priv = self->priv = EEK_KEY_GET_PRIVATE(self);
 | 
					    priv = self->priv = EEK_KEY_GET_PRIVATE(self);
 | 
				
			||||||
    priv->keycode = 0;
 | 
					 | 
				
			||||||
    priv->symbol_matrix = eek_symbol_matrix_new (0, 0);
 | 
					    priv->symbol_matrix = eek_symbol_matrix_new (0, 0);
 | 
				
			||||||
    priv->column = priv->row = 0;
 | 
					 | 
				
			||||||
    priv->oref = 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -508,7 +403,7 @@ eek_key_set_keycode (EekKey *key,
 | 
				
			|||||||
                     guint   keycode)
 | 
					                     guint   keycode)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEY (key));
 | 
					    g_return_if_fail (EEK_IS_KEY (key));
 | 
				
			||||||
    EEK_KEY_GET_CLASS(key)->set_keycode (key, keycode);
 | 
					    key->priv->keycode = keycode;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -522,7 +417,7 @@ guint
 | 
				
			|||||||
eek_key_get_keycode (EekKey *key)
 | 
					eek_key_get_keycode (EekKey *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_val_if_fail (EEK_IS_KEY (key), EEK_INVALID_KEYCODE);
 | 
					    g_return_val_if_fail (EEK_IS_KEY (key), EEK_INVALID_KEYCODE);
 | 
				
			||||||
    return EEK_KEY_GET_CLASS(key)->get_keycode (key);
 | 
					    return key->priv->keycode;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -537,7 +432,9 @@ eek_key_set_symbol_matrix (EekKey          *key,
 | 
				
			|||||||
                           EekSymbolMatrix *matrix)
 | 
					                           EekSymbolMatrix *matrix)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEY(key));
 | 
					    g_return_if_fail (EEK_IS_KEY(key));
 | 
				
			||||||
    EEK_KEY_GET_CLASS(key)->set_symbol_matrix (key, matrix);
 | 
					
 | 
				
			||||||
 | 
					    eek_symbol_matrix_free (key->priv->symbol_matrix);
 | 
				
			||||||
 | 
					    key->priv->symbol_matrix = eek_symbol_matrix_copy (matrix);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -545,21 +442,21 @@ eek_key_set_symbol_matrix (EekKey          *key,
 | 
				
			|||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the symbol matrix of @key.
 | 
					 * Get the symbol matrix of @key.
 | 
				
			||||||
 * Returns: #EekSymbolMatrix or %NULL
 | 
					 * Returns: (transfer none): #EekSymbolMatrix or %NULL
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbolMatrix *
 | 
					EekSymbolMatrix *
 | 
				
			||||||
eek_key_get_symbol_matrix (EekKey *key)
 | 
					eek_key_get_symbol_matrix (EekKey *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_val_if_fail (EEK_IS_KEY(key), NULL);
 | 
					    g_return_val_if_fail (EEK_IS_KEY(key), NULL);
 | 
				
			||||||
    return EEK_KEY_GET_CLASS(key)->get_symbol_matrix (key);
 | 
					    return key->priv->symbol_matrix;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_key_get_symbol:
 | 
					 * eek_key_get_symbol:
 | 
				
			||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 * @returns: (transfer none): the current #EekSymbol or %NULL on failure
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the current symbol of @key.
 | 
					 * Get the current symbol of @key.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): the current #EekSymbol or %NULL on failure
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbol *
 | 
					EekSymbol *
 | 
				
			||||||
eek_key_get_symbol (EekKey *key)
 | 
					eek_key_get_symbol (EekKey *key)
 | 
				
			||||||
@ -572,9 +469,9 @@ eek_key_get_symbol (EekKey *key)
 | 
				
			|||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 * @fallback_group: fallback group index
 | 
					 * @fallback_group: fallback group index
 | 
				
			||||||
 * @fallback_level: fallback level index
 | 
					 * @fallback_level: fallback level index
 | 
				
			||||||
 * @returns: (transfer none): the current #EekSymbol or %NULL on failure
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the current symbol of @key.
 | 
					 * Get the current symbol of @key.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): the current #EekSymbol or %NULL on failure
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbol *
 | 
					EekSymbol *
 | 
				
			||||||
eek_key_get_symbol_with_fallback (EekKey *key,
 | 
					eek_key_get_symbol_with_fallback (EekKey *key,
 | 
				
			||||||
@ -628,9 +525,9 @@ eek_key_get_symbol_with_fallback (EekKey *key,
 | 
				
			|||||||
 * @level: level index of the symbol matrix
 | 
					 * @level: level index of the symbol matrix
 | 
				
			||||||
 * @fallback_group: fallback group index
 | 
					 * @fallback_group: fallback group index
 | 
				
			||||||
 * @fallback_level: fallback level index
 | 
					 * @fallback_level: fallback level index
 | 
				
			||||||
 * @returns: (transfer none): an #EekSymbol at (@group, @level), or %NULL
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the symbol at (@group, @level) in the symbol matrix of @key.
 | 
					 * Get the symbol at (@group, @level) in the symbol matrix of @key.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): an #EekSymbol at (@group, @level), or %NULL
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbol *
 | 
					EekSymbol *
 | 
				
			||||||
eek_key_get_symbol_at_index (EekKey *key,
 | 
					eek_key_get_symbol_at_index (EekKey *key,
 | 
				
			||||||
@ -688,14 +585,24 @@ eek_key_set_index (EekKey *key,
 | 
				
			|||||||
                   gint    row)
 | 
					                   gint    row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEY(key));
 | 
					    g_return_if_fail (EEK_IS_KEY(key));
 | 
				
			||||||
    EEK_KEY_GET_CLASS(key)->set_index (key, column, row);
 | 
					    g_return_if_fail (0 <= column);
 | 
				
			||||||
 | 
					    g_return_if_fail (0 <= row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (key->priv->column != column) {
 | 
				
			||||||
 | 
					        key->priv->column = column;
 | 
				
			||||||
 | 
					        g_object_notify (G_OBJECT(key), "column");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (key->priv->row != row) {
 | 
				
			||||||
 | 
					        key->priv->row = row;
 | 
				
			||||||
 | 
					        g_object_notify (G_OBJECT(key), "row");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_key_get_index:
 | 
					 * eek_key_get_index:
 | 
				
			||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 * @column: pointer where the column index of @key in #EekSection will be stored
 | 
					 * @column: (allow-none): pointer where the column index of @key in #EekSection will be stored
 | 
				
			||||||
 * @row: pointer where the row index of @key in #EekSection will be stored
 | 
					 * @row: (allow-none): pointer where the row index of @key in #EekSection will be stored
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the location of @key in #EekSection.
 | 
					 * Get the location of @key in #EekSection.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -705,7 +612,12 @@ eek_key_get_index (EekKey *key,
 | 
				
			|||||||
                   gint   *row)
 | 
					                   gint   *row)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEY(key));
 | 
					    g_return_if_fail (EEK_IS_KEY(key));
 | 
				
			||||||
    EEK_KEY_GET_CLASS(key)->get_index (key, column, row);
 | 
					    g_return_if_fail (column != NULL || row != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (column != NULL)
 | 
				
			||||||
 | 
					        *column = key->priv->column;
 | 
				
			||||||
 | 
					    if (row != NULL)
 | 
				
			||||||
 | 
					        *row = key->priv->row;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -717,10 +629,13 @@ eek_key_get_index (EekKey *key,
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
eek_key_set_oref (EekKey *key,
 | 
					eek_key_set_oref (EekKey *key,
 | 
				
			||||||
                  gulong  oref)
 | 
					                  guint   oref)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEY(key));
 | 
					    g_return_if_fail (EEK_IS_KEY(key));
 | 
				
			||||||
    EEK_KEY_GET_CLASS(key)->set_oref (key, oref);
 | 
					    if (key->priv->oref != oref) {
 | 
				
			||||||
 | 
					        key->priv->oref = oref;
 | 
				
			||||||
 | 
					        g_object_notify (G_OBJECT(key), "oref");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -728,13 +643,13 @@ eek_key_set_oref (EekKey *key,
 | 
				
			|||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the outline id of @key.
 | 
					 * Get the outline id of @key.
 | 
				
			||||||
 * Returns: a non-zero unsigned integer on success, 0 if the id is not set
 | 
					 * Returns: unsigned integer
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
gulong
 | 
					guint
 | 
				
			||||||
eek_key_get_oref (EekKey *key)
 | 
					eek_key_get_oref (EekKey *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_return_val_if_fail (EEK_IS_KEY (key), 0);
 | 
					    g_return_val_if_fail (EEK_IS_KEY (key), 0);
 | 
				
			||||||
    return EEK_KEY_GET_CLASS(key)->get_oref (key);
 | 
					    return key->priv->oref;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -746,6 +661,19 @@ eek_key_get_oref (EekKey *key)
 | 
				
			|||||||
gboolean
 | 
					gboolean
 | 
				
			||||||
eek_key_is_pressed (EekKey *key)
 | 
					eek_key_is_pressed (EekKey *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_assert (EEK_IS_KEY(key));
 | 
					    g_return_val_if_fail (EEK_IS_KEY(key), FALSE);
 | 
				
			||||||
    return EEK_KEY_GET_CLASS(key)->is_pressed (key);
 | 
					    return key->priv->is_pressed;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * eek_key_is_locked:
 | 
				
			||||||
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Return %TRUE if key is marked as locked.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					gboolean
 | 
				
			||||||
 | 
					eek_key_is_locked (EekKey *key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_return_val_if_fail (EEK_IS_KEY(key), FALSE);
 | 
				
			||||||
 | 
					    return key->priv->is_locked;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,12 +17,16 @@
 | 
				
			|||||||
 * 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_KEY_H
 | 
					#ifndef EEK_KEY_H
 | 
				
			||||||
#define EEK_KEY_H 1
 | 
					#define EEK_KEY_H 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <glib-object.h>
 | 
					 | 
				
			||||||
#include "eek-element.h"
 | 
					#include "eek-element.h"
 | 
				
			||||||
#include "eek-types.h"
 | 
					#include "eek-symbol-matrix.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_BEGIN_DECLS
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,6 +40,12 @@ G_BEGIN_DECLS
 | 
				
			|||||||
typedef struct _EekKeyClass EekKeyClass;
 | 
					typedef struct _EekKeyClass EekKeyClass;
 | 
				
			||||||
typedef struct _EekKeyPrivate EekKeyPrivate;
 | 
					typedef struct _EekKeyPrivate EekKeyPrivate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * EekKey:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The #EekKey structure contains only private data and should only be
 | 
				
			||||||
 | 
					 * accessed using the provided API.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
struct _EekKey
 | 
					struct _EekKey
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /*< private >*/
 | 
					    /*< private >*/
 | 
				
			||||||
@ -46,19 +56,13 @@ struct _EekKey
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * EekKeyClass:
 | 
					 * EekKeyClass:
 | 
				
			||||||
 * @set_keycode: virtual function for setting keycode of the key
 | 
					 | 
				
			||||||
 * @get_keycode: virtual function for getting keycode of the key
 | 
					 | 
				
			||||||
 * @set_symbol_matrix: virtual function for setting symbol matrix of the key
 | 
					 | 
				
			||||||
 * @get_symbol_matrix: virtual function for getting symbol matrix of the key
 | 
					 | 
				
			||||||
 * @set_index: virtual function for setting position of the key in the
 | 
					 | 
				
			||||||
 * section
 | 
					 | 
				
			||||||
 * @get_index: virtual function for getting position of the key in the
 | 
					 | 
				
			||||||
 * section
 | 
					 | 
				
			||||||
 * @set_oref: virtual function for setting outline id of the key
 | 
					 | 
				
			||||||
 * @get_oref: virtual function for getting outline id of the key
 | 
					 | 
				
			||||||
 * @pressed: class handler for #EekKey::pressed signal
 | 
					 * @pressed: class handler for #EekKey::pressed signal
 | 
				
			||||||
 * @released: class handler for #EekKey::released signal
 | 
					 * @released: class handler for #EekKey::released signal
 | 
				
			||||||
 | 
					 * @locked: class handler for #EekKey::locked signal
 | 
				
			||||||
 | 
					 * @unlocked: class handler for #EekKey::unlocked signal
 | 
				
			||||||
 | 
					 * @cancelled: class handler for #EekKey::cancelled signal
 | 
				
			||||||
 * @is_pressed: virtual function for getting whether the key is pressed
 | 
					 * @is_pressed: virtual function for getting whether the key is pressed
 | 
				
			||||||
 | 
					 * @is_locked: virtual function for getting whether the key is locked
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
struct _EekKeyClass
 | 
					struct _EekKeyClass
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -66,33 +70,12 @@ struct _EekKeyClass
 | 
				
			|||||||
    EekElementClass parent_class;
 | 
					    EekElementClass parent_class;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*< public >*/
 | 
					    /*< public >*/
 | 
				
			||||||
    void             (* set_keycode)       (EekKey          *self,
 | 
					 | 
				
			||||||
                                            guint            keycode);
 | 
					 | 
				
			||||||
    guint            (* get_keycode)       (EekKey          *self);
 | 
					 | 
				
			||||||
    void             (* set_symbol_matrix) (EekKey          *self,
 | 
					 | 
				
			||||||
                                            EekSymbolMatrix *matrix);
 | 
					 | 
				
			||||||
    EekSymbolMatrix *(* get_symbol_matrix) (EekKey          *self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void             (* set_index)         (EekKey          *self,
 | 
					 | 
				
			||||||
                                            gint             column,
 | 
					 | 
				
			||||||
                                            gint             row);
 | 
					 | 
				
			||||||
    void             (* get_index)         (EekKey          *self,
 | 
					 | 
				
			||||||
                                            gint            *column,
 | 
					 | 
				
			||||||
                                            gint            *row);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void             (* set_oref)          (EekKey          *self,
 | 
					 | 
				
			||||||
                                            gulong           oref);
 | 
					 | 
				
			||||||
    gulong           (* get_oref)          (EekKey          *self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    gboolean         (* is_pressed)        (EekKey          *self);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* signals */
 | 
					    /* signals */
 | 
				
			||||||
    void             (* pressed)           (EekKey          *key);
 | 
					    void (* pressed)   (EekKey *key);
 | 
				
			||||||
    void             (* released)          (EekKey          *key);
 | 
					    void (* released)  (EekKey *key);
 | 
				
			||||||
 | 
					    void (* locked)    (EekKey *key);
 | 
				
			||||||
    /*< private >*/
 | 
					    void (* unlocked)  (EekKey *key);
 | 
				
			||||||
    /* padding */
 | 
					    void (* cancelled) (EekKey *key);
 | 
				
			||||||
    gpointer pdummy[24];
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType            eek_key_get_type            (void) G_GNUC_CONST;
 | 
					GType            eek_key_get_type            (void) G_GNUC_CONST;
 | 
				
			||||||
@ -122,10 +105,11 @@ void             eek_key_get_index           (EekKey          *key,
 | 
				
			|||||||
                                              gint            *row);
 | 
					                                              gint            *row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void             eek_key_set_oref            (EekKey          *key,
 | 
					void             eek_key_set_oref            (EekKey          *key,
 | 
				
			||||||
                                              gulong           oref);
 | 
					                                              guint            oref);
 | 
				
			||||||
gulong           eek_key_get_oref            (EekKey          *key);
 | 
					guint            eek_key_get_oref            (EekKey          *key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean         eek_key_is_pressed          (EekKey          *key);
 | 
					gboolean         eek_key_is_pressed          (EekKey          *key);
 | 
				
			||||||
 | 
					gboolean         eek_key_is_locked           (EekKey          *key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_END_DECLS
 | 
					G_END_DECLS
 | 
				
			||||||
#endif  /* EEK_KEY_H */
 | 
					#endif  /* EEK_KEY_H */
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,7 @@
 | 
				
			|||||||
#include "eek-section.h"
 | 
					#include "eek-section.h"
 | 
				
			||||||
#include "eek-key.h"
 | 
					#include "eek-key.h"
 | 
				
			||||||
#include "eek-symbol.h"
 | 
					#include "eek-symbol.h"
 | 
				
			||||||
#include "eek-serializable.h"
 | 
					#include "eek-enumtypes.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
@ -47,143 +47,48 @@ enum {
 | 
				
			|||||||
enum {
 | 
					enum {
 | 
				
			||||||
    KEY_PRESSED,
 | 
					    KEY_PRESSED,
 | 
				
			||||||
    KEY_RELEASED,
 | 
					    KEY_RELEASED,
 | 
				
			||||||
 | 
					    KEY_LOCKED,
 | 
				
			||||||
 | 
					    KEY_UNLOCKED,
 | 
				
			||||||
 | 
					    KEY_CANCELLED,
 | 
				
			||||||
    LAST_SIGNAL
 | 
					    LAST_SIGNAL
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static guint signals[LAST_SIGNAL] = { 0, };
 | 
					static guint signals[LAST_SIGNAL] = { 0, };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void eek_serializable_iface_init (EekSerializableIface *iface);
 | 
					G_DEFINE_TYPE (EekKeyboard, eek_keyboard, EEK_TYPE_CONTAINER);
 | 
				
			||||||
 | 
					 | 
				
			||||||
G_DEFINE_TYPE_WITH_CODE (EekKeyboard, eek_keyboard, EEK_TYPE_CONTAINER,
 | 
					 | 
				
			||||||
                         G_IMPLEMENT_INTERFACE (EEK_TYPE_SERIALIZABLE,
 | 
					 | 
				
			||||||
                                                eek_serializable_iface_init));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EEK_KEYBOARD_GET_PRIVATE(obj)                                  \
 | 
					#define EEK_KEYBOARD_GET_PRIVATE(obj)                                  \
 | 
				
			||||||
    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_KEYBOARD, EekKeyboardPrivate))
 | 
					    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_KEYBOARD, EekKeyboardPrivate))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
struct _EekKeyboardPrivate
 | 
					struct _EekKeyboardPrivate
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekLayout *layout;
 | 
					    EekLayout *layout;
 | 
				
			||||||
    EekModifierBehavior modifier_behavior;
 | 
					    EekModifierBehavior modifier_behavior;
 | 
				
			||||||
    EekModifierType modifiers;
 | 
					    EekModifierType modifiers;
 | 
				
			||||||
 | 
					    GList *pressed_keys;
 | 
				
			||||||
 | 
					    GList *locked_keys;
 | 
				
			||||||
    GArray *outline_array;
 | 
					    GArray *outline_array;
 | 
				
			||||||
 | 
					    GHashTable *keycodes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* modifiers dynamically assigned at run time */
 | 
					    /* modifiers dynamically assigned at run time */
 | 
				
			||||||
    EekModifierType num_lock_mask;
 | 
					    EekModifierType num_lock_mask;
 | 
				
			||||||
    EekModifierType alt_gr_mask;
 | 
					    EekModifierType alt_gr_mask;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static EekSerializableIface *eek_keyboard_parent_serializable_iface;
 | 
					G_DEFINE_BOXED_TYPE(EekModifierKey, eek_modifier_key,
 | 
				
			||||||
 | 
					                    eek_modifier_key_copy, eek_modifier_key_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static GVariant *_g_variant_new_outline (EekOutline *outline);
 | 
					EekModifierKey *
 | 
				
			||||||
static EekOutline *_g_variant_get_outline (GVariant *variant);
 | 
					eek_modifier_key_copy (EekModifierKey *modkey)
 | 
				
			||||||
 | 
					 | 
				
			||||||
static GVariant *
 | 
					 | 
				
			||||||
_g_variant_new_outline (EekOutline *outline)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    GVariantBuilder builder, array;
 | 
					    return g_slice_dup (EekModifierKey, modkey);
 | 
				
			||||||
    gint i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_builder_init (&builder, G_VARIANT_TYPE ("(div)"));
 | 
					 | 
				
			||||||
    g_variant_builder_add (&builder, "d", outline->corner_radius);
 | 
					 | 
				
			||||||
    g_variant_builder_add (&builder, "i", outline->num_points);
 | 
					 | 
				
			||||||
    g_variant_builder_init (&array, G_VARIANT_TYPE ("a(dd)"));
 | 
					 | 
				
			||||||
    for (i = 0; i < outline->num_points; i++)
 | 
					 | 
				
			||||||
        g_variant_builder_add (&array,
 | 
					 | 
				
			||||||
                               "(dd)",
 | 
					 | 
				
			||||||
                               outline->points[i].x,
 | 
					 | 
				
			||||||
                               outline->points[i].y);
 | 
					 | 
				
			||||||
    g_variant_builder_add (&builder, "v", g_variant_builder_end (&array));
 | 
					 | 
				
			||||||
    return g_variant_builder_end (&builder);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static EekOutline *
 | 
					void
 | 
				
			||||||
_g_variant_get_outline (GVariant *variant)
 | 
					eek_modifier_key_free (EekModifierKey *modkey)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekOutline *outline;
 | 
					    g_object_unref (modkey->key);
 | 
				
			||||||
    GVariant *array;
 | 
					    g_slice_free (EekModifierKey, modkey);
 | 
				
			||||||
    GVariantIter iter;
 | 
					 | 
				
			||||||
    gdouble x, y;
 | 
					 | 
				
			||||||
    gint i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    outline = g_slice_new0 (EekOutline);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 0, "d", &outline->corner_radius);
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 1, "i", &outline->num_points);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    outline->points = g_slice_alloc0 (sizeof (EekPoint) * outline->num_points);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, 2, "v", &array);
 | 
					 | 
				
			||||||
    g_variant_iter_init (&iter, array);
 | 
					 | 
				
			||||||
    for (i = 0; i < outline->num_points; i++) {
 | 
					 | 
				
			||||||
        if (!g_variant_iter_next (&iter, "(dd)", &x, &y)) {
 | 
					 | 
				
			||||||
            eek_outline_free (outline);
 | 
					 | 
				
			||||||
            g_return_val_if_reached (NULL);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        outline->points[i].x = x;
 | 
					 | 
				
			||||||
        outline->points[i].y = y;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return outline;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_keyboard_real_serialize (EekSerializable *self,
 | 
					 | 
				
			||||||
                             GVariantBuilder *builder)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    GVariantBuilder array;
 | 
					 | 
				
			||||||
    guint i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    eek_keyboard_parent_serializable_iface->serialize (self, builder);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_variant_builder_init (&array, G_VARIANT_TYPE ("av"));
 | 
					 | 
				
			||||||
    for (i = 0; i < priv->outline_array->len; i++) {
 | 
					 | 
				
			||||||
        EekOutline *outline =
 | 
					 | 
				
			||||||
            eek_keyboard_get_outline (EEK_KEYBOARD(self), i + 1);
 | 
					 | 
				
			||||||
        g_variant_builder_add (&array, "v",
 | 
					 | 
				
			||||||
                               _g_variant_new_outline (outline));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "v", g_variant_builder_end (&array));
 | 
					 | 
				
			||||||
    g_variant_builder_add (builder, "u", priv->num_lock_mask);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static gsize
 | 
					 | 
				
			||||||
eek_keyboard_real_deserialize (EekSerializable *self,
 | 
					 | 
				
			||||||
                               GVariant        *variant,
 | 
					 | 
				
			||||||
                               gsize            index)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
					 | 
				
			||||||
    GVariant *array, *outline;
 | 
					 | 
				
			||||||
    GVariantIter iter;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    index = eek_keyboard_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", &outline)) {
 | 
					 | 
				
			||||||
        EekOutline *_outline = _g_variant_get_outline (outline);
 | 
					 | 
				
			||||||
        g_array_append_val (priv->outline_array, *_outline);
 | 
					 | 
				
			||||||
        /* don't use eek_outline_free here, so as to keep _outline->points */
 | 
					 | 
				
			||||||
        g_slice_free (EekOutline, _outline);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    g_variant_get_child (variant, index++, "u", &priv->num_lock_mask);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return index;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
eek_serializable_iface_init (EekSerializableIface *iface)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    eek_keyboard_parent_serializable_iface =
 | 
					 | 
				
			||||||
        g_type_interface_peek_parent (iface);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    iface->serialize = eek_keyboard_real_serialize;
 | 
					 | 
				
			||||||
    iface->deserialize = eek_keyboard_real_deserialize;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -191,7 +96,7 @@ on_key_pressed (EekSection  *section,
 | 
				
			|||||||
                EekKey      *key,
 | 
					                EekKey      *key,
 | 
				
			||||||
                EekKeyboard *keyboard)
 | 
					                EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_signal_emit_by_name (keyboard, "key-pressed", key);
 | 
					    g_signal_emit (keyboard, signals[KEY_PRESSED], 0, key);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -199,7 +104,31 @@ on_key_released (EekSection  *section,
 | 
				
			|||||||
                 EekKey      *key,
 | 
					                 EekKey      *key,
 | 
				
			||||||
                 EekKeyboard *keyboard)
 | 
					                 EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_signal_emit_by_name (keyboard, "key-released", key);
 | 
					    g_signal_emit (keyboard, signals[KEY_RELEASED], 0, key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					on_key_locked (EekSection  *section,
 | 
				
			||||||
 | 
					                EekKey      *key,
 | 
				
			||||||
 | 
					                EekKeyboard *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_signal_emit (keyboard, signals[KEY_LOCKED], 0, key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					on_key_unlocked (EekSection  *section,
 | 
				
			||||||
 | 
					                 EekKey      *key,
 | 
				
			||||||
 | 
					                 EekKeyboard *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_signal_emit (keyboard, signals[KEY_UNLOCKED], 0, key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					on_key_cancelled (EekSection  *section,
 | 
				
			||||||
 | 
					                 EekKey      *key,
 | 
				
			||||||
 | 
					                 EekKeyboard *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_signal_emit (keyboard, signals[KEY_CANCELLED], 0, key);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -211,6 +140,27 @@ on_symbol_index_changed (EekSection *section,
 | 
				
			|||||||
    g_signal_emit_by_name (keyboard, "symbol-index-changed", group, level);
 | 
					    g_signal_emit_by_name (keyboard, "symbol-index-changed", group, level);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					section_child_added_cb (EekContainer *container,
 | 
				
			||||||
 | 
					                        EekElement   *element,
 | 
				
			||||||
 | 
					                        EekKeyboard  *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    guint keycode = eek_key_get_keycode (EEK_KEY(element));
 | 
				
			||||||
 | 
					    g_hash_table_insert (keyboard->priv->keycodes,
 | 
				
			||||||
 | 
					                         GUINT_TO_POINTER(keycode),
 | 
				
			||||||
 | 
					                         element);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					section_child_removed_cb (EekContainer *container,
 | 
				
			||||||
 | 
					                          EekElement   *element,
 | 
				
			||||||
 | 
					                          EekKeyboard  *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    guint keycode = eek_key_get_keycode (EEK_KEY(element));
 | 
				
			||||||
 | 
					    g_hash_table_remove (keyboard->priv->keycodes,
 | 
				
			||||||
 | 
					                         GUINT_TO_POINTER(keycode));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static EekSection *
 | 
					static EekSection *
 | 
				
			||||||
eek_keyboard_real_create_section (EekKeyboard *self)
 | 
					eek_keyboard_real_create_section (EekKeyboard *self)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -219,43 +169,17 @@ eek_keyboard_real_create_section (EekKeyboard *self)
 | 
				
			|||||||
    section = g_object_new (EEK_TYPE_SECTION, NULL);
 | 
					    section = g_object_new (EEK_TYPE_SECTION, NULL);
 | 
				
			||||||
    g_return_val_if_fail (section, NULL);
 | 
					    g_return_val_if_fail (section, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_signal_connect (G_OBJECT(section), "child-added",
 | 
				
			||||||
 | 
					                      G_CALLBACK(section_child_added_cb), self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_signal_connect (G_OBJECT(section), "child-removed",
 | 
				
			||||||
 | 
					                      G_CALLBACK(section_child_removed_cb), self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EEK_CONTAINER_GET_CLASS(self)->add_child (EEK_CONTAINER(self),
 | 
					    EEK_CONTAINER_GET_CLASS(self)->add_child (EEK_CONTAINER(self),
 | 
				
			||||||
                                              EEK_ELEMENT(section));
 | 
					                                              EEK_ELEMENT(section));
 | 
				
			||||||
    return section;
 | 
					    return section;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct _FindKeyByKeycodeCallbackData {
 | 
					 | 
				
			||||||
    EekKey *key;
 | 
					 | 
				
			||||||
    guint keycode;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
typedef struct _FindKeyByKeycodeCallbackData FindKeyByKeycodeCallbackData;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static gint
 | 
					 | 
				
			||||||
find_key_by_keycode_section_callback (EekElement *element, gpointer user_data)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    FindKeyByKeycodeCallbackData *data = user_data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    data->key = eek_section_find_key_by_keycode (EEK_SECTION(element),
 | 
					 | 
				
			||||||
                                                 data->keycode);
 | 
					 | 
				
			||||||
    if (data->key)
 | 
					 | 
				
			||||||
        return 0;
 | 
					 | 
				
			||||||
    return -1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static EekKey *
 | 
					 | 
				
			||||||
eek_keyboard_real_find_key_by_keycode (EekKeyboard *self,
 | 
					 | 
				
			||||||
                                       guint        keycode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    FindKeyByKeycodeCallbackData data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    data.keycode = keycode;
 | 
					 | 
				
			||||||
    if (eek_container_find (EEK_CONTAINER(self),
 | 
					 | 
				
			||||||
                            find_key_by_keycode_section_callback,
 | 
					 | 
				
			||||||
                            &data))
 | 
					 | 
				
			||||||
        return data.key;
 | 
					 | 
				
			||||||
    return NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_keyboard_set_property (GObject      *object,
 | 
					eek_keyboard_set_property (GObject      *object,
 | 
				
			||||||
                           guint         prop_id,
 | 
					                           guint         prop_id,
 | 
				
			||||||
@ -272,12 +196,10 @@ eek_keyboard_set_property (GObject      *object,
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_MODIFIER_BEHAVIOR:
 | 
					    case PROP_MODIFIER_BEHAVIOR:
 | 
				
			||||||
        eek_keyboard_set_modifier_behavior (EEK_KEYBOARD(object),
 | 
					        eek_keyboard_set_modifier_behavior (EEK_KEYBOARD(object),
 | 
				
			||||||
                                            g_value_get_int (value));
 | 
					                                            g_value_get_enum (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_set_property (object,
 | 
					        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
				
			||||||
                               g_param_spec_get_name (pspec),
 | 
					 | 
				
			||||||
                               value);
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -295,13 +217,11 @@ eek_keyboard_get_property (GObject    *object,
 | 
				
			|||||||
        g_value_set_object (value, priv->layout);
 | 
					        g_value_set_object (value, priv->layout);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_MODIFIER_BEHAVIOR:
 | 
					    case PROP_MODIFIER_BEHAVIOR:
 | 
				
			||||||
        g_value_set_int (value,
 | 
					        g_value_set_enum (value,
 | 
				
			||||||
                         eek_keyboard_get_modifier_behavior (EEK_KEYBOARD(object)));
 | 
					                          eek_keyboard_get_modifier_behavior (EEK_KEYBOARD(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_get_property (object,
 | 
					        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 | 
				
			||||||
                               g_param_spec_get_name (pspec),
 | 
					 | 
				
			||||||
                               value);
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -319,6 +239,45 @@ set_level_from_modifiers (EekKeyboard *self)
 | 
				
			|||||||
    eek_element_set_level (EEK_ELEMENT(self), level);
 | 
					    eek_element_set_level (EEK_ELEMENT(self), level);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					set_modifiers_with_key (EekKeyboard    *self,
 | 
				
			||||||
 | 
					                        EekKey         *key,
 | 
				
			||||||
 | 
					                        EekModifierType modifiers)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					    EekModifierType enabled = (priv->modifiers ^ modifiers) & modifiers;
 | 
				
			||||||
 | 
					    EekModifierType disabled = (priv->modifiers ^ modifiers) & priv->modifiers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (enabled != 0) {
 | 
				
			||||||
 | 
					        if (priv->modifier_behavior != EEK_MODIFIER_BEHAVIOR_NONE) {
 | 
				
			||||||
 | 
					            EekModifierKey *modifier_key = g_slice_new (EekModifierKey);
 | 
				
			||||||
 | 
					            modifier_key->modifiers = enabled;
 | 
				
			||||||
 | 
					            modifier_key->key = g_object_ref (key);
 | 
				
			||||||
 | 
					            priv->locked_keys =
 | 
				
			||||||
 | 
					                g_list_prepend (priv->locked_keys, modifier_key);
 | 
				
			||||||
 | 
					            g_signal_emit_by_name (modifier_key->key, "locked");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        if (priv->modifier_behavior != EEK_MODIFIER_BEHAVIOR_NONE) {
 | 
				
			||||||
 | 
					            GList *head;
 | 
				
			||||||
 | 
					            for (head = priv->locked_keys; head; ) {
 | 
				
			||||||
 | 
					                EekModifierKey *modifier_key = head->data;
 | 
				
			||||||
 | 
					                if (modifier_key->modifiers & disabled) {
 | 
				
			||||||
 | 
					                    GList *next = g_list_next (head);
 | 
				
			||||||
 | 
					                    priv->locked_keys =
 | 
				
			||||||
 | 
					                        g_list_remove_link (priv->locked_keys, head);
 | 
				
			||||||
 | 
					                    g_signal_emit_by_name (modifier_key->key, "unlocked");
 | 
				
			||||||
 | 
					                    g_list_free1 (head);
 | 
				
			||||||
 | 
					                    head = next;
 | 
				
			||||||
 | 
					                } else
 | 
				
			||||||
 | 
					                    head = g_list_next (head);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    priv->modifiers = modifiers;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_keyboard_real_key_pressed (EekKeyboard *self,
 | 
					eek_keyboard_real_key_pressed (EekKeyboard *self,
 | 
				
			||||||
                               EekKey      *key)
 | 
					                               EekKey      *key)
 | 
				
			||||||
@ -327,13 +286,15 @@ eek_keyboard_real_key_pressed (EekKeyboard *self,
 | 
				
			|||||||
    EekSymbol *symbol;
 | 
					    EekSymbol *symbol;
 | 
				
			||||||
    EekModifierType modifier;
 | 
					    EekModifierType modifier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    priv->pressed_keys = g_list_prepend (priv->pressed_keys, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
					    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
				
			||||||
    if (!symbol)
 | 
					    if (!symbol)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    modifier = eek_symbol_get_modifier_mask (symbol);
 | 
					    modifier = eek_symbol_get_modifier_mask (symbol);
 | 
				
			||||||
    if (priv->modifier_behavior == EEK_MODIFIER_BEHAVIOR_NONE) {
 | 
					    if (priv->modifier_behavior == EEK_MODIFIER_BEHAVIOR_NONE) {
 | 
				
			||||||
        priv->modifiers |= modifier;
 | 
					        set_modifiers_with_key (self, key, priv->modifiers | modifier);
 | 
				
			||||||
        set_level_from_modifiers (self);
 | 
					        set_level_from_modifiers (self);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -346,6 +307,8 @@ eek_keyboard_real_key_released (EekKeyboard *self,
 | 
				
			|||||||
    EekSymbol *symbol;
 | 
					    EekSymbol *symbol;
 | 
				
			||||||
    EekModifierType modifier;
 | 
					    EekModifierType modifier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EEK_KEYBOARD_GET_CLASS (self)->key_cancelled (self, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
					    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
				
			||||||
    if (!symbol)
 | 
					    if (!symbol)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
@ -353,18 +316,38 @@ eek_keyboard_real_key_released (EekKeyboard *self,
 | 
				
			|||||||
    modifier = eek_symbol_get_modifier_mask (symbol);
 | 
					    modifier = eek_symbol_get_modifier_mask (symbol);
 | 
				
			||||||
    switch (priv->modifier_behavior) {
 | 
					    switch (priv->modifier_behavior) {
 | 
				
			||||||
    case EEK_MODIFIER_BEHAVIOR_NONE:
 | 
					    case EEK_MODIFIER_BEHAVIOR_NONE:
 | 
				
			||||||
        priv->modifiers &= ~modifier;
 | 
					        set_modifiers_with_key (self, key, priv->modifiers & ~modifier);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case EEK_MODIFIER_BEHAVIOR_LOCK:
 | 
					    case EEK_MODIFIER_BEHAVIOR_LOCK:
 | 
				
			||||||
        priv->modifiers ^= modifier;
 | 
					        priv->modifiers ^= modifier;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case EEK_MODIFIER_BEHAVIOR_LATCH:
 | 
					    case EEK_MODIFIER_BEHAVIOR_LATCH:
 | 
				
			||||||
        priv->modifiers = (priv->modifiers ^ modifier) & modifier;
 | 
					        if (modifier)
 | 
				
			||||||
 | 
					            set_modifiers_with_key (self, key, priv->modifiers ^ modifier);
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            set_modifiers_with_key (self, key,
 | 
				
			||||||
 | 
					                                    (priv->modifiers ^ modifier) & modifier);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    set_level_from_modifiers (self);
 | 
					    set_level_from_modifiers (self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					eek_keyboard_real_key_cancelled (EekKeyboard *self,
 | 
				
			||||||
 | 
					                                 EekKey      *key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					    GList *head;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (head = priv->pressed_keys; head; head = g_list_next (head)) {
 | 
				
			||||||
 | 
					        if (head->data == key) {
 | 
				
			||||||
 | 
					            priv->pressed_keys = g_list_remove_link (priv->pressed_keys, head);
 | 
				
			||||||
 | 
					            g_list_free1 (head);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_keyboard_dispose (GObject *object)
 | 
					eek_keyboard_dispose (GObject *object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -384,6 +367,12 @@ eek_keyboard_finalize (GObject *object)
 | 
				
			|||||||
    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(object);
 | 
					    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(object);
 | 
				
			||||||
    gint i;
 | 
					    gint i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_list_free (priv->pressed_keys);
 | 
				
			||||||
 | 
					    g_list_free_full (priv->locked_keys,
 | 
				
			||||||
 | 
					                      (GDestroyNotify) eek_modifier_key_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_hash_table_destroy (priv->keycodes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < priv->outline_array->len; i++) {
 | 
					    for (i = 0; i < priv->outline_array->len; i++) {
 | 
				
			||||||
        EekOutline *outline = &g_array_index (priv->outline_array,
 | 
					        EekOutline *outline = &g_array_index (priv->outline_array,
 | 
				
			||||||
                                              EekOutline,
 | 
					                                              EekOutline,
 | 
				
			||||||
@ -404,6 +393,12 @@ eek_keyboard_real_child_added (EekContainer *self,
 | 
				
			|||||||
                      G_CALLBACK(on_key_pressed), self);
 | 
					                      G_CALLBACK(on_key_pressed), self);
 | 
				
			||||||
    g_signal_connect (element, "key-released",
 | 
					    g_signal_connect (element, "key-released",
 | 
				
			||||||
                      G_CALLBACK(on_key_released), self);
 | 
					                      G_CALLBACK(on_key_released), self);
 | 
				
			||||||
 | 
					    g_signal_connect (element, "key-locked",
 | 
				
			||||||
 | 
					                      G_CALLBACK(on_key_locked), self);
 | 
				
			||||||
 | 
					    g_signal_connect (element, "key-unlocked",
 | 
				
			||||||
 | 
					                      G_CALLBACK(on_key_unlocked), self);
 | 
				
			||||||
 | 
					    g_signal_connect (element, "key-cancelled",
 | 
				
			||||||
 | 
					                      G_CALLBACK(on_key_cancelled), self);
 | 
				
			||||||
    g_signal_connect (element, "symbol-index-changed",
 | 
					    g_signal_connect (element, "symbol-index-changed",
 | 
				
			||||||
                      G_CALLBACK(on_symbol_index_changed), self);
 | 
					                      G_CALLBACK(on_symbol_index_changed), self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -414,6 +409,9 @@ eek_keyboard_real_child_removed (EekContainer *self,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    g_signal_handlers_disconnect_by_func (element, on_key_pressed, self);
 | 
					    g_signal_handlers_disconnect_by_func (element, on_key_pressed, self);
 | 
				
			||||||
    g_signal_handlers_disconnect_by_func (element, on_key_released, self);
 | 
					    g_signal_handlers_disconnect_by_func (element, on_key_released, self);
 | 
				
			||||||
 | 
					    g_signal_handlers_disconnect_by_func (element, on_key_locked, self);
 | 
				
			||||||
 | 
					    g_signal_handlers_disconnect_by_func (element, on_key_unlocked, self);
 | 
				
			||||||
 | 
					    g_signal_handlers_disconnect_by_func (element, on_key_cancelled, self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
@ -427,11 +425,11 @@ eek_keyboard_class_init (EekKeyboardClass *klass)
 | 
				
			|||||||
                              sizeof (EekKeyboardPrivate));
 | 
					                              sizeof (EekKeyboardPrivate));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    klass->create_section = eek_keyboard_real_create_section;
 | 
					    klass->create_section = eek_keyboard_real_create_section;
 | 
				
			||||||
    klass->find_key_by_keycode = eek_keyboard_real_find_key_by_keycode;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* signals */
 | 
					    /* signals */
 | 
				
			||||||
    klass->key_pressed = eek_keyboard_real_key_pressed;
 | 
					    klass->key_pressed = eek_keyboard_real_key_pressed;
 | 
				
			||||||
    klass->key_released = eek_keyboard_real_key_released;
 | 
					    klass->key_released = eek_keyboard_real_key_released;
 | 
				
			||||||
 | 
					    klass->key_cancelled = eek_keyboard_real_key_cancelled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    container_class->child_added = eek_keyboard_real_child_added;
 | 
					    container_class->child_added = eek_keyboard_real_child_added;
 | 
				
			||||||
    container_class->child_removed = eek_keyboard_real_child_removed;
 | 
					    container_class->child_removed = eek_keyboard_real_child_removed;
 | 
				
			||||||
@ -460,11 +458,12 @@ eek_keyboard_class_init (EekKeyboardClass *klass)
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * The modifier handling mode of #EekKeyboard.
 | 
					     * The modifier handling mode of #EekKeyboard.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    pspec = g_param_spec_int ("modifier-behavior",
 | 
					    pspec = g_param_spec_enum ("modifier-behavior",
 | 
				
			||||||
                              "Modifier behavior",
 | 
					                               "Modifier behavior",
 | 
				
			||||||
                              "Modifier handling mode of the keyboard",
 | 
					                               "Modifier handling mode of the keyboard",
 | 
				
			||||||
                              0, G_MAXINT, EEK_MODIFIER_BEHAVIOR_NONE,
 | 
					                               EEK_TYPE_MODIFIER_BEHAVIOR,
 | 
				
			||||||
                              G_PARAM_READWRITE);
 | 
					                               EEK_MODIFIER_BEHAVIOR_NONE,
 | 
				
			||||||
 | 
					                               G_PARAM_READWRITE);
 | 
				
			||||||
    g_object_class_install_property (gobject_class,
 | 
					    g_object_class_install_property (gobject_class,
 | 
				
			||||||
                                     PROP_MODIFIER_BEHAVIOR,
 | 
					                                     PROP_MODIFIER_BEHAVIOR,
 | 
				
			||||||
                                     pspec);
 | 
					                                     pspec);
 | 
				
			||||||
@ -508,130 +507,78 @@ eek_keyboard_class_init (EekKeyboardClass *klass)
 | 
				
			|||||||
                      G_TYPE_NONE,
 | 
					                      G_TYPE_NONE,
 | 
				
			||||||
                      1,
 | 
					                      1,
 | 
				
			||||||
                      EEK_TYPE_KEY);
 | 
					                      EEK_TYPE_KEY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKeyboard::key-locked:
 | 
				
			||||||
 | 
					     * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					     * @key: an #EekKey
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::key-locked signal is emitted each time a key in @keyboard
 | 
				
			||||||
 | 
					     * is shifted to the locked state.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    signals[KEY_LOCKED] =
 | 
				
			||||||
 | 
					        g_signal_new (I_("key-locked"),
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_LAST,
 | 
				
			||||||
 | 
					                      G_STRUCT_OFFSET(EekKeyboardClass, key_locked),
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      g_cclosure_marshal_VOID__OBJECT,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE,
 | 
				
			||||||
 | 
					                      1,
 | 
				
			||||||
 | 
					                      EEK_TYPE_KEY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKeyboard::key-unlocked:
 | 
				
			||||||
 | 
					     * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					     * @key: an #EekKey
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::key-unlocked signal is emitted each time a key in @keyboard
 | 
				
			||||||
 | 
					     * is shifted to the unlocked state.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    signals[KEY_UNLOCKED] =
 | 
				
			||||||
 | 
					        g_signal_new (I_("key-unlocked"),
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_LAST,
 | 
				
			||||||
 | 
					                      G_STRUCT_OFFSET(EekKeyboardClass, key_unlocked),
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      g_cclosure_marshal_VOID__OBJECT,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE,
 | 
				
			||||||
 | 
					                      1,
 | 
				
			||||||
 | 
					                      EEK_TYPE_KEY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKeyboard::key-cancelled:
 | 
				
			||||||
 | 
					     * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					     * @key: an #EekKey
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::key-cancelled signal is emitted each time a key in @keyboard
 | 
				
			||||||
 | 
					     * is shifted to the cancelled state.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    signals[KEY_CANCELLED] =
 | 
				
			||||||
 | 
					        g_signal_new (I_("key-cancelled"),
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_LAST,
 | 
				
			||||||
 | 
					                      G_STRUCT_OFFSET(EekKeyboardClass, key_cancelled),
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      g_cclosure_marshal_VOID__OBJECT,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE,
 | 
				
			||||||
 | 
					                      1,
 | 
				
			||||||
 | 
					                      EEK_TYPE_KEY);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eek_keyboard_init (EekKeyboard *self)
 | 
					eek_keyboard_init (EekKeyboard *self)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    self->priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
 | 
					    self->priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_NONE;
 | 
				
			||||||
    priv = self->priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
					    self->priv->outline_array = g_array_new (FALSE, TRUE, sizeof (EekOutline));
 | 
				
			||||||
    priv->layout = NULL;
 | 
					    self->priv->keycodes = g_hash_table_new (g_direct_hash, g_direct_equal);
 | 
				
			||||||
    priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_NONE;
 | 
					 | 
				
			||||||
    priv->modifiers = 0;
 | 
					 | 
				
			||||||
    priv->outline_array = g_array_new (FALSE, TRUE, sizeof (EekOutline));
 | 
					 | 
				
			||||||
    priv->num_lock_mask = 0;
 | 
					 | 
				
			||||||
    eek_element_set_symbol_index (EEK_ELEMENT(self), 0, 0);
 | 
					    eek_element_set_symbol_index (EEK_ELEMENT(self), 0, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_keyboard_set_symbol_index:
 | 
					 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 | 
				
			||||||
 * @group: row index of the symbol matrix of keys on @keyboard
 | 
					 | 
				
			||||||
 * @level: column index of the symbol matrix of keys on @keyboard
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Set the default index of the symbol matrices of keys in @keyboard.
 | 
					 | 
				
			||||||
 * To unset, pass -1 as group/level.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Deprecated: 1.0: Use eek_element_set_symbol_index()
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
eek_keyboard_set_symbol_index (EekKeyboard *keyboard,
 | 
					 | 
				
			||||||
                               gint         group,
 | 
					 | 
				
			||||||
                               gint         level)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    eek_element_set_symbol_index (EEK_ELEMENT(keyboard), group, level);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_keyboard_get_symbol_index:
 | 
					 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 | 
				
			||||||
 * @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 keys in @keyboard.
 | 
					 | 
				
			||||||
 * If the index is not set, -1 will be returned.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Deprecated: 1.0: Use eek_element_get_symbol_index()
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
eek_keyboard_get_symbol_index (EekKeyboard *keyboard,
 | 
					 | 
				
			||||||
                               gint        *group,
 | 
					 | 
				
			||||||
                               gint        *level)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    eek_element_get_symbol_index(EEK_ELEMENT(keyboard), group, level);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_keyboard_set_group:
 | 
					 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 | 
				
			||||||
 * @group: group index of @keyboard
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Set the group value of the default symbol index of @keyboard.  To
 | 
					 | 
				
			||||||
 * unset, pass -1 as @group.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * See also: eek_keyboard_set_symbol_index()
 | 
					 | 
				
			||||||
 * Deprecated: 1.0: Use eek_element_set_group()
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
eek_keyboard_set_group (EekKeyboard *keyboard,
 | 
					 | 
				
			||||||
                        gint         group)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    eek_element_set_group (EEK_ELEMENT(keyboard), group);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_keyboard_set_level:
 | 
					 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 | 
				
			||||||
 * @level: level index of @keyboard
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Set the level value of the default symbol index of @keyboard.  To
 | 
					 | 
				
			||||||
 * unset, pass -1 as @level.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * See also: eek_keyboard_set_symbol_index()
 | 
					 | 
				
			||||||
 * Deprecated: 1.0: Use eek_element_set_level()
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
eek_keyboard_set_level (EekKeyboard *keyboard,
 | 
					 | 
				
			||||||
                        gint         level)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    eek_element_set_level (EEK_ELEMENT(keyboard), level);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_keyboard_get_group:
 | 
					 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Return the group value of the default symbol index of @keyboard.
 | 
					 | 
				
			||||||
 * If the value is not set, -1 will be returned.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * See also: eek_keyboard_get_symbol_index()
 | 
					 | 
				
			||||||
 * Deprecated: 1.0: Use eek_element_get_group()
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
gint
 | 
					 | 
				
			||||||
eek_keyboard_get_group (EekKeyboard *keyboard)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return eek_element_get_group (EEK_ELEMENT(keyboard));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * eek_keyboard_get_level:
 | 
					 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Return the level value of the default symbol index of @keyboard.
 | 
					 | 
				
			||||||
 * If the value is not set, -1 will be returned.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * See also: eek_keyboard_get_symbol_index()
 | 
					 | 
				
			||||||
 * Deprecated: 1.0: Use eek_element_get_level()
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
gint
 | 
					 | 
				
			||||||
eek_keyboard_get_level (EekKeyboard *keyboard)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return eek_element_get_level (EEK_ELEMENT(keyboard));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_keyboard_create_section:
 | 
					 * eek_keyboard_create_section:
 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
@ -643,27 +590,25 @@ eek_keyboard_get_level (EekKeyboard *keyboard)
 | 
				
			|||||||
EekSection *
 | 
					EekSection *
 | 
				
			||||||
eek_keyboard_create_section (EekKeyboard *keyboard)
 | 
					eek_keyboard_create_section (EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekSection *section;
 | 
					 | 
				
			||||||
    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
				
			||||||
    section = EEK_KEYBOARD_GET_CLASS(keyboard)->create_section (keyboard);
 | 
					    return EEK_KEYBOARD_GET_CLASS(keyboard)->create_section (keyboard);
 | 
				
			||||||
    return section;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_keyboard_find_key_by_keycode:
 | 
					 * eek_keyboard_find_key_by_keycode:
 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
 * @keycode: a keycode
 | 
					 * @keycode: a keycode
 | 
				
			||||||
 * @returns: (transfer none): #EekKey whose keycode is @keycode
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Find an #EekKey whose keycode is @keycode.
 | 
					 * Find an #EekKey whose keycode is @keycode.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): #EekKey whose keycode is @keycode
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekKey *
 | 
					EekKey *
 | 
				
			||||||
eek_keyboard_find_key_by_keycode (EekKeyboard *keyboard,
 | 
					eek_keyboard_find_key_by_keycode (EekKeyboard *keyboard,
 | 
				
			||||||
                                  guint        keycode)
 | 
					                                  guint        keycode)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
				
			||||||
    return EEK_KEYBOARD_GET_CLASS(keyboard)->
 | 
					    return g_hash_table_lookup (keyboard->priv->keycodes,
 | 
				
			||||||
        find_key_by_keycode (keyboard, keycode);
 | 
					                                GUINT_TO_POINTER(keycode));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -676,11 +621,8 @@ eek_keyboard_find_key_by_keycode (EekKeyboard *keyboard,
 | 
				
			|||||||
EekLayout *
 | 
					EekLayout *
 | 
				
			||||||
eek_keyboard_get_layout (EekKeyboard *keyboard)
 | 
					eek_keyboard_get_layout (EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
				
			||||||
 | 
					    return keyboard->priv->layout;
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
    return priv->layout;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -698,7 +640,6 @@ eek_keyboard_get_size (EekKeyboard *keyboard,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekBounds bounds;
 | 
					    EekBounds bounds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
 | 
					    eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
 | 
				
			||||||
    *width = bounds.width;
 | 
					    *width = bounds.width;
 | 
				
			||||||
    *height = bounds.height;
 | 
					    *height = bounds.height;
 | 
				
			||||||
@ -715,12 +656,8 @@ void
 | 
				
			|||||||
eek_keyboard_set_modifier_behavior (EekKeyboard        *keyboard,
 | 
					eek_keyboard_set_modifier_behavior (EekKeyboard        *keyboard,
 | 
				
			||||||
                                    EekModifierBehavior modifier_behavior)
 | 
					                                    EekModifierBehavior modifier_behavior)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
					    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					    keyboard->priv->modifier_behavior = modifier_behavior;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv->modifier_behavior = modifier_behavior;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -733,12 +670,17 @@ eek_keyboard_set_modifier_behavior (EekKeyboard        *keyboard,
 | 
				
			|||||||
EekModifierBehavior
 | 
					EekModifierBehavior
 | 
				
			||||||
eek_keyboard_get_modifier_behavior (EekKeyboard *keyboard)
 | 
					eek_keyboard_get_modifier_behavior (EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), 0);
 | 
				
			||||||
 | 
					    return keyboard->priv->modifier_behavior;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					void
 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					eek_keyboard_set_modifiers (EekKeyboard    *keyboard,
 | 
				
			||||||
 | 
					                            EekModifierType modifiers)
 | 
				
			||||||
    return priv->modifier_behavior;
 | 
					{
 | 
				
			||||||
 | 
					    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
				
			||||||
 | 
					    keyboard->priv->modifiers = modifiers;
 | 
				
			||||||
 | 
					    set_level_from_modifiers (keyboard);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -751,12 +693,8 @@ eek_keyboard_get_modifier_behavior (EekKeyboard *keyboard)
 | 
				
			|||||||
EekModifierType
 | 
					EekModifierType
 | 
				
			||||||
eek_keyboard_get_modifiers (EekKeyboard *keyboard)
 | 
					eek_keyboard_get_modifiers (EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), 0);
 | 
				
			||||||
 | 
					    return keyboard->priv->modifiers;
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return priv->modifiers;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -765,46 +703,56 @@ eek_keyboard_get_modifiers (EekKeyboard *keyboard)
 | 
				
			|||||||
 * @outline: an #EekOutline
 | 
					 * @outline: an #EekOutline
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Register an outline of @keyboard.
 | 
					 * Register an outline of @keyboard.
 | 
				
			||||||
 * Returns: an unsigned long id of the registered outline, for later reference
 | 
					 * Returns: an unsigned integer ID of the registered outline, for
 | 
				
			||||||
 | 
					 * later reference
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
gulong
 | 
					guint
 | 
				
			||||||
eek_keyboard_add_outline (EekKeyboard *keyboard,
 | 
					eek_keyboard_add_outline (EekKeyboard *keyboard,
 | 
				
			||||||
                          EekOutline  *outline)
 | 
					                          EekOutline  *outline)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					 | 
				
			||||||
    EekOutline *_outline;
 | 
					    EekOutline *_outline;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), 0);
 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _outline = eek_outline_copy (outline);
 | 
					    _outline = eek_outline_copy (outline);
 | 
				
			||||||
    g_array_append_val (priv->outline_array, *_outline);
 | 
					    g_array_append_val (keyboard->priv->outline_array, *_outline);
 | 
				
			||||||
    /* don't use eek_outline_free here, so as to keep _outline->points */
 | 
					    /* don't use eek_outline_free here, so as to keep _outline->points */
 | 
				
			||||||
    g_slice_free (EekOutline, _outline);
 | 
					    g_slice_free (EekOutline, _outline);
 | 
				
			||||||
    return priv->outline_array->len;
 | 
					    return keyboard->priv->outline_array->len - 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_keyboard_get_outline:
 | 
					 * eek_keyboard_get_outline:
 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
 * @oref: an unsigned long id
 | 
					 * @oref: ID of the outline
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get an outline associated with @oref in @keyboard.
 | 
					 * Get an outline associated with @oref in @keyboard.
 | 
				
			||||||
 * Returns: an #EekOutline, which should not be released
 | 
					 * Returns: an #EekOutline, which should not be released
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekOutline *
 | 
					EekOutline *
 | 
				
			||||||
eek_keyboard_get_outline (EekKeyboard *keyboard,
 | 
					eek_keyboard_get_outline (EekKeyboard *keyboard,
 | 
				
			||||||
                          gulong oref)
 | 
					                          guint        oref)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					    if (oref > keyboard->priv->outline_array->len)
 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (oref > priv->outline_array->len)
 | 
					 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return &g_array_index (priv->outline_array, EekOutline, oref - 1);
 | 
					    return &g_array_index (keyboard->priv->outline_array, EekOutline, oref);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * eek_keyboard_get_n_outlines:
 | 
				
			||||||
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Get the number of outlines defined in @keyboard.
 | 
				
			||||||
 | 
					 * Returns: integer
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					gsize
 | 
				
			||||||
 | 
					eek_keyboard_get_n_outlines (EekKeyboard *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), 0);
 | 
				
			||||||
 | 
					    return keyboard->priv->outline_array->len;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -818,12 +766,8 @@ void
 | 
				
			|||||||
eek_keyboard_set_num_lock_mask (EekKeyboard    *keyboard,
 | 
					eek_keyboard_set_num_lock_mask (EekKeyboard    *keyboard,
 | 
				
			||||||
                                EekModifierType num_lock_mask)
 | 
					                                EekModifierType num_lock_mask)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
				
			||||||
 | 
					    keyboard->priv->num_lock_mask = num_lock_mask;
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv->num_lock_mask = num_lock_mask;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -836,12 +780,8 @@ eek_keyboard_set_num_lock_mask (EekKeyboard    *keyboard,
 | 
				
			|||||||
EekModifierType
 | 
					EekModifierType
 | 
				
			||||||
eek_keyboard_get_num_lock_mask (EekKeyboard *keyboard)
 | 
					eek_keyboard_get_num_lock_mask (EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), 0);
 | 
				
			||||||
 | 
					    return keyboard->priv->num_lock_mask;
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return priv->num_lock_mask;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -855,12 +795,8 @@ void
 | 
				
			|||||||
eek_keyboard_set_alt_gr_mask (EekKeyboard    *keyboard,
 | 
					eek_keyboard_set_alt_gr_mask (EekKeyboard    *keyboard,
 | 
				
			||||||
                              EekModifierType alt_gr_mask)
 | 
					                              EekModifierType alt_gr_mask)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_if_fail (EEK_IS_KEYBOARD(keyboard));
 | 
				
			||||||
 | 
					    keyboard->priv->alt_gr_mask = alt_gr_mask;
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    priv->alt_gr_mask = alt_gr_mask;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -873,10 +809,36 @@ eek_keyboard_set_alt_gr_mask (EekKeyboard    *keyboard,
 | 
				
			|||||||
EekModifierType
 | 
					EekModifierType
 | 
				
			||||||
eek_keyboard_get_alt_gr_mask (EekKeyboard *keyboard)
 | 
					eek_keyboard_get_alt_gr_mask (EekKeyboard *keyboard)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeyboardPrivate *priv;
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), 0);
 | 
				
			||||||
 | 
					    return keyboard->priv->alt_gr_mask;
 | 
				
			||||||
    g_assert (EEK_IS_KEYBOARD(keyboard));
 | 
					}
 | 
				
			||||||
    priv = EEK_KEYBOARD_GET_PRIVATE(keyboard);
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
    return priv->alt_gr_mask;
 | 
					 * eek_keyboard_get_pressed_keys:
 | 
				
			||||||
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Get pressed keys.
 | 
				
			||||||
 | 
					 * Returns: (transfer container) (element-type EekKey): A list of
 | 
				
			||||||
 | 
					 * pressed keys.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GList *
 | 
				
			||||||
 | 
					eek_keyboard_get_pressed_keys (EekKeyboard *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
				
			||||||
 | 
					    return g_list_copy (keyboard->priv->pressed_keys);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * eek_keyboard_get_locked_keys:
 | 
				
			||||||
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Get locked keys.
 | 
				
			||||||
 | 
					 * Returns: (transfer container) (element-type EekModifierKey): A list
 | 
				
			||||||
 | 
					 * of locked keys.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					GList *
 | 
				
			||||||
 | 
					eek_keyboard_get_locked_keys (EekKeyboard *keyboard)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_return_val_if_fail (EEK_IS_KEYBOARD(keyboard), NULL);
 | 
				
			||||||
 | 
					    return g_list_copy (keyboard->priv->locked_keys);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user