Compare commits
387 Commits
eekboard-0
...
eekboard-1
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| 76d1b8f7fb | |||
| 2bbc65958a | |||
| cbdd0fd2ba | |||
| 2f7aa77c11 | |||
| bed39570ff | |||
| 8bc3b204b4 | |||
| fa030ebcbb | |||
| af365024b7 | |||
| c742877b77 | |||
| ace4391b79 | |||
| 627cbf2898 | |||
| baae80fa41 | |||
| 9be07710dd | |||
| 163e005561 | |||
| d8e691d3f5 | |||
| 85a1a6ba24 | |||
| 828a59b298 | |||
| f1b91c0223 | |||
| cadb0f18a9 | |||
| 2a8d7cf0a8 | |||
| c9b54ba87f | |||
| d57ae91995 | |||
| dd86b132ce | |||
| 3967558bae | |||
| 668ce51f3c | |||
| 1db2a4aeea | |||
| e20425f385 | |||
| a20224f969 | |||
| d66318a031 | |||
| 37c2579253 | |||
| 23ab2a343f | |||
| e6dfc595ab | |||
| 98e15d7741 | |||
| 38b226b46f | |||
| c53b4d398e | |||
| fbcf6b6c65 | |||
| 09c95b20da | |||
| a7f81c3cfb | |||
| a66256f390 | |||
| 8b7da18641 | |||
| a9c0356611 | |||
| b25a9a5407 | |||
| 8b632356e9 | |||
| b8a01d794e | |||
| cfd33921a1 | |||
| 979aa010b9 | |||
| de064ba0c0 | |||
| ff200d9562 | |||
| a8148683d3 | |||
| 838a15d31a | |||
| 2d66bf24fb | |||
| 64bc7cc955 | |||
| 362f8ec0cb | |||
| d99a40df94 | |||
| ab08955a5f | |||
| 577fcd7f9e | |||
| 7da92bf04c | |||
| f7caf6fe49 | |||
| d111edd76a | |||
| b2657c06a8 | |||
| fccf9e8805 | |||
| 7fc80705dd | |||
| 9007f31c0a | |||
| 18f8e5b98b | |||
| 0087f74178 | |||
| 639ad8df91 | |||
| e8af3dacf1 | |||
| 5d42fb8294 | |||
| 4440a2f1ac | |||
| c9cee89d7e | |||
| 1c3d20ad6f | |||
| 40862fcf12 | |||
| 110b25a64b | |||
| f1a44ddebb | |||
| fc00d86c7e | |||
| 4a822fe52c | |||
| 6587f00c2a | |||
| 3b77502b97 | |||
| d7554b9735 | |||
| 798df5c136 | |||
| 22c70976db | |||
| 3eeb7cd8ab | |||
| 7ef245d739 | |||
| 9a6b3b3e2d | |||
| 715c9ca022 | |||
| 5f57ea7fe6 | |||
| 37b2e60e99 | |||
| 95024543cc | |||
| 3f1abe8350 | |||
| 50895d08e1 | |||
| 6747e07166 | |||
| 994d0a9a7e | |||
| 3f7562809e | |||
| 5fd8477a21 | |||
| faa5d60bea | |||
| 02d41b8dfe | |||
| caf105cbd9 | |||
| 2c067482de | |||
| bf8d119a0e | |||
| 3f83b578de | |||
| 16fe4a3565 | |||
| abf16370ad | |||
| a93b84c32e | |||
| 267f983ca1 | |||
| 50e9f3186a | |||
| d25114b370 | |||
| 12cc310e38 | |||
| bf2b9c968d | |||
| 4a0cda72a2 | |||
| e3e3b60f1e | |||
| ddfc0422b4 | |||
| 42bf50f6a3 | |||
| 47428b8959 | |||
| 0965ed680d | |||
| 8f8139e7dc | |||
| c3e10343b4 | |||
| 3aa2e6f425 | |||
| 66bfa4da1d | |||
| d09ca88101 | |||
| 453429f860 | |||
| fdd9c3d0ee | |||
| 22a51a2813 | |||
| 89c5c46dbb | |||
| ab43010a98 | |||
| 7916930160 | |||
| 11026923bd | |||
| 2d50b96881 | |||
| 23d1819f40 | |||
| b631f54a54 | |||
| 453c3fee79 | |||
| d7c9626df9 | |||
| c7a2be629f | |||
| a2c9aa6742 | |||
| 56abc55bb2 | |||
| d2fc32f2a7 | |||
| b221010800 | |||
| 8537c42756 | |||
| aae296696d | |||
| 74eb0f3c35 | |||
| 68b0d64fee | |||
| fd6035c54a | |||
| a1dd32b121 | |||
| c9c9a3297b | |||
| 0422352139 | |||
| 4b590dc05d | |||
| 0f33ced9bc | |||
| 2831d58dcd | |||
| eb646ff769 | |||
| aed12cd831 | |||
| 30d88ceb78 | |||
| f66d20972d | |||
| 7055f5fa50 | |||
| 6bbbe27c9a | |||
| 5cb5e057e7 | |||
| 134faacb5e | |||
| b2ad88bd01 | |||
| e999883c58 | |||
| 6258476713 | |||
| 53b96d3f44 | |||
| da4552c61c | |||
| 8b563740f5 | |||
| 6137b7e1f5 | |||
| a7b276c3c4 | |||
| 6a063c9d76 | |||
| ac71ea0035 | |||
| 879c50a6b8 | |||
| 4e1ad08e90 | |||
| 45b18c7ada | |||
| ca5873022a | |||
| b004a92e8a | |||
| e6df7d90fe | |||
| 4ff254df97 | |||
| 0c77bd45f2 | |||
| 880ba76bd8 | |||
| 327817e7ea | |||
| 2c98207799 | |||
| 6c2ef567c4 | |||
| 4f9b504d90 | |||
| b811796bbc | |||
| 4008706bb0 | |||
| 20acd11425 | |||
| b36e2f09de | |||
| d29e83e5f6 | |||
| 0dd37a39b9 | |||
| b22858f9cf | |||
| 4accb1e952 | |||
| 5e4a6b2c8e | |||
| 79986e47b6 | |||
| 45cd7958d0 | |||
| 7bdc984933 | |||
| 76f3ef75d5 | |||
| 13e4d1cdb3 | |||
| 70df392647 | |||
| ae857f5981 | |||
| cb49214667 | |||
| 48e64f1c32 | |||
| 9b1a53510e | |||
| c6aa173202 | |||
| 907fc3f872 | |||
| 406a59277f | |||
| f094466d64 | |||
| af8274f305 | |||
| 420b8014f8 | |||
| 9e5fa977a5 | |||
| fe101ff0e8 | |||
| 0ba067aa15 | |||
| 192cab67e9 | |||
| fa08da847a | |||
| 81d40c829d | |||
| 6e978cae63 | |||
| a0167c4cc2 | |||
| cab893b4aa | |||
| 8399acda83 | |||
| 12550f4bc3 | |||
| 2ec76cad54 | |||
| 47602652e4 | |||
| 158ddf2269 | |||
| 71d5259f85 | |||
| 1ddf39b3da | |||
| 8b9981970d | |||
| 4accc5e2ac | |||
| dc4e802bd1 | |||
| 7b368057e3 | |||
| 2ea6fa9611 | |||
| 125fd4c65c | |||
| cf4d1109d3 | |||
| c7c6d06907 | |||
| 384d43bb80 | |||
| 29c55b6ca3 | |||
| 910b0be5a5 | |||
| 706fa6310b | |||
| 248699d771 | |||
| 6343e37bc1 |
34
.gitignore
vendored
34
.gitignore
vendored
@ -4,6 +4,7 @@
|
||||
*.o
|
||||
*.so
|
||||
*~
|
||||
*.pyc
|
||||
Makefile
|
||||
Makefile.in
|
||||
.deps
|
||||
@ -30,17 +31,26 @@ libkeyactor*.tar.*
|
||||
mkinstalldirs
|
||||
m4/*.m4
|
||||
gtk-doc.make
|
||||
eek/eek-special-keysym-labels.h
|
||||
eek/eek-unicode-keysym-labels.h
|
||||
eek/eek-keyname-keysym-labels.h
|
||||
eek/eek-special-keysym-entries.h
|
||||
eek/eek-unicode-keysym-entries.h
|
||||
eek/eek-xkeysym-keysym-entries.h
|
||||
eek/eek-enumtypes.[ch]
|
||||
eek/eek-marshalers.[ch]
|
||||
eek/*.pc
|
||||
eek/*.gir
|
||||
eek/*.typelib
|
||||
eekboard/*.pc
|
||||
eekboard/*.gir
|
||||
eekboard/*.typelib
|
||||
eekboard/eekboard-marshalers.[ch]
|
||||
tests/eek-simple-test
|
||||
tests/eek-xkb-test
|
||||
tests/eek-xml-test
|
||||
src/eekboard
|
||||
src/eekboard-server
|
||||
docs/reference/eek/*.stamp
|
||||
docs/reference/eek/*.txt
|
||||
docs/reference/eek/eek.types
|
||||
!/docs/reference/eek/eek-sections.txt
|
||||
docs/reference/eek/xml
|
||||
docs/reference/eek/html
|
||||
@ -49,8 +59,26 @@ docs/reference/eek/eek.args
|
||||
docs/reference/eek/eek.hierarchy
|
||||
docs/reference/eek/eek.interfaces
|
||||
docs/reference/eek/eek.prerequisites
|
||||
docs/reference/eekboard/*.stamp
|
||||
docs/reference/eekboard/*.txt
|
||||
!/docs/reference/eekboard/eekboard-sections.txt
|
||||
docs/reference/eekboard/xml
|
||||
docs/reference/eekboard/html
|
||||
docs/reference/eekboard/eekboard.signals
|
||||
docs/reference/eekboard/eekboard.args
|
||||
docs/reference/eekboard/eekboard.hierarchy
|
||||
docs/reference/eekboard/eekboard.interfaces
|
||||
docs/reference/eekboard/eekboard.prerequisites
|
||||
po/*.gmo
|
||||
po/Makefile.in.in
|
||||
po/POTFILES
|
||||
po/stamp-it
|
||||
po/.intltool-merge-cache
|
||||
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
|
||||
|
||||
|
||||
38
AUTHORS
38
AUTHORS
@ -1,6 +1,36 @@
|
||||
eekboard is written by Daiki Ueno <ueno@unixuser.org>
|
||||
eekboard is written by Daiki Ueno <ueno@unixuser.org>. The following
|
||||
files contain code derived from other free software packages:
|
||||
|
||||
Cairo keyboard drawing functions are borrowed from the libgnomekbd
|
||||
library by Sergey V. Udaltsov <svu@gnome.org>. See the comments in
|
||||
eek/eek-drawing.c for detail.
|
||||
eek/eek-keyboard-drawing.h
|
||||
eek/eek-keyboard-drawing.c
|
||||
|
||||
These files contain code derived from the libgnomekbd library.
|
||||
Copyright (C) 2006 Sergey V. Udaltsov <svu@gnome.org>
|
||||
|
||||
eek/eek-theme.h
|
||||
eek/eek-theme.c
|
||||
eek/eek-theme-context.h
|
||||
eek/eek-theme-context.c
|
||||
eek/eek-theme-node.h
|
||||
eek/eek-theme-node.c
|
||||
|
||||
These files contain code derived from gnome-shell.
|
||||
|
||||
Copyright 2008-2010 Red Hat, Inc.
|
||||
Copyright 2009 Steve Frécinaux
|
||||
Copyright 2009, 2010 Florian Müllner
|
||||
Copyright 2010 Adel Gadllah
|
||||
Copyright 2010 Giovanni Campagna
|
||||
Copyright 2003-2004 Dodji Seketeli
|
||||
|
||||
data/icons/8x8/Makefile.am
|
||||
data/icons/16x16/Makefile.am
|
||||
data/icons/22x22/Makefile.am
|
||||
data/icons/24x24/Makefile.am
|
||||
data/icons/32x32/Makefile.am
|
||||
data/icons/48x48/Makefile.am
|
||||
data/icons/scalable/Makefile.am
|
||||
|
||||
These files contain code derived from im-chooser.
|
||||
|
||||
Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -17,6 +17,5 @@
|
||||
# 02110-1301 USA
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = eek src tests bindings docs po
|
||||
SUBDIRS = eek eekboard src tests bindings docs po data examples
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-introspection
|
||||
EXTRA_DIST = eekboard-sample.conf
|
||||
|
||||
40
README
40
README
@ -1,29 +1,35 @@
|
||||
eekboard - a virtual keyboard for GNOME -*- outline -*-
|
||||
eekboard - an easy to use virtual keyboard toolkit -*- outline -*-
|
||||
|
||||
eekboard is a virtual keyboard software package which ships with a
|
||||
standalone virtual keyboard application ("eekboard"), and a library to
|
||||
create keyboard-like UI ("libeek").
|
||||
eekboard is a virtual keyboard software package, including a set of
|
||||
tools to implement desktop virtual keyboards.
|
||||
|
||||
* Requirements
|
||||
* Building
|
||||
|
||||
* GLib2, GTK2, Cairo, Pango, Libxklavier...
|
||||
* Clutter (optional)
|
||||
* Clutter-Gtk (optional)
|
||||
** Dependencies
|
||||
|
||||
* How to test
|
||||
REQUIRED: GLib2, GTK, PangoCairo, libxklavier, libcroco
|
||||
OPTIONAL: libXtst, at-spi2-core, IBus, Clutter, Clutter-Gtk, Python, Vala, gobject-introspection, libcanberra
|
||||
|
||||
If you build from git repo:
|
||||
** Build from git repo
|
||||
|
||||
$ git clone git://github.com/ueno/eekboard.git
|
||||
$ cd eekboard
|
||||
$ ./autogen.sh --prefix=/usr --enable-gtk-doc
|
||||
|
||||
Otherwise start from here:
|
||||
|
||||
$ ./configure
|
||||
$ make
|
||||
$ sudo make install
|
||||
$ eekboard
|
||||
|
||||
*NOTE* some version combination of Clutter & Clutter-Gtk does not
|
||||
cooperate well. Try "EEKBOARD_DISABLE_CLUTTER=1 eekboard"
|
||||
** Build from tarball
|
||||
|
||||
$ ./configure --prefix=/usr
|
||||
$ make
|
||||
$ sudo make install
|
||||
|
||||
* Running
|
||||
|
||||
$ eekboard
|
||||
$ eekboard -f # show/hide automatically based on focus-in/focus-out events
|
||||
|
||||
Even though eekboard -f watches a11y events by default, it currently
|
||||
works better with IBus. To use IBus, do:
|
||||
|
||||
$ gsettings set org.fedorahosted.eekboard focus-listener 'ibus'
|
||||
|
||||
15
TODO
15
TODO
@ -1,14 +1 @@
|
||||
- packaging
|
||||
-- debian
|
||||
-- add more tests
|
||||
|
||||
- eekboard
|
||||
-- rewrite in Vala
|
||||
|
||||
- libeek
|
||||
-- CSS based themes
|
||||
-- Caribou layout engine (XML)
|
||||
-- matchbox-keyboard layout engine (XML)
|
||||
-- delay initialization of XKB and XKL layouts
|
||||
-- add mechanism to change appearances (colors?) of UI widgets
|
||||
depending on modifier states
|
||||
See https://github.com/ueno/eekboard/wiki/TODO
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -16,8 +16,12 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA
|
||||
|
||||
if ENABLE_VALA
|
||||
SUBDIRS = vala
|
||||
else
|
||||
SUBDIRS =
|
||||
|
||||
if ENABLE_PYTHON
|
||||
SUBDIRS += python
|
||||
endif
|
||||
|
||||
if ENABLE_VALA
|
||||
SUBDIRS += vala
|
||||
endif
|
||||
|
||||
18
bindings/python/Makefile.am
Normal file
18
bindings/python/Makefile.am
Normal file
@ -0,0 +1,18 @@
|
||||
# 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
|
||||
24
bindings/python/eekboard/Makefile.am
Normal file
24
bindings/python/eekboard/Makefile.am
Normal file
@ -0,0 +1,24 @@
|
||||
# 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 \
|
||||
serializable.py \
|
||||
symbol.py \
|
||||
keysym.py \
|
||||
client.py \
|
||||
context.py
|
||||
22
bindings/python/eekboard/__init__.py
Normal file
22
bindings/python/eekboard/__init__.py
Normal file
@ -0,0 +1,22 @@
|
||||
# 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 symbol import *
|
||||
from keysym import *
|
||||
from serializable import *
|
||||
from client import *
|
||||
from context import *
|
||||
56
bindings/python/eekboard/client.py
Normal file
56
bindings/python/eekboard/client.py
Normal file
@ -0,0 +1,56 @@
|
||||
# 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/>.
|
||||
|
||||
import dbus
|
||||
import dbus.mainloop.glib
|
||||
import gobject
|
||||
from context import Context
|
||||
|
||||
dbus.mainloop.glib.DBusGMainLoop(set_as_default = True)
|
||||
|
||||
class Client(gobject.GObject):
|
||||
__gtype_name__ = "PYEekboardClient"
|
||||
__gsignals__ = {
|
||||
'destroyed': (
|
||||
gobject.SIGNAL_RUN_LAST,
|
||||
gobject.TYPE_NONE,
|
||||
())
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(Client, self).__init__()
|
||||
self.__bus = dbus.SessionBus()
|
||||
_service = self.__bus.get_object("org.fedorahosted.Eekboard",
|
||||
"/org/fedorahosted/Eekboard")
|
||||
self.__service = dbus.Interface(_service, dbus_interface="org.fedorahosted.Eekboard")
|
||||
self.__service.connect_to_signal("Destroyed", self.__destroyed_cb)
|
||||
|
||||
def __destroyed_cb(self):
|
||||
self.emit("destroyed")
|
||||
|
||||
def create_context(self, client_name):
|
||||
object_path = self.__service.CreateContext(client_name)
|
||||
return Context(self.__bus, object_path)
|
||||
|
||||
def push_context(self, context):
|
||||
self.__service.PushContext(context.object_path)
|
||||
|
||||
def pop_context(self):
|
||||
self.__service.PopContext()
|
||||
|
||||
def destroy_context(self, context):
|
||||
self.__service.DestroyContext(context.object_path)
|
||||
126
bindings/python/eekboard/context.py
Normal file
126
bindings/python/eekboard/context.py
Normal file
@ -0,0 +1,126 @@
|
||||
# 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/>.
|
||||
|
||||
import dbus
|
||||
import gobject
|
||||
import serializable
|
||||
|
||||
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_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_UINT)),
|
||||
'destroyed': (
|
||||
gobject.SIGNAL_RUN_LAST,
|
||||
gobject.TYPE_NONE,
|
||||
()),
|
||||
}
|
||||
|
||||
__gproperties__ = {
|
||||
'visible': (gobject.TYPE_BOOLEAN, 'Visible', 'Visible',
|
||||
False, gobject.PARAM_READWRITE),
|
||||
'keyboard': (gobject.TYPE_UINT, 'Keyboard', 'Keyboard',
|
||||
0, gobject.G_MAXUINT, 0, gobject.PARAM_READWRITE),
|
||||
'group': (gobject.TYPE_UINT, 'Group', 'Group',
|
||||
0, gobject.G_MAXUINT, 0, gobject.PARAM_READWRITE),
|
||||
}
|
||||
|
||||
def __init__(self, bus, object_path):
|
||||
super(Context, self).__init__()
|
||||
self.__bus = bus
|
||||
self.__object_path = object_path
|
||||
self.__properties = {}
|
||||
_context = self.__bus.get_object("org.fedorahosted.Eekboard",
|
||||
object_path)
|
||||
self.__context = dbus.Interface(_context, dbus_interface="org.fedorahosted.Eekboard.Context")
|
||||
|
||||
self.__context.connect_to_signal('Enabled', self.__enabled_cb)
|
||||
self.__context.connect_to_signal('Disabled', self.__disabled_cb)
|
||||
self.__context.connect_to_signal('KeyPressed', self.__key_pressed_cb)
|
||||
self.__context.connect_to_signal('Destroyed', self.__destroyed_cb)
|
||||
self.__context.connect_to_signal('VisibilityChanged', self.__visibility_changed_cb)
|
||||
self.__context.connect_to_signal('KeyboardChanged', self.__keyboard_changed_cb)
|
||||
self.__context.connect_to_signal('GroupChanged', self.__group_changed_cb)
|
||||
|
||||
object_path = property(lambda self: self.__object_path)
|
||||
|
||||
def __enabled_cb(self):
|
||||
self.emit('enabled')
|
||||
|
||||
def __disabled_cb(self):
|
||||
self.emit('disabled')
|
||||
|
||||
def __key_pressed_cb(self, *args):
|
||||
keyname = args[0]
|
||||
symbol = serializable.deserialize_object(args[1])
|
||||
modifiers = args[2]
|
||||
self.emit('key-pressed', keyname, symbol, modifiers)
|
||||
|
||||
def __visibility_changed_cb(self, *args):
|
||||
self.set_property('visible', args[0])
|
||||
self.notify('visible')
|
||||
|
||||
def __keyboard_changed_cb(self, *args):
|
||||
self.set_property('keyboard', args[0])
|
||||
self.notify('keyboard')
|
||||
|
||||
def __group_changed_cb(self, *args):
|
||||
self.set_property('group', args[0])
|
||||
self.notify('group')
|
||||
|
||||
def __destroyed_cb(self):
|
||||
self.emit("destroyed")
|
||||
|
||||
def do_set_property(self, pspec, value):
|
||||
self.__properties[pspec.name] = value
|
||||
|
||||
def do_get_property(self, pspec):
|
||||
return self.__properties[pspec.name]
|
||||
|
||||
def add_keyboard(self, keyboard_type):
|
||||
return self.__context.AddKeyboard(keyboard_type)
|
||||
|
||||
def remove_keyboard(self, keyboard_id):
|
||||
return self.__context.RemoveKeyboard(keyboard_id)
|
||||
|
||||
def set_keyboard(self, keyboard_id):
|
||||
self.__context.SetKeyboard(keyboard_id)
|
||||
|
||||
def show_keyboard(self):
|
||||
self.__context.ShowKeyboard()
|
||||
|
||||
def hide_keyboard(self):
|
||||
self.__context.HideKeyboard()
|
||||
|
||||
def set_group(self, group):
|
||||
self.__context.SetGroup(group)
|
||||
|
||||
def press_keycode(self, keycode):
|
||||
self.__context.PressKeycode(keycode)
|
||||
|
||||
def release_keycode(self, keycode):
|
||||
self.__context.ReleaseKeycode(keycode)
|
||||
35
bindings/python/eekboard/keysym.py
Normal file
35
bindings/python/eekboard/keysym.py
Normal file
@ -0,0 +1,35 @@
|
||||
# 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/>.
|
||||
|
||||
import symbol
|
||||
|
||||
class Keysym(symbol.Symbol):
|
||||
__gtype_name__ = "PYEekKeysym"
|
||||
__NAME__ = "EekKeysym"
|
||||
|
||||
def __init__(self):
|
||||
super(Keysym, self).__init__()
|
||||
|
||||
xkeysym = property(lambda self: self.xkeysym)
|
||||
|
||||
def serialize(self, struct):
|
||||
super(Keysym, self).serialize(struct)
|
||||
struct.append(dbus.UInt32(self.__xkeysym))
|
||||
|
||||
def deserialize(self, struct):
|
||||
super(Keysym, self).deserialize(struct)
|
||||
self.__xkeysym = struct.pop(0)
|
||||
76
bindings/python/eekboard/serializable.py
Normal file
76
bindings/python/eekboard/serializable.py
Normal file
@ -0,0 +1,76 @@
|
||||
# vim:set et sts=4 sw=4:
|
||||
#
|
||||
# ibus - The Input Bus
|
||||
#
|
||||
# Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com>
|
||||
# Copyright (c) 2007-2010 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 program; if not, write to the
|
||||
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
# Boston, MA 02111-1307 USA
|
||||
|
||||
__all__ = (
|
||||
"Serializable",
|
||||
"serialize_object",
|
||||
"deserialize_object",
|
||||
)
|
||||
|
||||
import dbus
|
||||
import gobject
|
||||
|
||||
__serializable_name_dict = dict()
|
||||
|
||||
def serializable_register(classobj):
|
||||
# if not issubclass(classobj, Serializable):
|
||||
# raise "%s is not a sub-class of Serializable" % str(classobj)
|
||||
__serializable_name_dict[classobj.__NAME__] = classobj
|
||||
|
||||
def serialize_object(o):
|
||||
if isinstance(o, Serializable):
|
||||
l = [o.__NAME__]
|
||||
o.serialize(l)
|
||||
return dbus.Struct(l)
|
||||
else:
|
||||
return o
|
||||
|
||||
def deserialize_object(v):
|
||||
if isinstance(v, tuple):
|
||||
struct = list(v)
|
||||
type_name = struct.pop(0)
|
||||
type_class = __serializable_name_dict[type_name]
|
||||
o = type_class()
|
||||
o.deserialize (struct)
|
||||
return o
|
||||
return v
|
||||
|
||||
class SerializableMeta(gobject.GObjectMeta):
|
||||
def __init__(cls, name, bases, dict_):
|
||||
super(SerializableMeta, cls).__init__(name, bases, dict_)
|
||||
if "__NAME__" in cls.__dict__:
|
||||
serializable_register(cls)
|
||||
|
||||
class Serializable(gobject.GObject):
|
||||
__metaclass__ = SerializableMeta
|
||||
__gtype_name__ = "PYEekSerializable"
|
||||
__NAME__ = "EekSerializable"
|
||||
def __init__(self):
|
||||
super(Serializable, self).__init__()
|
||||
|
||||
def serialize(self, struct):
|
||||
pass
|
||||
|
||||
def deserialize(self, struct):
|
||||
pass
|
||||
|
||||
__serializable_name_dict["EekSerializable"] = Serializable
|
||||
47
bindings/python/eekboard/symbol.py
Normal file
47
bindings/python/eekboard/symbol.py
Normal file
@ -0,0 +1,47 @@
|
||||
# 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/>.
|
||||
|
||||
import serializable
|
||||
|
||||
class Symbol(serializable.Serializable):
|
||||
__gtype_name__ = "PYEekSymbol"
|
||||
__NAME__ = "EekSymbol"
|
||||
|
||||
def __init__(self):
|
||||
super(Symbol, self).__init__()
|
||||
|
||||
name = property(lambda self: self.__name)
|
||||
label = property(lambda self: self.__label)
|
||||
category = property(lambda self: self.__category)
|
||||
modifier_mask = property(lambda self: self.__modifier_mask)
|
||||
icon_name = property(lambda self: self.__icon_name)
|
||||
|
||||
def serialize(self, struct):
|
||||
super(Symbol, self).serialize(struct)
|
||||
struct.append(dbus.String(self.__name))
|
||||
struct.append(dbus.String(self.__label))
|
||||
struct.append(dbus.UInt32(self.__category))
|
||||
struct.append(dbus.UInt32(self.__modifier_mask))
|
||||
struct.append(dbus.String(self.__icon_name))
|
||||
|
||||
def deserialize(self, struct):
|
||||
super(Symbol, self).deserialize(struct)
|
||||
self.__name = struct.pop(0)
|
||||
self.__label = struct.pop(0)
|
||||
self.__category = struct.pop(0)
|
||||
self.__modifier_mask = struct.pop(0)
|
||||
self.__icon_name = struct.pop(0)
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -26,25 +26,49 @@ dist_vapi_DATA = \
|
||||
MAINTAINERCLEANFILES = $(dist_vapi_DATA)
|
||||
|
||||
eek-$(EEK_API_VERSION).vapi:
|
||||
vapigen --library eek-$(EEK_API_VERSION) \
|
||||
$(VAPIGEN_V)$(VAPIGEN) \
|
||||
--library eek-$(EEK_API_VERSION) \
|
||||
--pkg gio-2.0 \
|
||||
eek-$(EEK_API_VERSION)/eek-$(EEK_API_VERSION).gi
|
||||
|
||||
eek-clutter-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi
|
||||
vapigen --vapidir=$(builddir) --library eek-clutter-$(EEK_API_VERSION) \
|
||||
--pkg eek-0.1 --pkg clutter-1.0 \
|
||||
$(VAPIGEN_V)$(VAPIGEN) --vapidir=$(builddir) \
|
||||
--library eek-clutter-$(EEK_API_VERSION) \
|
||||
--pkg eek-$(EEK_API_VERSION) \
|
||||
--pkg clutter-1.0 \
|
||||
--pkg gio-2.0 \
|
||||
--pkg atk \
|
||||
eek-clutter-$(EEK_API_VERSION)/eek-clutter-$(EEK_API_VERSION).gi
|
||||
|
||||
eek-gtk-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi
|
||||
vapigen --vapidir=$(builddir) --library eek-gtk-$(EEK_API_VERSION) \
|
||||
--pkg eek-0.1 --pkg gtk+-2.0 \
|
||||
$(VAPIGEN_V)$(VAPIGEN) --vapidir=$(builddir) \
|
||||
--library eek-gtk-$(EEK_API_VERSION) \
|
||||
--pkg eek-$(EEK_API_VERSION) \
|
||||
--pkg gtk+-2.0 \
|
||||
eek-gtk-$(EEK_API_VERSION)/eek-gtk-$(EEK_API_VERSION).gi
|
||||
|
||||
eek-xkb-$(EEK_API_VERSION).vapi: eek-$(EEK_API_VERSION).vapi
|
||||
vapigen --vapidir=$(builddir) --library eek-xkb-$(EEK_API_VERSION) \
|
||||
--pkg eek-0.1 \
|
||||
$(VAPIGEN_V)$(VAPIGEN) --vapidir=$(builddir) \
|
||||
--library eek-xkb-$(EEK_API_VERSION) \
|
||||
--pkg eek-$(EEK_API_VERSION) \
|
||||
--pkg gio-2.0 \
|
||||
eek-xkb-$(EEK_API_VERSION)/eek-xkb-$(EEK_API_VERSION).gi
|
||||
|
||||
eek-xkl-$(EEK_API_VERSION).vapi: eek-xkb-$(EEK_API_VERSION).vapi
|
||||
vapigen --vapidir=$(builddir) --library eek-xkl-$(EEK_API_VERSION) \
|
||||
--pkg eek-0.1 --pkg eek-xkb-0.1 \
|
||||
$(VAPIGEN_V)$(VAPIGEN) --vapidir=$(builddir) \
|
||||
--library eek-xkl-$(EEK_API_VERSION) \
|
||||
--pkg eek-$(EEK_API_VERSION) \
|
||||
--pkg eek-xkb-$(EEK_API_VERSION) --pkg gio-2.0 \
|
||||
eek-xkl-$(EEK_API_VERSION)/eek-xkl-$(EEK_API_VERSION).gi
|
||||
|
||||
eekboard-$(EEK_API_VERSION).vapi:
|
||||
$(VAPIGEN_V)$(VAPIGEN) \
|
||||
--library eekboard-$(EEK_API_VERSION) \
|
||||
--pkg eek-$(EEK_API_VERSION) \
|
||||
--pkg gio-2.0 \
|
||||
eek-$(EEK_API_VERSION)/eek-$(EEK_API_VERSION).gi
|
||||
|
||||
# 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 " $@;
|
||||
|
||||
@ -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>
|
||||
2
bindings/vala/eek-0.90/eek-0.90.defines
Normal file
2
bindings/vala/eek-0.90/eek-0.90.defines
Normal file
@ -0,0 +1,2 @@
|
||||
-DEEK_COMPILATION=1
|
||||
|
||||
16
bindings/vala/eek-0.90/eek-0.90.files
Normal file
16
bindings/vala/eek-0.90/eek-0.90.files
Normal file
@ -0,0 +1,16 @@
|
||||
include/eek-0.90/eek/eek-container.h
|
||||
include/eek-0.90/eek/eek-element.h
|
||||
include/eek-0.90/eek/eek-enumtypes.h
|
||||
include/eek-0.90/eek/eek-keyboard.h
|
||||
include/eek-0.90/eek/eek-key.h
|
||||
include/eek-0.90/eek/eek-keysym.h
|
||||
include/eek-0.90/eek/eek-layout.h
|
||||
include/eek-0.90/eek/eek-section.h
|
||||
include/eek-0.90/eek/eek-serializable.h
|
||||
include/eek-0.90/eek/eek-symbol.h
|
||||
include/eek-0.90/eek/eek-symbol-matrix.h
|
||||
include/eek-0.90/eek/eek-theme.h
|
||||
include/eek-0.90/eek/eek-types.h
|
||||
include/eek-0.90/eek/eek-xml.h
|
||||
include/eek-0.90/eek/eek-xml-layout.h
|
||||
lib/libeek.so
|
||||
1243
bindings/vala/eek-0.90/eek-0.90.gi
Normal file
1243
bindings/vala/eek-0.90/eek-0.90.gi
Normal file
File diff suppressed because it is too large
Load Diff
@ -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>
|
||||
2
bindings/vala/eek-clutter-0.90/eek-clutter-0.90.defines
Normal file
2
bindings/vala/eek-clutter-0.90/eek-clutter-0.90.defines
Normal file
@ -0,0 +1,2 @@
|
||||
-DEEK_COMPILATION=1
|
||||
|
||||
2
bindings/vala/eek-clutter-0.90/eek-clutter-0.90.files
Normal file
2
bindings/vala/eek-clutter-0.90/eek-clutter-0.90.files
Normal file
@ -0,0 +1,2 @@
|
||||
include/eek-0.90/eek/eek-clutter-keyboard.h
|
||||
lib/libeek-clutter.so
|
||||
28
bindings/vala/eek-clutter-0.90/eek-clutter-0.90.gi
Normal file
28
bindings/vala/eek-clutter-0.90/eek-clutter-0.90.gi
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0"?>
|
||||
<api version="1.0">
|
||||
<namespace name="EekClutter">
|
||||
<object name="EekClutterKeyboard" parent="ClutterGroup" type-name="EekClutterKeyboard" get-type="eek_clutter_keyboard_get_type">
|
||||
<implements>
|
||||
<interface name="ClutterScriptable"/>
|
||||
<interface name="ClutterAnimatable"/>
|
||||
<interface name="AtkImplementor"/>
|
||||
<interface name="ClutterContainer"/>
|
||||
</implements>
|
||||
<constructor name="new" symbol="eek_clutter_keyboard_new">
|
||||
<return-type type="ClutterActor*"/>
|
||||
<parameters>
|
||||
<parameter name="keyboard" type="EekKeyboard*"/>
|
||||
</parameters>
|
||||
</constructor>
|
||||
<method name="set_theme" symbol="eek_clutter_keyboard_set_theme">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="keyboard" type="EekClutterKeyboard*"/>
|
||||
<parameter name="theme" type="EekTheme*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<property name="keyboard" type="EekKeyboard*" readable="0" writable="1" construct="0" construct-only="1"/>
|
||||
</object>
|
||||
<constant name="EEK_CLUTTER_KEYBOARD_H" type="int" value="1"/>
|
||||
</namespace>
|
||||
</api>
|
||||
@ -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>
|
||||
2
bindings/vala/eek-gtk-0.90/eek-gtk-0.90.defines
Normal file
2
bindings/vala/eek-gtk-0.90/eek-gtk-0.90.defines
Normal file
@ -0,0 +1,2 @@
|
||||
-DEEK_COMPILATION=1
|
||||
|
||||
2
bindings/vala/eek-gtk-0.90/eek-gtk-0.90.files
Normal file
2
bindings/vala/eek-gtk-0.90/eek-gtk-0.90.files
Normal file
@ -0,0 +1,2 @@
|
||||
include/eek-0.90/eek/eek-gtk-keyboard.h
|
||||
lib/libeek-gtk.so
|
||||
26
bindings/vala/eek-gtk-0.90/eek-gtk-0.90.gi
Normal file
26
bindings/vala/eek-gtk-0.90/eek-gtk-0.90.gi
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0"?>
|
||||
<api version="1.0">
|
||||
<namespace name="EekGtk">
|
||||
<object name="EekGtkKeyboard" parent="GtkDrawingArea" type-name="EekGtkKeyboard" get-type="eek_gtk_keyboard_get_type">
|
||||
<implements>
|
||||
<interface name="AtkImplementor"/>
|
||||
<interface name="GtkBuildable"/>
|
||||
</implements>
|
||||
<constructor name="new" symbol="eek_gtk_keyboard_new">
|
||||
<return-type type="GtkWidget*"/>
|
||||
<parameters>
|
||||
<parameter name="keyboard" type="EekKeyboard*"/>
|
||||
</parameters>
|
||||
</constructor>
|
||||
<method name="set_theme" symbol="eek_gtk_keyboard_set_theme">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="keyboard" type="EekGtkKeyboard*"/>
|
||||
<parameter name="theme" type="EekTheme*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<property name="keyboard" type="EekKeyboard*" readable="0" writable="1" construct="0" construct-only="1"/>
|
||||
</object>
|
||||
<constant name="EEK_GTK_KEYBOARD_H" type="int" value="1"/>
|
||||
</namespace>
|
||||
</api>
|
||||
@ -1,2 +0,0 @@
|
||||
include/eek-0.1/eek/eek-xkb-layout.h
|
||||
lib/libeek-xkb.so
|
||||
2
bindings/vala/eek-xkb-0.90/eek-xkb-0.90.defines
Normal file
2
bindings/vala/eek-xkb-0.90/eek-xkb-0.90.defines
Normal file
@ -0,0 +1,2 @@
|
||||
-DEEK_COMPILATION=1
|
||||
|
||||
2
bindings/vala/eek-xkb-0.90/eek-xkb-0.90.files
Normal file
2
bindings/vala/eek-xkb-0.90/eek-xkb-0.90.files
Normal file
@ -0,0 +1,2 @@
|
||||
include/eek-0.90/eek/eek-xkb-layout.h
|
||||
lib/libeek-xkb.so
|
||||
@ -1,10 +1,7 @@
|
||||
<?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>
|
||||
<object name="EekXkbLayout" parent="EekLayout" type-name="EekXkbLayout" get-type="eek_xkb_layout_get_type">
|
||||
<method name="get_geometry" symbol="eek_xkb_layout_get_geometry">
|
||||
<return-type type="gchar*"/>
|
||||
<parameters>
|
||||
@ -40,7 +37,6 @@
|
||||
<parameter name="keycodes" type="gchar*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<!--
|
||||
<method name="set_names" symbol="eek_xkb_layout_set_names">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
@ -48,7 +44,19 @@
|
||||
<parameter name="names" type="XkbComponentNamesRec*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
-->
|
||||
<method name="set_names_full" symbol="eek_xkb_layout_set_names_full">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="layout" type="EekXkbLayout*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_names_full_valist" symbol="eek_xkb_layout_set_names_full_valist">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="layout" type="EekXkbLayout*"/>
|
||||
<parameter name="var_args" type="va_list"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_symbols" symbol="eek_xkb_layout_set_symbols">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
@ -1 +1,2 @@
|
||||
EekXkb cheader_filename="eek/eek-xkb.h"
|
||||
eek_xkb_layout_set_names hidden="1"
|
||||
@ -1,3 +0,0 @@
|
||||
include/eek-0.1/eek/eek-xkl-layout.h
|
||||
lib/libeek-xkl.so
|
||||
|
||||
2
bindings/vala/eek-xkl-0.90/eek-xkl-0.90.defines
Normal file
2
bindings/vala/eek-xkl-0.90/eek-xkl-0.90.defines
Normal file
@ -0,0 +1,2 @@
|
||||
-DEEK_COMPILATION=1
|
||||
|
||||
2
bindings/vala/eek-xkl-0.90/eek-xkl-0.90.files
Normal file
2
bindings/vala/eek-xkl-0.90/eek-xkl-0.90.files
Normal file
@ -0,0 +1,2 @@
|
||||
include/eek-0.90/eek/eek-xkl-layout.h
|
||||
lib/libeek-xkl.so
|
||||
@ -2,9 +2,6 @@
|
||||
<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>
|
||||
@ -53,6 +50,23 @@
|
||||
<constructor name="new" symbol="eek_xkl_layout_new">
|
||||
<return-type type="EekLayout*"/>
|
||||
</constructor>
|
||||
<method name="set_config" symbol="eek_xkl_layout_set_config">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="layout" type="EekXklLayout*"/>
|
||||
<parameter name="config" type="XklConfigRec*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_config_full" symbol="eek_xkl_layout_set_config_full">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="layout" type="EekXklLayout*"/>
|
||||
<parameter name="model" type="gchar*"/>
|
||||
<parameter name="layouts" type="gchar**"/>
|
||||
<parameter name="variants" type="gchar**"/>
|
||||
<parameter name="options" type="gchar**"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_layouts" symbol="eek_xkl_layout_set_layouts">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
@ -1 +1,2 @@
|
||||
EekXkl cheader_filename="eek/eek-xkl.h"
|
||||
eek_xkl_layout_set_config hidden="1"
|
||||
2
bindings/vala/eekboard-0.90/eekboard-0.90.defines
Normal file
2
bindings/vala/eekboard-0.90/eekboard-0.90.defines
Normal file
@ -0,0 +1,2 @@
|
||||
-DEEKBOARD_COMPILATION
|
||||
|
||||
2
bindings/vala/eekboard-0.90/eekboard-0.90.files
Normal file
2
bindings/vala/eekboard-0.90/eekboard-0.90.files
Normal file
@ -0,0 +1,2 @@
|
||||
include/eekboard-0.90/eekboard
|
||||
lib/libeekboard.so
|
||||
340
bindings/vala/eekboard-0.90/eekboard-0.90.gi
Normal file
340
bindings/vala/eekboard-0.90/eekboard-0.90.gi
Normal file
@ -0,0 +1,340 @@
|
||||
<?xml version="1.0"?>
|
||||
<api version="1.0">
|
||||
<namespace name="Eekboard">
|
||||
<function name="xkl_config_rec_from_string" symbol="eekboard_xkl_config_rec_from_string">
|
||||
<return-type type="XklConfigRec*"/>
|
||||
<parameters>
|
||||
<parameter name="layouts" type="gchar*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="xkl_config_rec_to_string" symbol="eekboard_xkl_config_rec_to_string">
|
||||
<return-type type="gchar*"/>
|
||||
<parameters>
|
||||
<parameter name="rec" type="XklConfigRec*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="xkl_list_layout_variants" symbol="eekboard_xkl_list_layout_variants">
|
||||
<return-type type="GSList*"/>
|
||||
<parameters>
|
||||
<parameter name="registry" type="XklConfigRegistry*"/>
|
||||
<parameter name="layout" type="gchar*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="xkl_list_layouts" symbol="eekboard_xkl_list_layouts">
|
||||
<return-type type="GSList*"/>
|
||||
<parameters>
|
||||
<parameter name="registry" type="XklConfigRegistry*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="xkl_list_models" symbol="eekboard_xkl_list_models">
|
||||
<return-type type="GSList*"/>
|
||||
<parameters>
|
||||
<parameter name="registry" type="XklConfigRegistry*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="xkl_list_option_groups" symbol="eekboard_xkl_list_option_groups">
|
||||
<return-type type="GSList*"/>
|
||||
<parameters>
|
||||
<parameter name="registry" type="XklConfigRegistry*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="xkl_list_options" symbol="eekboard_xkl_list_options">
|
||||
<return-type type="GSList*"/>
|
||||
<parameters>
|
||||
<parameter name="registry" type="XklConfigRegistry*"/>
|
||||
<parameter name="group" type="gchar*"/>
|
||||
</parameters>
|
||||
</function>
|
||||
<object name="EekboardClient" parent="GDBusProxy" type-name="EekboardClient" get-type="eekboard_client_get_type">
|
||||
<implements>
|
||||
<interface name="GInitable"/>
|
||||
<interface name="GAsyncInitable"/>
|
||||
</implements>
|
||||
<method name="create_context" symbol="eekboard_client_create_context">
|
||||
<return-type type="EekboardContext*"/>
|
||||
<parameters>
|
||||
<parameter name="eekboard" type="EekboardClient*"/>
|
||||
<parameter name="client_name" type="gchar*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="destroy_context" symbol="eekboard_client_destroy_context">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="eekboard" type="EekboardClient*"/>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<constructor name="new" symbol="eekboard_client_new">
|
||||
<return-type type="EekboardClient*"/>
|
||||
<parameters>
|
||||
<parameter name="connection" type="GDBusConnection*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</constructor>
|
||||
<method name="pop_context" symbol="eekboard_client_pop_context">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="eekboard" type="EekboardClient*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="push_context" symbol="eekboard_client_push_context">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="eekboard" type="EekboardClient*"/>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<signal name="destroyed" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardClient*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
</object>
|
||||
<object name="EekboardContext" parent="GDBusProxy" type-name="EekboardContext" get-type="eekboard_context_get_type">
|
||||
<implements>
|
||||
<interface name="GInitable"/>
|
||||
<interface name="GAsyncInitable"/>
|
||||
</implements>
|
||||
<method name="add_keyboard" symbol="eekboard_context_add_keyboard">
|
||||
<return-type type="guint"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="keyboard" type="gchar*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="get_group" symbol="eekboard_context_get_group">
|
||||
<return-type type="gint"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="hide_keyboard" symbol="eekboard_context_hide_keyboard">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="is_enabled" symbol="eekboard_context_is_enabled">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="is_keyboard_visible" symbol="eekboard_context_is_keyboard_visible">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<constructor name="new" symbol="eekboard_context_new">
|
||||
<return-type type="EekboardContext*"/>
|
||||
<parameters>
|
||||
<parameter name="connection" type="GDBusConnection*"/>
|
||||
<parameter name="object_path" type="gchar*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</constructor>
|
||||
<method name="press_keycode" symbol="eekboard_context_press_keycode">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="keycode" type="guint"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="release_keycode" symbol="eekboard_context_release_keycode">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="keycode" type="guint"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="remove_keyboard" symbol="eekboard_context_remove_keyboard">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="keyboard_id" type="guint"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_enabled" symbol="eekboard_context_set_enabled">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="enabled" type="gboolean"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_fullscreen" symbol="eekboard_context_set_fullscreen">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="fullscreen" type="gboolean"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_group" symbol="eekboard_context_set_group">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="group" type="gint"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="set_keyboard" symbol="eekboard_context_set_keyboard">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="keyboard_id" type="guint"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="show_keyboard" symbol="eekboard_context_show_keyboard">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContext*"/>
|
||||
<parameter name="cancellable" type="GCancellable*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<property name="visible" type="gboolean" readable="1" writable="0" construct="0" construct-only="0"/>
|
||||
<signal name="destroyed" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContext*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
<signal name="disabled" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContext*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
<signal name="enabled" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContext*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
<signal name="key-pressed" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContext*"/>
|
||||
<parameter name="keyname" type="char*"/>
|
||||
<parameter name="symbol" type="GObject*"/>
|
||||
<parameter name="modifiers" type="guint"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
</object>
|
||||
<object name="EekboardContextService" parent="GObject" type-name="EekboardContextService" get-type="eekboard_context_service_get_type">
|
||||
<method name="disable" symbol="eekboard_context_service_disable">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="enable" symbol="eekboard_context_service_enable">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="get_client_name" symbol="eekboard_context_service_get_client_name">
|
||||
<return-type type="gchar*"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="get_fullscreen" symbol="eekboard_context_service_get_fullscreen">
|
||||
<return-type type="gboolean"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<method name="get_keyboard" symbol="eekboard_context_service_get_keyboard">
|
||||
<return-type type="EekKeyboard*"/>
|
||||
<parameters>
|
||||
<parameter name="context" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</method>
|
||||
<property name="client-name" type="char*" readable="1" writable="1" construct="0" construct-only="0"/>
|
||||
<property name="connection" type="GDBusConnection*" readable="1" writable="1" construct="1" construct-only="0"/>
|
||||
<property name="fullscreen" type="gboolean" readable="1" writable="1" construct="0" construct-only="0"/>
|
||||
<property name="keyboard" type="EekKeyboard*" readable="1" writable="1" construct="0" construct-only="0"/>
|
||||
<property name="object-path" type="char*" readable="1" writable="1" construct="1" construct-only="0"/>
|
||||
<property name="visible" type="gboolean" readable="1" writable="1" construct="0" construct-only="0"/>
|
||||
<signal name="disabled" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
<signal name="enabled" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
<vfunc name="create_keyboard">
|
||||
<return-type type="EekKeyboard*"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContextService*"/>
|
||||
<parameter name="keyboard_type" type="gchar*"/>
|
||||
</parameters>
|
||||
</vfunc>
|
||||
<vfunc name="hide_keyboard">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</vfunc>
|
||||
<vfunc name="show_keyboard">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardContextService*"/>
|
||||
</parameters>
|
||||
</vfunc>
|
||||
</object>
|
||||
<object name="EekboardService" parent="GObject" type-name="EekboardService" get-type="eekboard_service_get_type">
|
||||
<constructor name="new" symbol="eekboard_service_new">
|
||||
<return-type type="EekboardService*"/>
|
||||
<parameters>
|
||||
<parameter name="object_path" type="gchar*"/>
|
||||
<parameter name="connection" type="GDBusConnection*"/>
|
||||
</parameters>
|
||||
</constructor>
|
||||
<property name="connection" type="GDBusConnection*" readable="1" writable="1" construct="1" construct-only="0"/>
|
||||
<property name="object-path" type="char*" readable="1" writable="1" construct="1" construct-only="0"/>
|
||||
<signal name="destroyed" when="LAST">
|
||||
<return-type type="void"/>
|
||||
<parameters>
|
||||
<parameter name="object" type="EekboardService*"/>
|
||||
</parameters>
|
||||
</signal>
|
||||
<vfunc name="create_context">
|
||||
<return-type type="EekboardContextService*"/>
|
||||
<parameters>
|
||||
<parameter name="self" type="EekboardService*"/>
|
||||
<parameter name="client_name" type="gchar*"/>
|
||||
<parameter name="object_path" type="gchar*"/>
|
||||
</parameters>
|
||||
</vfunc>
|
||||
</object>
|
||||
<constant name="EEKBOARD_CLIENT_H" type="int" value="1"/>
|
||||
<constant name="EEKBOARD_CONTEXT_H" type="int" value="1"/>
|
||||
<constant name="EEKBOARD_CONTEXT_SERVICE_H" type="int" value="1"/>
|
||||
<constant name="EEKBOARD_CONTEXT_SERVICE_INTERFACE" type="char*" value="org.fedorahosted.Eekboard.Context"/>
|
||||
<constant name="EEKBOARD_CONTEXT_SERVICE_PATH" type="char*" value="/org/fedorahosted/Eekboard/Context_%d"/>
|
||||
<constant name="EEKBOARD_SERVICE_H" type="int" value="1"/>
|
||||
<constant name="EEKBOARD_SERVICE_INTERFACE" type="char*" value="org.fedorahosted.Eekboard"/>
|
||||
<constant name="EEKBOARD_SERVICE_PATH" type="char*" value="/org/fedorahosted/Eekboard"/>
|
||||
<constant name="EEKBOARD_XKLUTIL_H" type="int" value="1"/>
|
||||
</namespace>
|
||||
</api>
|
||||
1
bindings/vala/eekboard-0.90/eekboard-0.90.metadata
Normal file
1
bindings/vala/eekboard-0.90/eekboard-0.90.metadata
Normal file
@ -0,0 +1 @@
|
||||
Eekboard cheader_filename="eekboard/eekboard.h"
|
||||
1
bindings/vala/eekboard-0.90/eekboard-0.90.namespace
Normal file
1
bindings/vala/eekboard-0.90/eekboard-0.90.namespace
Normal file
@ -0,0 +1 @@
|
||||
Eekboard
|
||||
347
configure.ac
347
configure.ac
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -16,44 +16,59 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA
|
||||
|
||||
AC_INIT([eekboard], [0.0.6], [ueno@unixuser.org])
|
||||
AC_CONFIG_SRCDIR([configure.ac])
|
||||
AC_PREREQ(2.63)
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_PROG_CC_C_O
|
||||
dnl AC_CONFIG_SRCDIR([configure.ac])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AC_INIT([eekboard], [1.0.2], [ueno@unixuser.org])
|
||||
|
||||
dnl Init automake
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_MAINTAINER_MODE([enable])
|
||||
AC_GNU_SOURCE
|
||||
|
||||
dnl Support silent build
|
||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
||||
|
||||
dnl Check for programs
|
||||
AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CC_STDC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_CXX
|
||||
|
||||
# define PACKAGE_VERSION_* variables
|
||||
AM_DISABLE_STATIC
|
||||
AC_ISC_POSIX
|
||||
AC_HEADER_STDC
|
||||
LT_INIT
|
||||
IT_PROG_INTLTOOL([0.35.0])
|
||||
|
||||
AC_MSG_CHECKING([which gtk+ version to compile against])
|
||||
AC_ARG_WITH([gtk],
|
||||
[AS_HELP_STRING([--with-gtk=2.0|3.0],[which gtk+ version to compile against (default: 2.0)])],
|
||||
[AS_HELP_STRING([--with-gtk=2.0|3.0],[which gtk+ version to compile against (default: 3.0)])],
|
||||
[case "$with_gtk" in
|
||||
2.0|3.0) ;;
|
||||
*) AC_MSG_ERROR([invalid gtk version specified]) ;;
|
||||
esac],
|
||||
[with_gtk=2.0])
|
||||
[with_gtk=3.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.1
|
||||
EEK_API_VERSION=0.90
|
||||
EEK_API_MAJOR_VERSION=0
|
||||
EEK_API_MINOR_VERSION=1
|
||||
EEK_API_PC_VERSION=0.1
|
||||
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_API_VERSION=0.1
|
||||
EEK_API_VERSION=0.90
|
||||
EEK_API_MAJOR_VERSION=0
|
||||
EEK_API_MINOR_VERSION=1
|
||||
EEK_API_PC_VERSION=0.1
|
||||
EEK_API_MINOR_VERSION=90
|
||||
EEK_API_PC_VERSION=0.90
|
||||
EEK_LIBRARY_SUFFIX="-$EEK_API_VERSION"
|
||||
;;
|
||||
esac
|
||||
@ -69,91 +84,229 @@ 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"])
|
||||
|
||||
PKG_CHECK_MODULES([GLIB2], [glib-2.0], ,
|
||||
AM_PATH_GLIB_2_0
|
||||
PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.26.0], ,
|
||||
[AC_MSG_ERROR([GLib2 not found])])
|
||||
PKG_CHECK_MODULES([GOBJECT2], [gobject-2.0], ,
|
||||
[AC_MSG_ERROR([GObject2 not found])])
|
||||
PKG_CHECK_MODULES([CAIRO], [cairo], ,
|
||||
[AC_MSG_ERROR([Cairo not found])])
|
||||
PKG_CHECK_MODULES([PANGO], [pango], ,
|
||||
[AC_MSG_ERROR([Pango not found])])
|
||||
PKG_CHECK_MODULES([GIO2], [gio-2.0], ,
|
||||
[AC_MSG_ERROR([Gio2 not found])])
|
||||
GLIB_GSETTINGS
|
||||
|
||||
PKG_CHECK_MODULES([PANGOCAIRO], [pangocairo], ,
|
||||
[AC_MSG_ERROR([PangoCairo not found])])
|
||||
PKG_CHECK_MODULES([GTK], [
|
||||
gtk+-$GTK_API_VERSION >= $GTK_REQUIRED
|
||||
gdk-$GTK_API_VERSION >= $GTK_REQUIRED], ,
|
||||
[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], ,
|
||||
[AC_MSG_ERROR([Libxklavier not found])])
|
||||
PKG_CHECK_MODULES([LIBFAKEKEY], [libfakekey], ,
|
||||
[AC_MSG_ERROR([libfakekey not found])])
|
||||
PKG_CHECK_MODULES([CSPI], [cspi-1.0], ,
|
||||
[AC_MSG_ERROR([AT-SPI C not found])])
|
||||
PKG_CHECK_MODULES([LIBCROCO], [libcroco-0.6], ,
|
||||
[AC_MSG_ERROR([libcroco not found])])
|
||||
|
||||
PKG_CHECK_MODULES([NOTIFY], [libnotify], ,
|
||||
[AC_MSG_ERROR([libnotify not found])])
|
||||
dnl use XTest to generate key events
|
||||
AC_MSG_CHECKING([whether you enable XTest])
|
||||
AC_ARG_ENABLE(xtest,
|
||||
AS_HELP_STRING([--enable-xtest=no/yes],
|
||||
[Enable XTest default=yes]),
|
||||
enable_xtest=$enableval,
|
||||
enable_xtest=yes)
|
||||
|
||||
dnl libnotify >= 0.7.0 omitted the feature to attach notification to widget.
|
||||
need_libnotify_attach_workaround=0
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$NOTIFY_CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$NOTIFY_LIBS"
|
||||
AC_TRY_LINK([#include <libnotify/notification.h>],
|
||||
[notify_notification_new (NULL, NULL, NULL);], ,
|
||||
[need_libnotify_attach_workaround=1])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
LIBS="$save_LIBS"
|
||||
AC_DEFINE_UNQUOTED([NEED_LIBNOTIFY_ATTACH_WORKAROUND],
|
||||
$need_libnotify_attach_workaround,
|
||||
[Define if notify_notification_new work around is needed])
|
||||
if test x$enable_xtest = xyes; then
|
||||
PKG_CHECK_MODULES([XTEST], [xtst], , enable_xtest=no)
|
||||
if test x$enable_xtest = xyes; then
|
||||
AC_DEFINE([HAVE_XTEST], [1], [Define if XTest is found])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_XTEST, [test x$enable_xtest = xyes])
|
||||
AC_MSG_RESULT($enable_xtest)
|
||||
|
||||
dnl use X to mark the fullscreen window as dock
|
||||
AC_MSG_CHECKING([whether you enable X dock])
|
||||
AC_ARG_ENABLE(x-dock,
|
||||
AS_HELP_STRING([--enable-x-dock=no/yes],
|
||||
[Enable X dock default=yes]),
|
||||
enable_x_dock=$enableval,
|
||||
enable_x_dock=yes)
|
||||
|
||||
if test x$enable_x_dock = xyes; then
|
||||
PKG_CHECK_MODULES([XDOCK], [x11], , enable_x_dock=no)
|
||||
if test x$enable_x_dock = xyes; then
|
||||
AC_DEFINE([HAVE_XDOCK], [1], [Define if X dock is found])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_XDOCK, [test x$enable_x_dock = xyes])
|
||||
AC_MSG_RESULT($enable_x_dock)
|
||||
|
||||
focus_listeners=""
|
||||
keystroke_listeners=""
|
||||
|
||||
focus_listeners=""
|
||||
keystroke_listeners=""
|
||||
|
||||
dnl use AT-SPI 2 to capture focus/keystroke events
|
||||
AC_MSG_CHECKING([whether you enable AT-SPI 2 event handling])
|
||||
AC_ARG_ENABLE(atspi,
|
||||
AS_HELP_STRING([--enable-atspi=no/yes],
|
||||
[Enable AT-SPI 2 event handling default=yes]),
|
||||
enable_atspi=$enableval,
|
||||
enable_atspi=yes)
|
||||
|
||||
if test x$enable_atspi = xyes; then
|
||||
PKG_CHECK_MODULES([ATSPI2], [atspi-2 dbus-glib-1], , enable_atspi=no)
|
||||
if test x$enable_atspi = xyes; then
|
||||
AC_DEFINE([HAVE_ATSPI], [1], [Define if AT-SPI 2 is found])
|
||||
focus_listeners="atspi $focus_listeners"
|
||||
keystroke_listeners="atspi $keystroke_listeners"
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT($enable_atspi)
|
||||
AM_CONDITIONAL(ENABLE_ATSPI, [test x$enable_atspi = xyes])
|
||||
|
||||
dnl use IBus to capture focus events
|
||||
AC_MSG_CHECKING([whether you enable IBus focus tracking])
|
||||
AC_ARG_ENABLE(ibus,
|
||||
AS_HELP_STRING([--enable-ibus=no/yes],
|
||||
[Enable IBus focus tracking default=yes]),
|
||||
enable_ibus=$enableval,
|
||||
enable_ibus=yes)
|
||||
|
||||
if test x$enable_ibus = xyes; then
|
||||
PKG_CHECK_MODULES([IBUS], [ibus-1.0 >= 1.3.99], , enable_ibus=no)
|
||||
if test x$enable_ibus = xyes; then
|
||||
AC_DEFINE([HAVE_IBUS], [1], [Define if IBus is found])
|
||||
focus_listeners="ibus $focus_listeners"
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT($enable_ibus)
|
||||
AM_CONDITIONAL(ENABLE_IBUS, [test x$enable_ibus = xyes])
|
||||
|
||||
if test -n "$focus_listeners"; then
|
||||
AC_DEFINE(ENABLE_FOCUS_LISTENER, [1], [Define if eekboard can follow focus changes])
|
||||
fi
|
||||
|
||||
dnl Python language binding
|
||||
AC_MSG_CHECKING([whether you enable Python language support])
|
||||
AC_ARG_ENABLE(python,
|
||||
AS_HELP_STRING([--enable-python=no/yes],
|
||||
[Enable Python language binding default=yes]),
|
||||
enable_python=$enableval,
|
||||
enable_python=yes)
|
||||
|
||||
dnl check python unconditionally to re-generate
|
||||
dnl eek/*-keysym-labels.txt when maintainer-mode enabled
|
||||
AM_PATH_PYTHON([2.5], , enable_python=no)
|
||||
|
||||
if test x"$enable_python" = x"yes"; then
|
||||
if test x$enable_python = xyes; then
|
||||
AC_PATH_PROGS(PYTHON_CONFIG, [python$PYTHON_VERSION-config python-config])
|
||||
if test x"$PYTHON_CONFIG" != x""; then
|
||||
PYTHON_CFLAGS=`$PYTHON_CONFIG --includes`
|
||||
PYTHON_LIBS=`$PYTHON_CONFIG --libs`
|
||||
else
|
||||
PYTHON_CFLAGS=`$PYTHON $srcdir/python-config.py --includes`
|
||||
PYTHON_LIBS=`$PYTHON $srcdir/python-config.py --libs`
|
||||
fi
|
||||
PYTHON_INCLUDES="$PYTHON_CFLAGS"
|
||||
AC_SUBST(PYTHON_CFLAGS)
|
||||
AC_SUBST(PYTHON_INCLUDES)
|
||||
AC_SUBST(PYTHON_LIBS)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT($enable_python)
|
||||
AM_CONDITIONAL(ENABLE_PYTHON, [test x$enable_python = xyes])
|
||||
|
||||
GOBJECT_INTROSPECTION_CHECK([0.9.0])
|
||||
|
||||
dnl Vala langauge binding
|
||||
AC_MSG_CHECKING([whether you enable Vala language support])
|
||||
AC_ARG_ENABLE(vala,
|
||||
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)
|
||||
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)
|
||||
AM_CONDITIONAL(ENABLE_VALA, [test x$enable_vala = xyes])
|
||||
|
||||
AC_MSG_CHECKING([whether you enable eekboard])
|
||||
AC_ARG_ENABLE(eekboard,
|
||||
AS_HELP_STRING([--enable-eekboard=no/yes],
|
||||
[Build standalone application "ekboard" default=yes]),,
|
||||
enable_eekboard=yes)
|
||||
AC_MSG_RESULT($enable_eekboard)
|
||||
AM_CONDITIONAL(ENABLE_EEKBOARD, [test x$enable_eekboard = xyes])
|
||||
|
||||
AC_MSG_CHECKING([whether you enable Clutter])
|
||||
dnl clutter
|
||||
AC_MSG_CHECKING([whether you enable clutter])
|
||||
AC_ARG_ENABLE(clutter,
|
||||
AS_HELP_STRING([--enable-clutter=no/yes],
|
||||
[Enable Clutter user interface default=yes]),,
|
||||
enable_clutter=yes)
|
||||
AC_MSG_RESULT($enable_clutter)
|
||||
[Enable clutter user interface default=no]),
|
||||
enable_clutter=$enableval,
|
||||
enable_clutter=no)
|
||||
|
||||
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])
|
||||
PKG_CHECK_MODULES([CLUTTER], [clutter-1.0], , enable_clutter=no)
|
||||
if test x$enable_clutter = xyes; then
|
||||
AC_DEFINE([HAVE_CLUTTER], [1], [Define if clutter is found])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_CLUTTER, [test x$enable_clutter = xyes])
|
||||
AM_CONDITIONAL(ENABLE_CLUTTER, [test x$enable_clutter = xyes])
|
||||
AC_MSG_RESULT($enable_clutter)
|
||||
|
||||
dnl clutter-gtk
|
||||
if test x$enable_clutter = xyes; then
|
||||
AC_MSG_CHECKING([whether you enable clutter-gtk])
|
||||
AC_ARG_ENABLE(clutter-gtk,
|
||||
AS_HELP_STRING([--enable-clutter-gtk=no/yes],
|
||||
[Enable clutter user interface default=yes]),
|
||||
enable_clutter_gtk=$enableval,
|
||||
enable_clutter_gtk=yes)
|
||||
|
||||
if test x$enable_clutter_gtk = xyes; then
|
||||
PKG_CHECK_MODULES([CLUTTER_GTK], [clutter-gtk-1.0], ,
|
||||
enable_clutter_gtk=no)
|
||||
if test x$enable_clutter_gtk = xyes; then
|
||||
AC_DEFINE([HAVE_CLUTTER_GTK], [1], [Define if Clutter-Gtk is found])
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT($enable_clutter_gtk)
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_CLUTTER_GTK, [test x$enable_clutter_gtk = xyes])
|
||||
|
||||
dnl libcanberra
|
||||
AC_MSG_CHECKING([whether you enable libcanberra])
|
||||
AC_ARG_ENABLE(libcanberra,
|
||||
AS_HELP_STRING([--enable-libcanberra=no/yes],
|
||||
[Enable clutter user interface default=no]),
|
||||
enable_libcanberra=$enableval,
|
||||
enable_libcanberra=yes)
|
||||
|
||||
if test x$enable_libcanberra = xyes; then
|
||||
PKG_CHECK_MODULES([LIBCANBERRA], [libcanberra-gtk3], , enable_libcanberra=no)
|
||||
if test x$enable_libcanberra = xyes; then
|
||||
AC_DEFINE([HAVE_LIBCANBERRA], [1], [Define if libcanberra is found])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_LIBCANBERRA, [test x$enable_libcanberra = xyes])
|
||||
AC_MSG_RESULT($enable_libcanberra)
|
||||
|
||||
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
|
||||
GETTEXT_PACKAGE=$PACKAGE
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
@ -161,22 +314,56 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define to the read-only
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
AM_GLIB_DEFINE_LOCALEDIR(EEKBOARD_LOCALEDIR)
|
||||
|
||||
GOBJECT_INTROSPECTION_CHECK([0.6.7])
|
||||
|
||||
AC_CONFIG_HEADERS([eek/config.h])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_FILES([Makefile
|
||||
eek/Makefile
|
||||
eekboard/Makefile
|
||||
src/Makefile
|
||||
tests/Makefile
|
||||
bindings/Makefile
|
||||
bindings/python/Makefile
|
||||
bindings/python/eekboard/Makefile
|
||||
bindings/vala/Makefile
|
||||
docs/Makefile
|
||||
docs/reference/Makefile
|
||||
docs/reference/eek/Makefile
|
||||
docs/reference/eekboard/Makefile
|
||||
po/Makefile.in
|
||||
data/Makefile
|
||||
data/icons/Makefile
|
||||
data/icons/16x16/Makefile
|
||||
data/icons/22x22/Makefile
|
||||
data/icons/24x24/Makefile
|
||||
data/icons/32x32/Makefile
|
||||
data/icons/48x48/Makefile
|
||||
data/icons/scalable/Makefile
|
||||
data/themes/Makefile
|
||||
data/keyboards/Makefile
|
||||
examples/Makefile
|
||||
examples/eekxml/Makefile
|
||||
examples/simple-client/Makefile
|
||||
eek/eek-${EEK_API_VERSION}.pc
|
||||
eek/eek-clutter-${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])
|
||||
AC_OUTPUT
|
||||
AC_MSG_RESULT([
|
||||
Build options:
|
||||
Version $VERSION
|
||||
Install prefix $prefix
|
||||
Build shared libs $enable_shared
|
||||
Build static libs $enable_static
|
||||
CFLAGS $CFLAGS
|
||||
GTK version $with_gtk
|
||||
Build Clutter UI $enable_clutter
|
||||
Build Vala binding $enable_vala
|
||||
Build Python binding $enable_python
|
||||
Sound support $enable_libcanberra
|
||||
Build document $enable_gtk_doc
|
||||
Focus listeners $focus_listeners
|
||||
Keystroke listeners $keystroke_listeners
|
||||
])
|
||||
|
||||
|
||||
|
||||
34
data/Makefile.am
Normal file
34
data/Makefile.am
Normal file
@ -0,0 +1,34 @@
|
||||
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
|
||||
3
data/eekboard-server.service.in
Normal file
3
data/eekboard-server.service.in
Normal file
@ -0,0 +1,3 @@
|
||||
[D-BUS Service]
|
||||
Name=org.fedorahosted.Eekboard
|
||||
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;
|
||||
16
data/icons/16x16/Makefile.am
Normal file
16
data/icons/16x16/Makefile.am
Normal file
@ -0,0 +1,16 @@
|
||||
size = 16x16
|
||||
|
||||
icondir = $(datadir)/icons/hicolor/$(size)/apps
|
||||
dist_icon_DATA = eekboard.png
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. After install, run this:"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
fi
|
||||
|
||||
BIN
data/icons/16x16/eekboard.png
Normal file
BIN
data/icons/16x16/eekboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 606 B |
16
data/icons/22x22/Makefile.am
Normal file
16
data/icons/22x22/Makefile.am
Normal file
@ -0,0 +1,16 @@
|
||||
size = 22x22
|
||||
|
||||
icondir = $(datadir)/icons/hicolor/$(size)/apps
|
||||
dist_icon_DATA = eekboard.png
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. After install, run this:"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
fi
|
||||
|
||||
BIN
data/icons/22x22/eekboard.png
Normal file
BIN
data/icons/22x22/eekboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 892 B |
16
data/icons/24x24/Makefile.am
Normal file
16
data/icons/24x24/Makefile.am
Normal file
@ -0,0 +1,16 @@
|
||||
size = 24x24
|
||||
|
||||
icondir = $(datadir)/icons/hicolor/$(size)/apps
|
||||
dist_icon_DATA = eekboard.png
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. After install, run this:"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
fi
|
||||
|
||||
BIN
data/icons/24x24/eekboard.png
Normal file
BIN
data/icons/24x24/eekboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 957 B |
16
data/icons/32x32/Makefile.am
Normal file
16
data/icons/32x32/Makefile.am
Normal file
@ -0,0 +1,16 @@
|
||||
size = 32x32
|
||||
|
||||
icondir = $(datadir)/icons/hicolor/$(size)/apps
|
||||
dist_icon_DATA = eekboard.png
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. After install, run this:"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
fi
|
||||
|
||||
BIN
data/icons/32x32/eekboard.png
Normal file
BIN
data/icons/32x32/eekboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
16
data/icons/48x48/Makefile.am
Normal file
16
data/icons/48x48/Makefile.am
Normal file
@ -0,0 +1,16 @@
|
||||
size = 48x48
|
||||
|
||||
icondir = $(datadir)/icons/hicolor/$(size)/apps
|
||||
dist_icon_DATA = eekboard.png
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. After install, run this:"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
fi
|
||||
|
||||
BIN
data/icons/48x48/eekboard.png
Normal file
BIN
data/icons/48x48/eekboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
1
data/icons/Makefile.am
Normal file
1
data/icons/Makefile.am
Normal file
@ -0,0 +1 @@
|
||||
SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable
|
||||
14
data/icons/scalable/Makefile.am
Normal file
14
data/icons/scalable/Makefile.am
Normal file
@ -0,0 +1,14 @@
|
||||
icondir = $(datadir)/icons/hicolor/scalable/apps
|
||||
dist_icon_DATA = eekboard.svg
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
else \
|
||||
echo "*** Icon cache not updated. After install, run this:"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
fi
|
||||
|
||||
3486
data/icons/scalable/eekboard.svg
Normal file
3486
data/icons/scalable/eekboard.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 472 KiB |
2
data/keyboards/Makefile.am
Normal file
2
data/keyboards/Makefile.am
Normal file
@ -0,0 +1,2 @@
|
||||
keyboarddir = $(pkgdatadir)/keyboards
|
||||
dist_keyboard_DATA = us.xml th.xml jp-kana.xml
|
||||
697
data/keyboards/jp-kana.xml
Normal file
697
data/keyboards/jp-kana.xml
Normal file
@ -0,0 +1,697 @@
|
||||
<?xml version="1.0"?>
|
||||
<keyboard version="0.90">
|
||||
<bounds>0.000000,0.000000,640.000000,296.585366</bounds>
|
||||
<section name="LeftModifiers">
|
||||
<bounds>16.000000,78.048780,94.000000,202.000000</bounds>
|
||||
<angle>0</angle>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<key id="keycode61" name="TAB" column="1" row="0">
|
||||
<bounds>4.000000,43.000000,80.000000,38.000000</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="65289">Tab</keysym>
|
||||
<keysym keyval="65056">ISO_Left_Tab</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode56" name="CAPS" column="2" row="0">
|
||||
<bounds>4.000000,83.000000,80.000000,38.000000</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65507">Control_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode57" name="LFSH" column="3" row="0">
|
||||
<bounds>4.000000,122.000000,80.000000,38.000000</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65505">Shift_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode58" name="LCTL" column="4" row="0">
|
||||
<bounds>4.000000,162.341463,57.000000,38.000000</bounds>
|
||||
<oref>outline9</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<symbol label="⌨" icon="input-keyboard-symbolic">cycle-keyboard</symbol>
|
||||
<symbol label="☺" icon="preferences-system-symbolic">preferences</symbol>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode60" name="BKSP" column="1" row="1">
|
||||
<bounds>517.000000,44.000000,80.000000,38.000000</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65288">BackSpace</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode62" name="RTRN" column="1" row="1">
|
||||
<bounds>517.000000,83.000000,80.000000,38.000000</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65293">Return</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode63" name="RTSH" column="2" row="1">
|
||||
<bounds>517.000000,122.000000,80.000000,38.000000</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65506">Shift_R</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode65" name="keycode65" column="0" row="2">
|
||||
<bounds>165.463415,162.341463,238.829268,37.463415</bounds>
|
||||
<oref>outline14</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="32">space</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode108" name="keycode108" column="1" row="2">
|
||||
<bounds>407.414634,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline10</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65361">Left</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode134" name="keycode134" column="2" row="2">
|
||||
<bounds>458.926829,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline10</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65362">Up</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode135" name="keycode135" column="3" row="2">
|
||||
<bounds>508.878049,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline10</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65364">Down</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode105" name="keycode105" column="4" row="2">
|
||||
<bounds>560.390244,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline10</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65363">Right</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
</section>
|
||||
<section name="Alpha">
|
||||
<bounds>99.000000,16.000000,469.000000,202.000000</bounds>
|
||||
<angle>0</angle>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>5</columns>
|
||||
<orientation>0</orientation>
|
||||
</row>
|
||||
<key id="keycode1" name="AE03" column="0" row="0">
|
||||
<bounds>4.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode2" name="AD03" column="1" row="0">
|
||||
<bounds>4.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode3" name="AE04" column="2" row="0">
|
||||
<bounds>4.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode4" name="AE05" column="3" row="0">
|
||||
<bounds>4.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode5" name="AE06" column="4" row="0">
|
||||
<bounds>4.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode6" name="AE03" column="0" row="1">
|
||||
<bounds>43.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="116" label="か">t</keysym>
|
||||
<keysym keyval="116" label="カ">t</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode7" name="AD03" column="1" row="1">
|
||||
<bounds>43.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="103" label="き">g</keysym>
|
||||
<keysym keyval="103" label="キ">g</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode8" name="AE04" column="2" row="1">
|
||||
<bounds>43.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="104" label="く">h</keysym>
|
||||
<keysym keyval="104" label="ク">h</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode9" name="AE05" column="3" row="1">
|
||||
<bounds>43.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="58" label="け">colon</keysym>
|
||||
<keysym keyval="58" label="ケ">colon</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode10" name="AE06" column="4" row="1">
|
||||
<bounds>43.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="98" label="こ">b</keysym>
|
||||
<keysym keyval="98" label="コ">b</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode11" name="AE03" column="0" row="2">
|
||||
<bounds>82.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="120" label="さ">x</keysym>
|
||||
<keysym keyval="120" label="サ">x</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode12" name="AD03" column="1" row="2">
|
||||
<bounds>82.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="100" label="し">d</keysym>
|
||||
<keysym keyval="100" label="シ">d</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode13" name="AE04" column="2" row="0">
|
||||
<bounds>82.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="114" label="す">r</keysym>
|
||||
<keysym keyval="114" label="ス">r</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode14" name="AE05" column="3" row="2">
|
||||
<bounds>82.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="112" label="せ">p</keysym>
|
||||
<keysym keyval="112" label="セ">p</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode15" name="AE06" column="4" row="2">
|
||||
<bounds>82.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="99" label="そ">c</keysym>
|
||||
<keysym keyval="99" label="ソ">c</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode16" name="AE03" column="0" row="3">
|
||||
<bounds>121.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="113" label="た">q</keysym>
|
||||
<keysym keyval="113" label="タ">q</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode17" name="AD03" column="1" row="3">
|
||||
<bounds>121.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="97" label="ち">a</keysym>
|
||||
<keysym keyval="97" label="チ">a</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode18" name="AE04" column="2" row="3">
|
||||
<bounds>121.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode19" name="AE05" column="3" row="3">
|
||||
<bounds>121.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="119" label="て">w</keysym>
|
||||
<keysym keyval="119" label="テ">w</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode20" name="AE06" column="4" row="3">
|
||||
<bounds>121.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="115" label="と">s</keysym>
|
||||
<keysym keyval="115" label="ト">s</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode21" name="AE03" column="0" row="4">
|
||||
<bounds>160.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="117" label="な">u</keysym>
|
||||
<keysym keyval="117" label="ナ">u</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode22" name="AD03" column="1" row="4">
|
||||
<bounds>160.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="105" label="に">i</keysym>
|
||||
<keysym keyval="105" label="ニ">i</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode23" name="AE04" column="2" row="4">
|
||||
<bounds>160.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="33" label="ぬ">exclam</keysym>
|
||||
<keysym keyval="33" label="ヌ">exclam</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode24" name="AE05" column="3" row="4">
|
||||
<bounds>160.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="44" label="ね">comma</keysym>
|
||||
<keysym keyval="44" label="ネ">comma</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode25" name="AE06" column="4" row="4">
|
||||
<bounds>160.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="107" label="の">k</keysym>
|
||||
<keysym keyval="107" label="ノ">k</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode26" name="AE03" column="0" row="5">
|
||||
<bounds>199.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="102" label="は">f</keysym>
|
||||
<keysym keyval="102" label="ハ">f</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode27" name="AD03" column="1" row="5">
|
||||
<bounds>199.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="118" label="ひ">v</keysym>
|
||||
<keysym keyval="118" label="ヒ">v</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode28" name="AE04" column="2" row="5">
|
||||
<bounds>199.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="34" label="ふ">quotedbl</keysym>
|
||||
<keysym keyval="34" label="フ">quotedbl</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode29" name="AE05" column="3" row="5">
|
||||
<bounds>199.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="94" label="へ">asciicircum</keysym>
|
||||
<keysym keyval="94" label="ヘ">asciicircum</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode30" name="AE06" column="4" row="5">
|
||||
<bounds>199.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="61" label="ほ">equal</keysym>
|
||||
<keysym keyval="61" label="ホ">equal</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode31" name="AE03" column="0" row="6">
|
||||
<bounds>238.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="106" label="ま">j</keysym>
|
||||
<keysym keyval="106" label="マ">j</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode32" name="AD03" column="1" row="6">
|
||||
<bounds>238.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="110" label="み">n</keysym>
|
||||
<keysym keyval="110" label="ミ">n</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode33" name="AE04" column="2" row="6">
|
||||
<bounds>238.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="93" label="む">bracketright</keysym>
|
||||
<keysym keyval="93" label="ム">bracketright</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode34" name="AE05" column="3" row="6">
|
||||
<bounds>238.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="47" label="め">slash</keysym>
|
||||
<keysym keyval="47" label="メ">slash</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode35" name="AE06" column="4" row="6">
|
||||
<bounds>238.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="109" label="も">m</keysym>
|
||||
<keysym keyval="109" label="モ">m</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode36" name="AE03" column="0" row="7">
|
||||
<bounds>277.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode37" name="AD03" column="1" row="7">
|
||||
<bounds>277.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode38" name="AE04" column="2" row="7">
|
||||
<bounds>277.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode41" name="AE03" column="0" row="8">
|
||||
<bounds>316.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="111" label="ら">o</keysym>
|
||||
<keysym keyval="111" label="ラ">o</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode42" name="AD03" column="1" row="8">
|
||||
<bounds>316.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="108" label="り">l</keysym>
|
||||
<keysym keyval="108" label="リ">l</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode43" name="AE04" column="2" row="8">
|
||||
<bounds>316.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="46" label="る">period</keysym>
|
||||
<keysym keyval="46" label="ル">period</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode44" name="AE05" column="3" row="8">
|
||||
<bounds>316.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="59" label="れ">semicolon</keysym>
|
||||
<keysym keyval="59" label="レ">semicolon</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode45" name="AE06" column="4" row="8">
|
||||
<bounds>316.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="92" label="ろ">backslash</keysym>
|
||||
<keysym keyval="92" label="ロ">backslash</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode46" name="AE03" column="0" row="9">
|
||||
<bounds>355.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="48" label="わ">0</keysym>
|
||||
<keysym keyval="48" label="ワ">0</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode47" name="AD03" column="1" row="9">
|
||||
<bounds>355.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="126" label="を">asciitilde</keysym>
|
||||
<keysym keyval="126" label="ヲ">asciitilde</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode48" name="AE04" column="2" row="9">
|
||||
<bounds>355.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="121" label="ん">y</keysym>
|
||||
<keysym keyval="121" label="ン">y</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode49" name="AE05" column="3" row="9">
|
||||
<bounds>355.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode50" name="AE06" column="4" row="9">
|
||||
<bounds>355.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
|
||||
<key id="keycode51" name="AE03" column="0" row="10">
|
||||
<bounds>394.000000,4.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="64" label="゛">at</keysym>
|
||||
<keysym keyval="64" label="゛">at</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode52" name="AD03" column="1" row="10">
|
||||
<bounds>394.000000,43.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="91" label="゜">bracketleft</keysym>
|
||||
<keysym keyval="91" label="゜">bracketleft</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode53" name="AE04" column="2" row="10">
|
||||
<bounds>394.000000,82.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="124" label="ー">bar</keysym>
|
||||
<keysym keyval="124" label="ー">bar</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode54" name="AE05" column="3" row="10">
|
||||
<bounds>394.000000,121.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="1">
|
||||
<keysym keyval="60" label="、">less</keysym>
|
||||
<keysym keyval="60" label="、">less</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode55" name="AE06" column="4" row="10">
|
||||
<bounds>394.000000,160.000000,38.000000,38.000000</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="2" levels="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>
|
||||
</symbols>
|
||||
</key>
|
||||
</section>
|
||||
<outline id="outline1">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>38.000000,0.000000</point>
|
||||
<point>38.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline3">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>60.000000,0.000000</point>
|
||||
<point>60.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline4">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>60.000000,0.000000</point>
|
||||
<point>60.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline5">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>69.000000,0.000000</point>
|
||||
<point>69.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline6">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>89.000000,0.000000</point>
|
||||
<point>89.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline7">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>89.000000,0.000000</point>
|
||||
<point>89.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline8">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>110.000000,0.000000</point>
|
||||
<point>110.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline9">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>57.000000,0.000000</point>
|
||||
<point>57.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline10">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>49.000000,0.000000</point>
|
||||
<point>49.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline11">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>239.000000,0.000000</point>
|
||||
<point>239.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline12">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>38.000000,0.000000</point>
|
||||
<point>38.000000,79.000000</point>
|
||||
<point>0.000000,79.000000</point>
|
||||
</outline>
|
||||
<outline id="outline13">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>79.000000,0.000000</point>
|
||||
<point>79.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline2">
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>80.000000,0.000000</point>
|
||||
<point>80.000000,38.000000</point>
|
||||
<point>0.000000,38.000000</point>
|
||||
</outline>
|
||||
<outline id="outline14">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>238.829268,0.000000</point>
|
||||
<point>238.829268,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
</keyboard>
|
||||
|
||||
681
data/keyboards/th.xml
Normal file
681
data/keyboards/th.xml
Normal file
@ -0,0 +1,681 @@
|
||||
<?xml version="1.0"?>
|
||||
<keyboard version="0.90">
|
||||
<bounds>0.000000,0.000000,640.000000,296.585366</bounds>
|
||||
<section>
|
||||
<bounds>15.609756,15.609756,640.000000,39.024390</bounds>
|
||||
<angle>0</angle>
|
||||
<row>
|
||||
<columns>16</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<key id="keycode9" name="keycode9" column="0" row="0">
|
||||
<bounds>3.121951,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65307">Escape</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode67" name="keycode67" column="1" row="0">
|
||||
<bounds>84.292683,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65470">F1</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode68" name="keycode68" column="2" row="0">
|
||||
<bounds>124.878049,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65471">F2</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode69" name="keycode69" column="3" row="0">
|
||||
<bounds>165.463415,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65472">F3</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode70" name="keycode70" column="4" row="0">
|
||||
<bounds>206.048780,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65473">F4</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode71" name="keycode71" column="5" row="0">
|
||||
<bounds>266.926829,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65474">F5</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode72" name="keycode72" column="6" row="0">
|
||||
<bounds>307.512195,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65475">F6</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode73" name="keycode73" column="7" row="0">
|
||||
<bounds>348.097561,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65476">F7</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode74" name="keycode74" column="8" row="0">
|
||||
<bounds>388.682927,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65477">F8</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode75" name="keycode75" column="9" row="0">
|
||||
<bounds>449.560976,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65478">F9</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode76" name="keycode76" column="10" row="0">
|
||||
<bounds>490.146341,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65479">F10</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode95" name="keycode95" column="11" row="0">
|
||||
<bounds>530.731707,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65480">F11</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode96" name="keycode96" column="12" row="0">
|
||||
<bounds>571.317073,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65481">F12</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
</section>
|
||||
<section>
|
||||
<bounds>15.609756,78.048780,608.780488,201.365854</bounds>
|
||||
<angle>0</angle>
|
||||
<row>
|
||||
<columns>14</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>14</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>13</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>12</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>8</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<key id="keycode49" name="keycode49" column="0" row="0">
|
||||
<bounds>3.121951,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="95">underscore</keysym>
|
||||
<keysym keyval="37">percent</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode10" name="keycode10" column="1" row="0">
|
||||
<bounds>43.707317,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3557">Thai_lakkhangyao</keysym>
|
||||
<keysym keyval="43">plus</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode11" name="keycode11" column="2" row="0">
|
||||
<bounds>84.292683,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="47">slash</keysym>
|
||||
<keysym keyval="3569">Thai_leknung</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode12" name="keycode12" column="3" row="0">
|
||||
<bounds>124.878049,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="45">minus</keysym>
|
||||
<keysym keyval="3570">Thai_leksong</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode13" name="keycode13" column="4" row="0">
|
||||
<bounds>165.463415,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3520">Thai_phosamphao</keysym>
|
||||
<keysym keyval="3571">Thai_leksam</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode14" name="keycode14" column="5" row="0">
|
||||
<bounds>206.048780,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3510">Thai_thothung</keysym>
|
||||
<keysym keyval="3572">Thai_leksi</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode15" name="keycode15" column="6" row="0">
|
||||
<bounds>245.073171,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3544">Thai_sarau</keysym>
|
||||
<keysym keyval="3545">Thai_sarauu</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode16" name="keycode16" column="7" row="0">
|
||||
<bounds>285.658537,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3542">Thai_saraue</keysym>
|
||||
<keysym keyval="3551">Thai_baht</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode17" name="keycode17" column="8" row="0">
|
||||
<bounds>326.243902,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3492">Thai_khokhwai</keysym>
|
||||
<keysym keyval="3573">Thai_lekha</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode18" name="keycode18" column="9" row="0">
|
||||
<bounds>366.829268,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3509">Thai_totao</keysym>
|
||||
<keysym keyval="3574">Thai_lekhok</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode19" name="keycode19" column="10" row="0">
|
||||
<bounds>407.414634,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3496">Thai_chochan</keysym>
|
||||
<keysym keyval="3575">Thai_lekchet</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode20" name="keycode20" column="11" row="0">
|
||||
<bounds>448.000000,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3490">Thai_khokhai</keysym>
|
||||
<keysym keyval="3576">Thai_lekpaet</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode21" name="keycode21" column="12" row="0">
|
||||
<bounds>488.585366,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3498">Thai_chochang</keysym>
|
||||
<keysym keyval="3577">Thai_lekkao</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode22" name="keycode22" column="13" row="0">
|
||||
<bounds>529.170732,1.560976,79.609756,37.463415</bounds>
|
||||
<oref>outline13</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65288">BackSpace</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode23" name="keycode23" column="0" row="1">
|
||||
<bounds>3.121951,42.146341,59.317073,37.463415</bounds>
|
||||
<oref>outline4</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="65289">Tab</keysym>
|
||||
<keysym keyval="65056">ISO_Left_Tab</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode24" name="keycode24" column="1" row="1">
|
||||
<bounds>65.560976,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3558">Thai_maiyamok</keysym>
|
||||
<keysym keyval="3568">Thai_leksun</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode25" name="keycode25" column="2" row="1">
|
||||
<bounds>106.146341,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3556">Thai_saraaimaimalai</keysym>
|
||||
<keysym keyval="34">quotedbl</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode26" name="keycode26" column="3" row="1">
|
||||
<bounds>145.170732,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3539">Thai_saraam</keysym>
|
||||
<keysym keyval="3502">Thai_dochada</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode27" name="keycode27" column="4" row="1">
|
||||
<bounds>185.756098,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3518">Thai_phophan</keysym>
|
||||
<keysym keyval="3505">Thai_thonangmontho</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode28" name="keycode28" column="5" row="1">
|
||||
<bounds>226.341463,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3536">Thai_saraa</keysym>
|
||||
<keysym keyval="3512">Thai_thothong</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode29" name="keycode29" column="6" row="1">
|
||||
<bounds>266.926829,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3537">Thai_maihanakat</keysym>
|
||||
<keysym keyval="3565">Thai_nikhahit</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode30" name="keycode30" column="7" row="1">
|
||||
<bounds>307.512195,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3541">Thai_saraii</keysym>
|
||||
<keysym keyval="3562">Thai_maitri</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode31" name="keycode31" column="8" row="1">
|
||||
<bounds>348.097561,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3523">Thai_rorua</keysym>
|
||||
<keysym keyval="3507">Thai_nonen</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode32" name="keycode32" column="9" row="1">
|
||||
<bounds>388.682927,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3513">Thai_nonu</keysym>
|
||||
<keysym keyval="3535">Thai_paiyannoi</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode33" name="keycode33" column="10" row="1">
|
||||
<bounds>429.268293,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3522">Thai_yoyak</keysym>
|
||||
<keysym keyval="3501">Thai_yoying</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode34" name="keycode34" column="11" row="1">
|
||||
<bounds>468.292683,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3514">Thai_bobaimai</keysym>
|
||||
<keysym keyval="3504">Thai_thothan</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode35" name="keycode35" column="12" row="1">
|
||||
<bounds>508.878049,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3525">Thai_loling</keysym>
|
||||
<keysym keyval="44">comma</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode51" name="keycode51" column="13" row="1">
|
||||
<bounds>549.463415,42.146341,59.317073,37.463415</bounds>
|
||||
<oref>outline5</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3491">Thai_khokhuat</keysym>
|
||||
<keysym keyval="3493">Thai_khokhon</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode66" name="keycode66" column="0" row="2">
|
||||
<bounds>3.121951,82.731707,68.682927,37.463415</bounds>
|
||||
<oref>outline6</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65027">ISO_Level3_Shift</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode38" name="keycode38" column="1" row="2">
|
||||
<bounds>76.487805,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3519">Thai_fofan</keysym>
|
||||
<keysym keyval="3524">Thai_ru</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode39" name="keycode39" column="2" row="2">
|
||||
<bounds>115.512195,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3531">Thai_hohip</keysym>
|
||||
<keysym keyval="3494">Thai_khorakhang</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode40" name="keycode40" column="3" row="2">
|
||||
<bounds>156.097561,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3489">Thai_kokai</keysym>
|
||||
<keysym keyval="3503">Thai_topatak</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode41" name="keycode41" column="4" row="2">
|
||||
<bounds>196.682927,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3508">Thai_dodek</keysym>
|
||||
<keysym keyval="3554">Thai_sarao</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode42" name="keycode42" column="5" row="2">
|
||||
<bounds>237.268293,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3552">Thai_sarae</keysym>
|
||||
<keysym keyval="3500">Thai_chochoe</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode43" name="keycode43" column="6" row="2">
|
||||
<bounds>277.853659,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3561">Thai_maitho</keysym>
|
||||
<keysym keyval="3559">Thai_maitaikhu</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode44" name="keycode44" column="7" row="2">
|
||||
<bounds>318.439024,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3560">Thai_maiek</keysym>
|
||||
<keysym keyval="3563">Thai_maichattawa</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode45" name="keycode45" column="8" row="2">
|
||||
<bounds>359.024390,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3538">Thai_saraaa</keysym>
|
||||
<keysym keyval="3529">Thai_sorusi</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode46" name="keycode46" column="9" row="2">
|
||||
<bounds>399.609756,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3530">Thai_sosua</keysym>
|
||||
<keysym keyval="3528">Thai_sosala</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode47" name="keycode47" column="10" row="2">
|
||||
<bounds>438.634146,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3527">Thai_wowaen</keysym>
|
||||
<keysym keyval="3499">Thai_soso</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode48" name="keycode48" column="11" row="2">
|
||||
<bounds>479.219512,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3495">Thai_ngongu</keysym>
|
||||
<keysym keyval="46">period</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode36" name="keycode36" column="12" row="2">
|
||||
<bounds>519.804878,82.731707,88.975610,37.463415</bounds>
|
||||
<oref>outline7</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65293">Return</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode50" name="keycode50" column="0" row="3">
|
||||
<bounds>3.121951,121.756098,88.975610,37.463415</bounds>
|
||||
<oref>outline8</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65505">Shift_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode52" name="keycode52" column="1" row="3">
|
||||
<bounds>95.219512,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3516">Thai_phophung</keysym>
|
||||
<keysym keyval="40">parenleft</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode53" name="keycode53" column="2" row="3">
|
||||
<bounds>135.804878,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3515">Thai_popla</keysym>
|
||||
<keysym keyval="41">parenright</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode54" name="keycode54" column="3" row="3">
|
||||
<bounds>176.390244,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3553">Thai_saraae</keysym>
|
||||
<keysym keyval="3497">Thai_choching</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode55" name="keycode55" column="4" row="3">
|
||||
<bounds>215.414634,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3533">Thai_oang</keysym>
|
||||
<keysym keyval="3534">Thai_honokhuk</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode56" name="keycode56" column="5" row="3">
|
||||
<bounds>256.000000,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3540">Thai_sarai</keysym>
|
||||
<keysym keyval="3546">Thai_phinthu</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode57" name="keycode57" column="6" row="3">
|
||||
<bounds>296.585366,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3543">Thai_sarauee</keysym>
|
||||
<keysym keyval="3564">Thai_thanthakhat</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode58" name="keycode58" column="7" row="3">
|
||||
<bounds>337.170732,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3511">Thai_thothahan</keysym>
|
||||
<keysym keyval="63">question</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode59" name="keycode59" column="8" row="3">
|
||||
<bounds>377.756098,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3521">Thai_moma</keysym>
|
||||
<keysym keyval="3506">Thai_thophuthao</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode60" name="keycode60" column="9" row="3">
|
||||
<bounds>418.341463,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3555">Thai_saraaimaimuan</keysym>
|
||||
<keysym keyval="3532">Thai_lochula</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode61" name="keycode61" column="10" row="3">
|
||||
<bounds>458.926829,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="3517">Thai_fofa</keysym>
|
||||
<keysym keyval="3526">Thai_lu</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode62" name="keycode62" column="11" row="3">
|
||||
<bounds>499.512195,121.756098,109.268293,37.463415</bounds>
|
||||
<oref>outline9</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65506">Shift_R</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode37" name="keycode37" column="0" row="4">
|
||||
<bounds>3.121951,162.341463,56.195122,37.463415</bounds>
|
||||
<oref>outline10</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<symbol label="⌨" icon="input-keyboard-symbolic">cycle-keyboard</symbol>
|
||||
<symbol label="☺" icon="preferences-system-symbolic">preferences</symbol>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode133" name="keycode133" column="1" row="4">
|
||||
<bounds>62.439024,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65507">Control_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode64" name="keycode64" column="2" row="4">
|
||||
<bounds>113.951220,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="65513">Alt_L</keysym>
|
||||
<keysym keyval="65511">Meta_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode65" name="keycode65" column="3" row="4">
|
||||
<bounds>165.463415,162.341463,238.829268,37.463415</bounds>
|
||||
<oref>outline3</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="32">space</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode108" name="keycode108" column="4" row="4">
|
||||
<bounds>407.414634,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65361">Left</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode134" name="keycode134" column="5" row="4">
|
||||
<bounds>458.926829,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65362">Up</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode135" name="keycode135" column="6" row="4">
|
||||
<bounds>508.878049,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65364">Down</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode105" name="keycode105" column="7" row="4">
|
||||
<bounds>560.390244,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65363">Right</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
</section>
|
||||
<outline id="outline2">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>37.463415,0.000000</point>
|
||||
<point>37.463415,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline1">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>48.390244,0.000000</point>
|
||||
<point>48.390244,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline4">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>59.317073,0.000000</point>
|
||||
<point>59.317073,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline5">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>59.317073,0.000000</point>
|
||||
<point>59.317073,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline6">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>68.682927,0.000000</point>
|
||||
<point>68.682927,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline7">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>88.975610,0.000000</point>
|
||||
<point>88.975610,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline8">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>88.975610,0.000000</point>
|
||||
<point>88.975610,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline9">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>109.268293,0.000000</point>
|
||||
<point>109.268293,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline10">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>56.195122,0.000000</point>
|
||||
<point>56.195122,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline13">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>79.609756,0.000000</point>
|
||||
<point>79.609756,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline3">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>238.829268,0.000000</point>
|
||||
<point>238.829268,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
</keyboard>
|
||||
682
data/keyboards/us.xml
Normal file
682
data/keyboards/us.xml
Normal file
@ -0,0 +1,682 @@
|
||||
<?xml version="1.0"?>
|
||||
<keyboard version="0.90">
|
||||
<bounds>0.000000,0.000000,640.000000,296.585366</bounds>
|
||||
<section>
|
||||
<bounds>15.609756,15.609756,640.000000,39.024390</bounds>
|
||||
<angle>0</angle>
|
||||
<row>
|
||||
<columns>16</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<key id="keycode9" name="keycode9" column="0" row="0">
|
||||
<bounds>3.121951,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65307">Escape</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode67" name="keycode67" column="1" row="0">
|
||||
<bounds>84.292683,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65470">F1</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode68" name="keycode68" column="2" row="0">
|
||||
<bounds>124.878049,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65471">F2</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode69" name="keycode69" column="3" row="0">
|
||||
<bounds>165.463415,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65472">F3</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode70" name="keycode70" column="4" row="0">
|
||||
<bounds>206.048780,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65473">F4</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode71" name="keycode71" column="5" row="0">
|
||||
<bounds>266.926829,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65474">F5</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode72" name="keycode72" column="6" row="0">
|
||||
<bounds>307.512195,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65475">F6</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode73" name="keycode73" column="7" row="0">
|
||||
<bounds>348.097561,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65476">F7</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode74" name="keycode74" column="8" row="0">
|
||||
<bounds>388.682927,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65477">F8</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode75" name="keycode75" column="9" row="0">
|
||||
<bounds>449.560976,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65478">F9</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode76" name="keycode76" column="10" row="0">
|
||||
<bounds>490.146341,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65479">F10</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode95" name="keycode95" column="11" row="0">
|
||||
<bounds>530.731707,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65480">F11</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode96" name="keycode96" column="12" row="0">
|
||||
<bounds>571.317073,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65481">F12</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
</section>
|
||||
<section>
|
||||
<bounds>15.609756,78.048780,608.780488,201.365854</bounds>
|
||||
<angle>0</angle>
|
||||
<row>
|
||||
<columns>14</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>14</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>13</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>12</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<row>
|
||||
<columns>8</columns>
|
||||
<orientation>1</orientation>
|
||||
</row>
|
||||
<key id="keycode49" name="keycode49" column="0" row="0">
|
||||
<bounds>3.121951,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="96">quoteleft</keysym>
|
||||
<keysym keyval="126">asciitilde</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode10" name="keycode10" column="1" row="0">
|
||||
<bounds>43.707317,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="49">1</keysym>
|
||||
<keysym keyval="33">exclam</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode11" name="keycode11" column="2" row="0">
|
||||
<bounds>84.292683,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="50">2</keysym>
|
||||
<keysym keyval="64">at</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode12" name="keycode12" column="3" row="0">
|
||||
<bounds>124.878049,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="51">3</keysym>
|
||||
<keysym keyval="35">numbersign</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode13" name="keycode13" column="4" row="0">
|
||||
<bounds>165.463415,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="52">4</keysym>
|
||||
<keysym keyval="36">dollar</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode14" name="keycode14" column="5" row="0">
|
||||
<bounds>206.048780,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="3">
|
||||
<keysym keyval="53">5</keysym>
|
||||
<keysym keyval="37">percent</keysym>
|
||||
<keysym keyval="8364">EuroSign</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode15" name="keycode15" column="6" row="0">
|
||||
<bounds>245.073171,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="54">6</keysym>
|
||||
<keysym keyval="94">asciicircum</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode16" name="keycode16" column="7" row="0">
|
||||
<bounds>285.658537,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="55">7</keysym>
|
||||
<keysym keyval="38">ampersand</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode17" name="keycode17" column="8" row="0">
|
||||
<bounds>326.243902,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="56">8</keysym>
|
||||
<keysym keyval="42">asterisk</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode18" name="keycode18" column="9" row="0">
|
||||
<bounds>366.829268,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="57">9</keysym>
|
||||
<keysym keyval="40">parenleft</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode19" name="keycode19" column="10" row="0">
|
||||
<bounds>407.414634,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="48">0</keysym>
|
||||
<keysym keyval="41">parenright</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode20" name="keycode20" column="11" row="0">
|
||||
<bounds>448.000000,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="45">minus</keysym>
|
||||
<keysym keyval="95">underscore</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode21" name="keycode21" column="12" row="0">
|
||||
<bounds>488.585366,1.560976,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="61">equal</keysym>
|
||||
<keysym keyval="43">plus</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode22" name="keycode22" column="13" row="0">
|
||||
<bounds>529.170732,1.560976,79.609756,37.463415</bounds>
|
||||
<oref>outline13</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65288">BackSpace</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode23" name="keycode23" column="0" row="1">
|
||||
<bounds>3.121951,42.146341,59.317073,37.463415</bounds>
|
||||
<oref>outline4</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="65289">Tab</keysym>
|
||||
<keysym keyval="65056">ISO_Left_Tab</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode24" name="keycode24" column="1" row="1">
|
||||
<bounds>65.560976,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="113">q</keysym>
|
||||
<keysym keyval="81">Q</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode25" name="keycode25" column="2" row="1">
|
||||
<bounds>106.146341,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="119">w</keysym>
|
||||
<keysym keyval="87">W</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode26" name="keycode26" column="3" row="1">
|
||||
<bounds>145.170732,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="101">e</keysym>
|
||||
<keysym keyval="69">E</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode27" name="keycode27" column="4" row="1">
|
||||
<bounds>185.756098,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="114">r</keysym>
|
||||
<keysym keyval="82">R</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode28" name="keycode28" column="5" row="1">
|
||||
<bounds>226.341463,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="116">t</keysym>
|
||||
<keysym keyval="84">T</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode29" name="keycode29" column="6" row="1">
|
||||
<bounds>266.926829,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="121">y</keysym>
|
||||
<keysym keyval="89">Y</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode30" name="keycode30" column="7" row="1">
|
||||
<bounds>307.512195,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="117">u</keysym>
|
||||
<keysym keyval="85">U</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode31" name="keycode31" column="8" row="1">
|
||||
<bounds>348.097561,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="105">i</keysym>
|
||||
<keysym keyval="73">I</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode32" name="keycode32" column="9" row="1">
|
||||
<bounds>388.682927,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="111">o</keysym>
|
||||
<keysym keyval="79">O</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode33" name="keycode33" column="10" row="1">
|
||||
<bounds>429.268293,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="112">p</keysym>
|
||||
<keysym keyval="80">P</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode34" name="keycode34" column="11" row="1">
|
||||
<bounds>468.292683,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="91">bracketleft</keysym>
|
||||
<keysym keyval="123">braceleft</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode35" name="keycode35" column="12" row="1">
|
||||
<bounds>508.878049,42.146341,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="93">bracketright</keysym>
|
||||
<keysym keyval="125">braceright</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode51" name="keycode51" column="13" row="1">
|
||||
<bounds>549.463415,42.146341,59.317073,37.463415</bounds>
|
||||
<oref>outline5</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="92">backslash</keysym>
|
||||
<keysym keyval="124">bar</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode66" name="keycode66" column="0" row="2">
|
||||
<bounds>3.121951,82.731707,68.682927,37.463415</bounds>
|
||||
<oref>outline6</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65027">ISO_Level3_Shift</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode38" name="keycode38" column="1" row="2">
|
||||
<bounds>76.487805,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="97">a</keysym>
|
||||
<keysym keyval="65">A</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode39" name="keycode39" column="2" row="2">
|
||||
<bounds>115.512195,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="115">s</keysym>
|
||||
<keysym keyval="83">S</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode40" name="keycode40" column="3" row="2">
|
||||
<bounds>156.097561,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="100">d</keysym>
|
||||
<keysym keyval="68">D</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode41" name="keycode41" column="4" row="2">
|
||||
<bounds>196.682927,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="102">f</keysym>
|
||||
<keysym keyval="70">F</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode42" name="keycode42" column="5" row="2">
|
||||
<bounds>237.268293,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="103">g</keysym>
|
||||
<keysym keyval="71">G</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode43" name="keycode43" column="6" row="2">
|
||||
<bounds>277.853659,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="104">h</keysym>
|
||||
<keysym keyval="72">H</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode44" name="keycode44" column="7" row="2">
|
||||
<bounds>318.439024,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="106">j</keysym>
|
||||
<keysym keyval="74">J</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode45" name="keycode45" column="8" row="2">
|
||||
<bounds>359.024390,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="107">k</keysym>
|
||||
<keysym keyval="75">K</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode46" name="keycode46" column="9" row="2">
|
||||
<bounds>399.609756,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="108">l</keysym>
|
||||
<keysym keyval="76">L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode47" name="keycode47" column="10" row="2">
|
||||
<bounds>438.634146,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="59">semicolon</keysym>
|
||||
<keysym keyval="58">colon</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode48" name="keycode48" column="11" row="2">
|
||||
<bounds>479.219512,82.731707,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="39">quoteright</keysym>
|
||||
<keysym keyval="34">quotedbl</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode36" name="keycode36" column="12" row="2">
|
||||
<bounds>519.804878,82.731707,88.975610,37.463415</bounds>
|
||||
<oref>outline7</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65293">Return</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode50" name="keycode50" column="0" row="3">
|
||||
<bounds>3.121951,121.756098,88.975610,37.463415</bounds>
|
||||
<oref>outline8</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65505">Shift_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode52" name="keycode52" column="1" row="3">
|
||||
<bounds>95.219512,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="122">z</keysym>
|
||||
<keysym keyval="90">Z</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode53" name="keycode53" column="2" row="3">
|
||||
<bounds>135.804878,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="120">x</keysym>
|
||||
<keysym keyval="88">X</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode54" name="keycode54" column="3" row="3">
|
||||
<bounds>176.390244,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="99">c</keysym>
|
||||
<keysym keyval="67">C</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode55" name="keycode55" column="4" row="3">
|
||||
<bounds>215.414634,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="118">v</keysym>
|
||||
<keysym keyval="86">V</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode56" name="keycode56" column="5" row="3">
|
||||
<bounds>256.000000,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="98">b</keysym>
|
||||
<keysym keyval="66">B</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode57" name="keycode57" column="6" row="3">
|
||||
<bounds>296.585366,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="110">n</keysym>
|
||||
<keysym keyval="78">N</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode58" name="keycode58" column="7" row="3">
|
||||
<bounds>337.170732,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="109">m</keysym>
|
||||
<keysym keyval="77">M</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode59" name="keycode59" column="8" row="3">
|
||||
<bounds>377.756098,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="44">comma</keysym>
|
||||
<keysym keyval="60">less</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode60" name="keycode60" column="9" row="3">
|
||||
<bounds>418.341463,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="46">period</keysym>
|
||||
<keysym keyval="62">greater</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode61" name="keycode61" column="10" row="3">
|
||||
<bounds>458.926829,121.756098,37.463415,37.463415</bounds>
|
||||
<oref>outline2</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="47">slash</keysym>
|
||||
<keysym keyval="63">question</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode62" name="keycode62" column="11" row="3">
|
||||
<bounds>499.512195,121.756098,109.268293,37.463415</bounds>
|
||||
<oref>outline9</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65506">Shift_R</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode37" name="keycode37" column="0" row="4">
|
||||
<bounds>3.121951,162.341463,56.195122,37.463415</bounds>
|
||||
<oref>outline10</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<symbol label="⌨" icon="input-keyboard-symbolic">cycle-keyboard</symbol>
|
||||
<symbol label="☺" icon="preferences-system-symbolic">preferences</symbol>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode133" name="keycode133" column="1" row="4">
|
||||
<bounds>62.439024,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65507">Control_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode64" name="keycode64" column="2" row="4">
|
||||
<bounds>113.951220,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="2">
|
||||
<keysym keyval="65513">Alt_L</keysym>
|
||||
<keysym keyval="65511">Meta_L</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode65" name="keycode65" column="3" row="4">
|
||||
<bounds>165.463415,162.341463,238.829268,37.463415</bounds>
|
||||
<oref>outline3</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="32">space</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode108" name="keycode108" column="4" row="4">
|
||||
<bounds>407.414634,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65361">Left</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode134" name="keycode134" column="5" row="4">
|
||||
<bounds>458.926829,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65362">Up</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode135" name="keycode135" column="6" row="4">
|
||||
<bounds>508.878049,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65364">Down</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
<key id="keycode105" name="keycode105" column="7" row="4">
|
||||
<bounds>560.390244,162.341463,48.390244,37.463415</bounds>
|
||||
<oref>outline1</oref>
|
||||
<symbols groups="1" levels="1">
|
||||
<keysym keyval="65363">Right</keysym>
|
||||
</symbols>
|
||||
</key>
|
||||
</section>
|
||||
<outline id="outline2">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>37.463415,0.000000</point>
|
||||
<point>37.463415,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline1">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>48.390244,0.000000</point>
|
||||
<point>48.390244,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline4">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>59.317073,0.000000</point>
|
||||
<point>59.317073,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline5">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>59.317073,0.000000</point>
|
||||
<point>59.317073,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline6">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>68.682927,0.000000</point>
|
||||
<point>68.682927,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline7">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>88.975610,0.000000</point>
|
||||
<point>88.975610,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline8">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>88.975610,0.000000</point>
|
||||
<point>88.975610,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline9">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>109.268293,0.000000</point>
|
||||
<point>109.268293,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline10">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>56.195122,0.000000</point>
|
||||
<point>56.195122,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline13">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>79.609756,0.000000</point>
|
||||
<point>79.609756,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
<outline id="outline3">
|
||||
<corner-radius>1.000000</corner-radius>
|
||||
<point>0.000000,0.000000</point>
|
||||
<point>238.829268,0.000000</point>
|
||||
<point>238.829268,37.463415</point>
|
||||
<point>0.000000,37.463415</point>
|
||||
</outline>
|
||||
</keyboard>
|
||||
55
data/org.fedorahosted.eekboard.gschema.xml.in
Normal file
55
data/org.fedorahosted.eekboard.gschema.xml.in
Normal file
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0"?>
|
||||
<schemalist>
|
||||
<schema id="org.fedorahosted.eekboard" path="/org/fedorahosted/eekboard/">
|
||||
<key name="keyboard" type="s">
|
||||
<default>'us'</default>
|
||||
<summary>Keyboard types</summary>
|
||||
<description>keyboard types (comma separated).</description>
|
||||
</key>
|
||||
<key name="ui-toolkit" type="s">
|
||||
<default>'gtk'</default>
|
||||
<summary>GUI toolkit used to render keyboard</summary>
|
||||
<description>The name of GUI toolkit (either 'gtk' or 'clutter') used to render keyboard on screen.</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="theme" type="s">
|
||||
<default>'default'</default>
|
||||
<summary>Theme</summary>
|
||||
<description>Base name of the theme to apply.</description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
2
data/themes/Makefile.am
Normal file
2
data/themes/Makefile.am
Normal file
@ -0,0 +1,2 @@
|
||||
themedir = $(pkgdatadir)/themes
|
||||
dist_theme_DATA = default.css
|
||||
22
data/themes/default.css
Normal file
22
data/themes/default.css
Normal file
@ -0,0 +1,22 @@
|
||||
.keyboard {
|
||||
background-color: rgba(0, 0, 0, 255);
|
||||
color: #ffffff;
|
||||
font-family: cantarell, sans-serif;
|
||||
}
|
||||
|
||||
.key {
|
||||
color: #ffffff;
|
||||
background-gradient-direction: vertical;
|
||||
background-gradient-start: rgba(0, 0, 0, 255);
|
||||
background-gradient-end: rgba(64, 64, 64, 255);
|
||||
border-width: 2px;
|
||||
border-color: rgba(128, 128, 128, 255);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.key:active {
|
||||
background-gradient-direction: vertical;
|
||||
background-gradient-start: rgba(0, 0, 255, 255);
|
||||
background-gradient-end: rgba(64, 64, 255, 255);
|
||||
border-color: rgba(160, 160, 255, 255);
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -16,4 +16,4 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA
|
||||
|
||||
SUBDIRS = eek
|
||||
SUBDIRS = eek eekboard
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -47,7 +47,7 @@ SCANGOBJ_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-scan.
|
||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||
SCAN_OPTIONS=
|
||||
SCAN_OPTIONS=--rebuild-types --deprecated-guards="EEK_DISABLE_DEPRECATED"
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb.
|
||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
|
||||
@ -76,13 +76,19 @@ EXTRA_HFILES=
|
||||
|
||||
# Header files to ignore when scanning. Use base file name, no paths
|
||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
|
||||
IGNORE_HFILES= eek-private.h \
|
||||
eek-drawing.h \
|
||||
eek-clutter-key.h \
|
||||
IGNORE_HFILES = \
|
||||
config.h \
|
||||
eek-renderer.h \
|
||||
eek-clutter-renderer.h \
|
||||
eek-clutter-section.h \
|
||||
eek-clutter-key-actor.h \
|
||||
eek-clutter-drawing-context.h \
|
||||
config.h
|
||||
eek-clutter-key.h \
|
||||
eek-gtk-renderer.h \
|
||||
eek-theme.h \
|
||||
eek-theme-node.h \
|
||||
eek-enumtypes.h
|
||||
if !ENABLE_CLUTTER
|
||||
IGNORE_HFILES += eek-clutter-keyboard.h eek-clutter.h
|
||||
endif
|
||||
|
||||
# Images to copy into HTML directory.
|
||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||
@ -102,16 +108,19 @@ expand_content_files=eek-overview.xml
|
||||
# signals and properties.
|
||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||
GTKDOC_CFLAGS = $(GOBJECT2_CFLAGS)
|
||||
GTKDOC_LIBS = $(top_srcdir)/eek/libeek.la \
|
||||
$(top_srcdir)/eek/libeek-gtk.la \
|
||||
$(top_srcdir)/eek/libeek-xkb.la \
|
||||
$(top_srcdir)/eek/libeek-xkl.la \
|
||||
$(GOBJECT2_LIBS) \
|
||||
GTKDOC_CFLAGS = $(GIO2_CFLAGS)
|
||||
GTKDOC_LIBS = $(top_builddir)/eek/libeek.la \
|
||||
$(top_builddir)/eek/libeek-gtk.la \
|
||||
$(top_builddir)/eek/libeek-xkb.la \
|
||||
$(top_builddir)/eek/libeek-xkl.la \
|
||||
$(GIO2_LIBS) \
|
||||
$(GTK_LIBS) \
|
||||
$(XKB_LIBS)
|
||||
|
||||
if HAVE_CLUTTER
|
||||
GTKDOC_LIBS += $(top_srcdir)/eek/libeek-clutter.la $(CLUTTER_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.
|
||||
|
||||
@ -8,15 +8,15 @@
|
||||
<bookinfo>
|
||||
<title>libeek Reference Manual</title>
|
||||
<releaseinfo>
|
||||
for libeek 0.0.5.
|
||||
for libeek 0.90.0.
|
||||
</releaseinfo>
|
||||
<copyright>
|
||||
<year>2010</year>
|
||||
<year>2010-2011</year>
|
||||
<holder>Daiki Ueno</holder>
|
||||
</copyright>
|
||||
|
||||
<copyright>
|
||||
<year>2010</year>
|
||||
<year>2010-2011</year>
|
||||
<holder>Red Hat, Inc.</holder>
|
||||
</copyright>
|
||||
|
||||
@ -37,23 +37,26 @@
|
||||
<title>API Manual</title>
|
||||
<chapter>
|
||||
<title>Base Classes, Interfaces, and Utilities</title>
|
||||
<xi:include href="xml/eek.xml"/>
|
||||
<xi:include href="xml/eek-serializable.xml"/>
|
||||
<xi:include href="xml/eek-element.xml"/>
|
||||
<xi:include href="xml/eek-container.xml"/>
|
||||
<xi:include href="xml/eek-keyboard.xml"/>
|
||||
<xi:include href="xml/eek-section.xml"/>
|
||||
<xi:include href="xml/eek-key.xml"/>
|
||||
<xi:include href="xml/eek-symbol.xml"/>
|
||||
<xi:include href="xml/eek-keysym.xml"/>
|
||||
<xi:include href="xml/eek-layout.xml"/>
|
||||
<xi:include href="xml/eek-types.xml"/>
|
||||
<xi:include href="xml/eek-keysym.xml"/>
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>Clutter Keyboard</title>
|
||||
<xi:include href="xml/eek-clutter-keyboard.xml"/>
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>GTK Keyboard</title>
|
||||
<title>GTK Adapter</title>
|
||||
<xi:include href="xml/eek-gtk-keyboard.xml"/>
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>Clutter Adapter</title>
|
||||
<xi:include href="xml/eek-clutter-keyboard.xml"/>
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>Libxklavier Layout Engine</title>
|
||||
<xi:include href="xml/eek-xkl-layout.xml"/>
|
||||
@ -62,6 +65,11 @@
|
||||
<title>XKB Layout Engine</title>
|
||||
<xi:include href="xml/eek-xkb-layout.xml"/>
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>XML Layout Engine</title>
|
||||
<xi:include href="xml/eek-xml-layout.xml"/>
|
||||
<xi:include href="xml/eek-xml.xml"/>
|
||||
</chapter>
|
||||
<chapter id="object-tree">
|
||||
<title>Object Hierarchy</title>
|
||||
<xi:include href="xml/tree_index.sgml"/>
|
||||
|
||||
@ -25,36 +25,32 @@
|
||||
#ClutterActor:</para>
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
EekKeyboard *keyboard;
|
||||
EekLayout *layout;
|
||||
EekKeyboard *keyboard;
|
||||
ClutterActor *actor;
|
||||
|
||||
/* Create a keyboard layout using libxklavier configuration. */
|
||||
/* Create a layout engine based on libxklavier configuration. */
|
||||
layout = eek_xkl_layout_new ();
|
||||
|
||||
/* Create a keyboard implemented as ClutterActor. */
|
||||
keyboard = eek_clutter_keyboard_new ();
|
||||
/* Create a keyboard from the given layout. */
|
||||
keyboard = eek_keyboard_new (layout, initial_width, initial_height);
|
||||
|
||||
/* Apply the layout to the keyboard. */
|
||||
eek_keyboard_set_layout (keyboard, layout);
|
||||
/* Create a ClutterActor. */
|
||||
actor = eek_clutter_keyboard_new (eekboard->keyboard);
|
||||
|
||||
clutter_group_add (CLUTTER_GROUP(stage),
|
||||
eek_clutter_keyboard_get_actor (EEK_CLUTTER_KEYBOARD(keyboard)));
|
||||
/* Add the actor to a stage. */
|
||||
clutter_group_add (CLUTTER_GROUP(stage), actor);
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>The most interesting feature of libeek is that developer can
|
||||
choose arbitrary combination of UI toolkits and layout engine
|
||||
supported by libeek. For example, to create a keyboard-like
|
||||
#GtkWidget instead of #ClutterActor, all you need is to replace
|
||||
eek_clutter_keyboard_new() with eek_gtk_keyboard_new() and
|
||||
eek_clutter_keyboard_get_actor() with
|
||||
eek_gtk_keyboard_get_widget(). Similarly, if you want to use XKB
|
||||
configuration directly (without libxklavier), you will only need to
|
||||
replace eek_xkl_layout_new () with eek_xkb_layout_new().</para>
|
||||
<para>libeek currently supports GTK+ and Clutter as UI toolkits.
|
||||
To create a keyboard-like #GtkWidget instead of #ClutterActor,
|
||||
replace eek_clutter_keyboard_new() with eek_gtk_keyboard_new().
|
||||
Similarly, if you want to use XKB configuration directly (without
|
||||
libxklavier), you will only need to replace eek_xkl_layout_new ()
|
||||
with eek_xkb_layout_new().</para>
|
||||
|
||||
<para>To achieve portability across different UI toolkits,
|
||||
there is a seperate represention of keyboard elements apart from
|
||||
the actual UI widgets. For example, a keyboard is represented as a tree of
|
||||
<para>In the above example, a keyboard is represented as a tree of
|
||||
#EekElement -- #EekKeyboard contains one or more #EekSection's and
|
||||
#EekSection contains one or more #EekKey's. Each element may emit
|
||||
events when user pushes the corresponding UI widget.</para>
|
||||
|
||||
@ -1,15 +1,34 @@
|
||||
<SECTION>
|
||||
<FILE>eek-keyboard</FILE>
|
||||
<TITLE>EekKeyboard</TITLE>
|
||||
EekKeyboardClass
|
||||
EekKeyboardPrivate
|
||||
EekKeyboard
|
||||
eek_keyboard_set_keysym_index
|
||||
eek_keyboard_get_keysym_index
|
||||
EekKeyboardClass
|
||||
EekModifierKey
|
||||
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_set_modifiers
|
||||
eek_keyboard_get_modifiers
|
||||
eek_keyboard_create_section
|
||||
eek_keyboard_set_layout
|
||||
eek_keyboard_realize
|
||||
eek_keyboard_find_key_by_keycode
|
||||
eek_keyboard_add_outline
|
||||
eek_keyboard_get_outline
|
||||
eek_keyboard_set_num_lock_mask
|
||||
eek_keyboard_get_num_lock_mask
|
||||
eek_keyboard_set_alt_gr_mask
|
||||
eek_keyboard_get_alt_gr_mask
|
||||
eek_keyboard_get_pressed_keys
|
||||
eek_keyboard_get_locked_keys
|
||||
EekKeyboardPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_KEYBOARD
|
||||
EEK_IS_KEYBOARD
|
||||
@ -23,16 +42,16 @@ EEK_KEYBOARD_GET_CLASS
|
||||
<SECTION>
|
||||
<FILE>eek-layout</FILE>
|
||||
<TITLE>EekLayout</TITLE>
|
||||
EekLayoutIface
|
||||
EekLayout
|
||||
eek_layout_apply
|
||||
eek_layout_get_group
|
||||
EekLayoutClass
|
||||
<SUBSECTION Standard>
|
||||
EEK_LAYOUT
|
||||
EEK_IS_LAYOUT
|
||||
EEK_TYPE_LAYOUT
|
||||
eek_layout_get_type
|
||||
EEK_LAYOUT_GET_IFACE
|
||||
EEK_LAYOUT_CLASS
|
||||
EEK_IS_LAYOUT_CLASS
|
||||
EEK_LAYOUT_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@ -40,9 +59,9 @@ EEK_LAYOUT_GET_IFACE
|
||||
<TITLE>EekGtkKeyboard</TITLE>
|
||||
EekGtkKeyboard
|
||||
EekGtkKeyboardClass
|
||||
EekGtkKeyboardPrivate
|
||||
eek_gtk_keyboard_new
|
||||
eek_gtk_keyboard_get_widget
|
||||
eek_gtk_keyboard_set_theme
|
||||
EekGtkKeyboardPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_GTK_KEYBOARD
|
||||
EEK_IS_GTK_KEYBOARD
|
||||
@ -56,9 +75,8 @@ EEK_GTK_KEYBOARD_GET_CLASS
|
||||
<SECTION>
|
||||
<FILE>eek-section</FILE>
|
||||
<TITLE>EekSection</TITLE>
|
||||
EekSectionClass
|
||||
EekSectionPrivate
|
||||
EekSection
|
||||
EekSectionClass
|
||||
eek_section_set_angle
|
||||
eek_section_get_angle
|
||||
eek_section_get_n_rows
|
||||
@ -66,6 +84,7 @@ eek_section_add_row
|
||||
eek_section_get_row
|
||||
eek_section_create_key
|
||||
eek_section_find_key_by_keycode
|
||||
EekSectionPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_SECTION
|
||||
EEK_IS_SECTION
|
||||
@ -76,17 +95,39 @@ EEK_IS_SECTION_CLASS
|
||||
EEK_SECTION_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-theme-context</FILE>
|
||||
eek_theme_context_new
|
||||
eek_theme_context_set_theme
|
||||
eek_theme_context_get_theme
|
||||
eek_theme_context_set_resolution
|
||||
eek_theme_context_set_default_resolution
|
||||
eek_theme_context_get_resolution
|
||||
eek_theme_context_set_font
|
||||
eek_theme_context_get_font
|
||||
eek_theme_context_get_root_node
|
||||
EekThemeContextClass
|
||||
<SUBSECTION Standard>
|
||||
EEK_THEME_CONTEXT
|
||||
EEK_IS_THEME_CONTEXT
|
||||
EEK_TYPE_THEME_CONTEXT
|
||||
eek_theme_context_get_type
|
||||
EEK_THEME_CONTEXT_CLASS
|
||||
EEK_IS_THEME_CONTEXT_CLASS
|
||||
EEK_THEME_CONTEXT_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-container</FILE>
|
||||
<TITLE>EekContainer</TITLE>
|
||||
EekContainerClass
|
||||
EekContainerPrivate
|
||||
EekCallback
|
||||
EekCompareFunc
|
||||
EekContainer
|
||||
EekContainerClass
|
||||
eek_container_foreach_child
|
||||
eek_container_find
|
||||
eek_container_find_by_position
|
||||
eek_container_add_child
|
||||
EekContainerPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_CONTAINER
|
||||
EEK_IS_CONTAINER
|
||||
@ -102,9 +143,9 @@ EEK_CONTAINER_GET_CLASS
|
||||
<TITLE>EekClutterKeyboard</TITLE>
|
||||
EekClutterKeyboard
|
||||
EekClutterKeyboardClass
|
||||
EekClutterKeyboardPrivate
|
||||
eek_clutter_keyboard_new
|
||||
eek_clutter_keyboard_get_actor
|
||||
eek_clutter_keyboard_set_theme
|
||||
EekClutterKeyboardPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_CLUTTER_KEYBOARD
|
||||
EEK_IS_CLUTTER_KEYBOARD
|
||||
@ -115,12 +156,40 @@ EEK_IS_CLUTTER_KEYBOARD_CLASS
|
||||
EEK_CLUTTER_KEYBOARD_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-symbol</FILE>
|
||||
<TITLE>EekSymbol</TITLE>
|
||||
EekSymbolCategory
|
||||
EekSymbol
|
||||
EekSymbolClass
|
||||
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_modifier_mask
|
||||
eek_symbol_set_modifier_mask
|
||||
eek_symbol_is_modifier
|
||||
eek_symbol_set_icon_name
|
||||
eek_symbol_get_icon_name
|
||||
EekSymbolPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_SYMBOL
|
||||
EEK_IS_SYMBOL
|
||||
EEK_TYPE_SYMBOL
|
||||
eek_symbol_get_type
|
||||
EEK_SYMBOL_CLASS
|
||||
EEK_IS_SYMBOL_CLASS
|
||||
EEK_SYMBOL_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-xkl-layout</FILE>
|
||||
<TITLE>EekXklLayout</TITLE>
|
||||
EekXklLayout
|
||||
EekXklLayoutClass
|
||||
EekXklLayoutPrivate
|
||||
eek_xkl_layout_new
|
||||
eek_xkl_layout_set_config
|
||||
eek_xkl_layout_set_config_full
|
||||
@ -128,13 +197,14 @@ 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_disable_option
|
||||
eek_xkl_layout_enable_option
|
||||
eek_xkl_layout_get_option
|
||||
EekXklLayoutPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_XKL_LAYOUT
|
||||
EEK_IS_XKL_LAYOUT
|
||||
@ -150,16 +220,17 @@ EEK_XKL_LAYOUT_GET_CLASS
|
||||
<TITLE>EekXkbLayout</TITLE>
|
||||
EekXkbLayout
|
||||
EekXkbLayoutClass
|
||||
EekXkbLayoutPrivate
|
||||
eek_xkb_layout_new
|
||||
eek_xkb_layout_set_names
|
||||
eek_xkb_layout_set_names_full
|
||||
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_get_keycodes
|
||||
eek_xkb_layout_get_geometry
|
||||
eek_xkb_layout_get_symbols
|
||||
EekXkbLayoutPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_XKB_LAYOUT
|
||||
EEK_IS_XKB_LAYOUT
|
||||
@ -173,20 +244,22 @@ EEK_XKB_LAYOUT_GET_CLASS
|
||||
<SECTION>
|
||||
<FILE>eek-key</FILE>
|
||||
<TITLE>EekKey</TITLE>
|
||||
EekKeyClass
|
||||
EekKeyPrivate
|
||||
EekKey
|
||||
EekKeyClass
|
||||
eek_key_set_keycode
|
||||
eek_key_get_keycode
|
||||
eek_key_set_keysyms
|
||||
eek_key_get_keysyms
|
||||
eek_key_get_keysym
|
||||
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_outline
|
||||
eek_key_get_outline
|
||||
eek_key_set_keysym_index
|
||||
eek_key_get_keysym_index
|
||||
eek_key_set_oref
|
||||
eek_key_get_oref
|
||||
eek_key_is_pressed
|
||||
eek_key_is_locked
|
||||
EekKeyPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_KEY
|
||||
EEK_IS_KEY
|
||||
@ -197,19 +270,41 @@ EEK_IS_KEY_CLASS
|
||||
EEK_KEY_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-serializable</FILE>
|
||||
<TITLE>EekSerializable</TITLE>
|
||||
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>
|
||||
<FILE>eek-element</FILE>
|
||||
<TITLE>EekElement</TITLE>
|
||||
EekElementClass
|
||||
EekElementPrivate
|
||||
EekElement
|
||||
EekElementClass
|
||||
eek_element_set_parent
|
||||
eek_element_get_parent
|
||||
eek_element_set_name
|
||||
eek_element_get_name
|
||||
eek_element_set_bounds
|
||||
eek_element_get_bounds
|
||||
eek_element_set_position
|
||||
eek_element_set_size
|
||||
eek_element_get_absolute_position
|
||||
eek_element_set_symbol_index
|
||||
eek_element_get_symbol_index
|
||||
eek_element_set_group
|
||||
eek_element_set_level
|
||||
eek_element_get_group
|
||||
eek_element_get_level
|
||||
EekElementPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_ELEMENT
|
||||
EEK_IS_ELEMENT
|
||||
@ -221,28 +316,98 @@ EEK_ELEMENT_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-types</FILE>
|
||||
EekOrientation
|
||||
EekKeysymMatrix
|
||||
EEK_TYPE_KEYSYM_MATRIX
|
||||
eek_keysym_matrix_get_type
|
||||
EekPoint
|
||||
EEK_TYPE_POINT
|
||||
eek_point_get_type
|
||||
EekBounds
|
||||
EEK_TYPE_BOUNDS
|
||||
eek_bounds_get_type
|
||||
eek_bounds_long_side
|
||||
EekOutline
|
||||
EEK_TYPE_OUTLINE
|
||||
eek_outline_get_type
|
||||
<FILE>eek-xml-layout</FILE>
|
||||
<TITLE>EekXmlLayout</TITLE>
|
||||
EekXmlLayout
|
||||
EekXmlLayoutClass
|
||||
eek_xml_layout_new
|
||||
eek_xml_layout_set_source
|
||||
eek_xml_layout_get_source
|
||||
EekXmlLayoutPrivate
|
||||
<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
|
||||
EekKeysym
|
||||
EekKeysymClass
|
||||
eek_keysym_new
|
||||
eek_keysym_get_xkeysym
|
||||
eek_keysym_new_from_name
|
||||
eek_keysym_new_with_modifier
|
||||
EekKeysymPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEK_INVALID_KEYSYM
|
||||
EEK_INVALID_KEYCODE
|
||||
EekKeysymCategory
|
||||
eek_keysym_to_string
|
||||
eek_keysym_get_category
|
||||
EEK_IS_KEYSYM
|
||||
EEK_TYPE_KEYSYM
|
||||
eek_keysym_get_type
|
||||
EEK_KEYSYM_CLASS
|
||||
EEK_IS_KEYSYM_CLASS
|
||||
EEK_KEYSYM_GET_CLASS
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-xml</FILE>
|
||||
EEK_XML_SCHEMA_VERSION
|
||||
eek_keyboard_output
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-types</FILE>
|
||||
I_
|
||||
EEK_TYPE_POINT
|
||||
EEK_TYPE_BOUNDS
|
||||
EEK_TYPE_OUTLINE
|
||||
EEK_TYPE_COLOR
|
||||
EekOrientation
|
||||
EekModifierBehavior
|
||||
EekModifierType
|
||||
EEK_INVALID_KEYCODE
|
||||
EekPoint
|
||||
eek_point_get_type
|
||||
eek_point_copy
|
||||
eek_point_free
|
||||
eek_point_rotate
|
||||
EekBounds
|
||||
eek_bounds_get_type
|
||||
eek_bounds_copy
|
||||
eek_bounds_free
|
||||
eek_bounds_long_side
|
||||
EekOutline
|
||||
eek_outline_get_type
|
||||
eek_outline_copy
|
||||
eek_outline_free
|
||||
EekColor
|
||||
eek_color_get_type
|
||||
eek_color_new
|
||||
eek_color_copy
|
||||
eek_color_free
|
||||
EekGradientType
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek</FILE>
|
||||
eek_init
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>eek-symbol-matrix</FILE>
|
||||
EekSymbolMatrix
|
||||
EEK_TYPE_SYMBOL_MATRIX
|
||||
eek_symbol_matrix_get_type
|
||||
eek_symbol_matrix_new
|
||||
eek_symbol_matrix_copy
|
||||
eek_symbol_matrix_free
|
||||
eek_symbol_matrix_set_symbol
|
||||
eek_symbol_matrix_get_symbol
|
||||
</SECTION>
|
||||
|
||||
|
||||
120
docs/reference/eekboard/Makefile.am
Normal file
120
docs/reference/eekboard/Makefile.am
Normal file
@ -0,0 +1,120 @@
|
||||
# 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
|
||||
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
# We require automake 1.6 at least.
|
||||
AUTOMAKE_OPTIONS = 1.6
|
||||
|
||||
# This is a blank Makefile.am for using gtk-doc.
|
||||
# Copy this to your project's API docs directory and modify the variables to
|
||||
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
||||
# of using the various options.
|
||||
|
||||
# The name of the module, e.g. 'glib'.
|
||||
DOC_MODULE=eekboard
|
||||
|
||||
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
||||
#DOC_MODULE_VERSION=2
|
||||
|
||||
|
||||
# The top-level SGML file. You can change this if you want to.
|
||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
|
||||
|
||||
# The directory containing the source code. Relative to $(srcdir).
|
||||
# gtk-doc will search all .c & .h files beneath here for inline comments
|
||||
# documenting the functions and macros.
|
||||
# e.g. DOC_SOURCE_DIR=../../../gtk
|
||||
DOC_SOURCE_DIR=../../../eekboard
|
||||
|
||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||
SCANGOBJ_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-scan.
|
||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||
SCAN_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb.
|
||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
|
||||
MKDB_OPTIONS=--sgml-mode --output-format=xml
|
||||
|
||||
# Extra options to supply to gtkdoc-mktmpl
|
||||
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||
MKTMPL_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-mkhtml
|
||||
MKHTML_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||
FIXXREF_OPTIONS=
|
||||
|
||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||
HFILE_GLOB=$(top_srcdir)/eekboard/*.h
|
||||
CFILE_GLOB=$(top_srcdir)/eekboard/*.c
|
||||
|
||||
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
||||
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
||||
EXTRA_HFILES=
|
||||
|
||||
# Header files to ignore when scanning. Use base file name, no paths
|
||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
|
||||
IGNORE_HFILES=config.h eekboard.h
|
||||
|
||||
# Images to copy into HTML directory.
|
||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||
HTML_IMAGES=
|
||||
|
||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||
# content_files=eekboard-overview.xml
|
||||
|
||||
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||
# These files must be listed here *and* in content_files
|
||||
# e.g. expand_content_files=running.sgml
|
||||
# expand_content_files=eekboard-overview.xml
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||
# signals and properties.
|
||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||
GTKDOC_CFLAGS = $(GIO2_CFLAGS)
|
||||
GTKDOC_LIBS = $(top_builddir)/eekboard/libeekboard.la $(GIO2_LIBS)
|
||||
|
||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||
include $(top_srcdir)/gtk-doc.make
|
||||
|
||||
# Other files to distribute
|
||||
# e.g. EXTRA_DIST += version.xml.in
|
||||
# EXTRA_DIST +=
|
||||
|
||||
# Files not to distribute
|
||||
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
||||
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
||||
#DISTCLEANFILES +=
|
||||
|
||||
# Comment this out if you want your docs-status tested during 'make check'
|
||||
if ENABLE_GTK_DOC
|
||||
#TESTS_ENVIRONMENT = cd $(srcsrc) &&
|
||||
#TESTS = $(GTKDOC_CHECK)
|
||||
endif
|
||||
|
||||
-include $(top_srcdir)/gtk-doc.mk
|
||||
56
docs/reference/eekboard/eekboard-docs.sgml
Normal file
56
docs/reference/eekboard/eekboard-docs.sgml
Normal file
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||
[
|
||||
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||
]>
|
||||
<book id="index">
|
||||
<bookinfo>
|
||||
<title>eekboard Reference Manual</title>
|
||||
<releaseinfo>
|
||||
for eekboard 0.90.0.
|
||||
</releaseinfo>
|
||||
<copyright>
|
||||
<year>2011</year>
|
||||
<holder>Daiki Ueno</holder>
|
||||
</copyright>
|
||||
|
||||
<copyright>
|
||||
<year>2011</year>
|
||||
<holder>Red Hat, Inc.</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation License,
|
||||
Version 1.3 or any later version published by the Free Software
|
||||
Foundation; with no Invariant Sections, no Front-Cover Texts and
|
||||
no Back-Cover Texts. A copy of the license is included in the
|
||||
section entitled "GNU Free Documentation License".
|
||||
</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
|
||||
<part id="apireference">
|
||||
<title>API Manual</title>
|
||||
<chapter>
|
||||
<title>Client interface to eekboard-server</title>
|
||||
<xi:include href="xml/eekboard-client.xml"/>
|
||||
<xi:include href="xml/eekboard-context.xml"/>
|
||||
</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">
|
||||
<title>Object Hierarchy</title>
|
||||
<xi:include href="xml/tree_index.sgml"/>
|
||||
</chapter>
|
||||
<index id="api-index-full">
|
||||
<title>API Index</title>
|
||||
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
</part>
|
||||
</book>
|
||||
104
docs/reference/eekboard/eekboard-sections.txt
Normal file
104
docs/reference/eekboard/eekboard-sections.txt
Normal file
@ -0,0 +1,104 @@
|
||||
<SECTION>
|
||||
<FILE>eekboard-client</FILE>
|
||||
<TITLE>EekboardClient</TITLE>
|
||||
EekboardClient
|
||||
EekboardClientClass
|
||||
eekboard_client_new
|
||||
eekboard_client_create_context
|
||||
eekboard_client_push_context
|
||||
eekboard_client_pop_context
|
||||
eekboard_client_destroy_context
|
||||
EekboardClientPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEKBOARD_CLIENT
|
||||
EEKBOARD_IS_CLIENT
|
||||
EEKBOARD_TYPE_CLIENT
|
||||
eekboard_client_get_type
|
||||
EEKBOARD_CLIENT_CLASS
|
||||
EEKBOARD_IS_CLIENT_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>
|
||||
<FILE>eekboard-context</FILE>
|
||||
<TITLE>EekboardContext</TITLE>
|
||||
EekboardContext
|
||||
EekboardContextClass
|
||||
eekboard_context_new
|
||||
eekboard_context_add_keyboard
|
||||
eekboard_context_remove_keyboard
|
||||
eekboard_context_set_keyboard
|
||||
eekboard_context_show_keyboard
|
||||
eekboard_context_hide_keyboard
|
||||
eekboard_context_set_group
|
||||
eekboard_context_get_group
|
||||
eekboard_context_press_keycode
|
||||
eekboard_context_release_keycode
|
||||
eekboard_context_is_keyboard_visible
|
||||
eekboard_context_set_enabled
|
||||
eekboard_context_is_enabled
|
||||
eekboard_context_set_fullscreen
|
||||
EekboardContextPrivate
|
||||
<SUBSECTION Standard>
|
||||
EEKBOARD_CONTEXT
|
||||
EEKBOARD_IS_CONTEXT
|
||||
EEKBOARD_TYPE_CONTEXT
|
||||
eekboard_context_get_type
|
||||
EEKBOARD_CONTEXT_CLASS
|
||||
EEKBOARD_IS_CONTEXT_CLASS
|
||||
EEKBOARD_CONTEXT_GET_CLASS
|
||||
</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>
|
||||
|
||||
4
docs/reference/eekboard/eekboard.types
Normal file
4
docs/reference/eekboard/eekboard.types
Normal file
@ -0,0 +1,4 @@
|
||||
eekboard_client_get_type
|
||||
eekboard_context_get_type
|
||||
eekboard_context_service_get_type
|
||||
eekboard_service_get_type
|
||||
313
eek/Makefile.am
313
eek/Makefile.am
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -16,141 +16,218 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA
|
||||
|
||||
lib_LTLIBRARIES = \
|
||||
libeek.la \
|
||||
libeek-gtk.la \
|
||||
libeek-xkb.la \
|
||||
lib_LTLIBRARIES = \
|
||||
libeek.la \
|
||||
libeek-gtk.la \
|
||||
libeek-xkb.la \
|
||||
libeek-xkl.la
|
||||
|
||||
if HAVE_CLUTTER
|
||||
if ENABLE_CLUTTER
|
||||
lib_LTLIBRARIES += libeek-clutter.la
|
||||
endif
|
||||
|
||||
libeek_la_SOURCES = \
|
||||
$(srcdir)/eek-layout.c \
|
||||
$(srcdir)/eek-layout.h \
|
||||
$(srcdir)/eek-element.c \
|
||||
$(srcdir)/eek-element.h \
|
||||
$(srcdir)/eek-container.c \
|
||||
$(srcdir)/eek-container.h \
|
||||
$(srcdir)/eek-keyboard.c \
|
||||
$(srcdir)/eek-keyboard.h \
|
||||
$(srcdir)/eek-section.c \
|
||||
$(srcdir)/eek-section.h \
|
||||
$(srcdir)/eek-key.c \
|
||||
$(srcdir)/eek-key.h \
|
||||
$(srcdir)/eek-types.h \
|
||||
$(srcdir)/eek-types.c \
|
||||
$(srcdir)/eek-keysym.h \
|
||||
$(srcdir)/eek-keysym.c \
|
||||
$(srcdir)/eek-special-keysym-labels.h \
|
||||
$(srcdir)/eek-unicode-keysym-labels.h \
|
||||
$(srcdir)/eek-keyname-keysym-labels.h
|
||||
libeek_la_CFLAGS = $(GOBJECT2_CFLAGS)
|
||||
libeek_la_LIBADD = $(GOBJECT2_LIBS) -lm
|
||||
libeek_public_headers = \
|
||||
$(srcdir)/eek-layout.h \
|
||||
$(srcdir)/eek-element.h \
|
||||
$(srcdir)/eek-container.h \
|
||||
$(srcdir)/eek-keyboard.h \
|
||||
$(srcdir)/eek-section.h \
|
||||
$(srcdir)/eek-key.h \
|
||||
$(srcdir)/eek-symbol.h \
|
||||
$(srcdir)/eek-keysym.h \
|
||||
$(srcdir)/eek-symbol-matrix.h \
|
||||
$(srcdir)/eek-types.h \
|
||||
$(srcdir)/eek-xml.h \
|
||||
$(srcdir)/eek-xml-layout.h \
|
||||
$(srcdir)/eek-serializable.h \
|
||||
$(srcdir)/eek-theme.h \
|
||||
$(srcdir)/eek.h
|
||||
|
||||
if HAVE_CLUTTER
|
||||
libeek_clutter_la_SOURCES = \
|
||||
$(srcdir)/eek-clutter-keyboard.c \
|
||||
$(srcdir)/eek-clutter-keyboard.h \
|
||||
$(srcdir)/eek-clutter-section.c \
|
||||
$(srcdir)/eek-clutter-section.h \
|
||||
$(srcdir)/eek-clutter-key.c \
|
||||
$(srcdir)/eek-clutter-key.h \
|
||||
$(srcdir)/eek-clutter-key-actor.c \
|
||||
$(srcdir)/eek-clutter-key-actor.h \
|
||||
$(srcdir)/eek-clutter-drawing-context.c \
|
||||
$(srcdir)/eek-clutter-drawing-context.h \
|
||||
$(srcdir)/eek-drawing.h \
|
||||
$(srcdir)/eek-drawing.c \
|
||||
libeek_private_headers = \
|
||||
$(srcdir)/eek-renderer.h \
|
||||
$(srcdir)/eek-special-keysym-entries.h \
|
||||
$(srcdir)/eek-unicode-keysym-entries.h \
|
||||
$(srcdir)/eek-xkeysym-keysym-entries.h \
|
||||
$(srcdir)/eek-marshalers.h \
|
||||
$(srcdir)/eek-theme-context.h \
|
||||
$(srcdir)/eek-theme-private.h \
|
||||
$(srcdir)/eek-theme-node.h
|
||||
|
||||
libeek_sources = \
|
||||
$(srcdir)/eek.c \
|
||||
$(srcdir)/eek-layout.c \
|
||||
$(srcdir)/eek-element.c \
|
||||
$(srcdir)/eek-container.c \
|
||||
$(srcdir)/eek-keyboard.c \
|
||||
$(srcdir)/eek-section.c \
|
||||
$(srcdir)/eek-key.c \
|
||||
$(srcdir)/eek-symbol-matrix.c \
|
||||
$(srcdir)/eek-symbol.c \
|
||||
$(srcdir)/eek-keysym.c \
|
||||
$(srcdir)/eek-types.c \
|
||||
$(srcdir)/eek-serializable.c \
|
||||
$(srcdir)/eek-xml.c \
|
||||
$(srcdir)/eek-xml-layout.c \
|
||||
$(srcdir)/eek-renderer.c \
|
||||
$(srcdir)/eek-keyboard-drawing.c \
|
||||
$(srcdir)/eek-theme.c \
|
||||
$(srcdir)/eek-theme-context.c \
|
||||
$(srcdir)/eek-theme-node.c
|
||||
|
||||
libeek_keysym_sources = \
|
||||
$(srcdir)/eek-special-keysym-entries.h \
|
||||
$(srcdir)/eek-unicode-keysym-entries.h \
|
||||
$(srcdir)/eek-xkeysym-keysym-entries.h
|
||||
|
||||
libeek_enumtypes_sources = \
|
||||
$(srcdir)/eek-enumtypes.c \
|
||||
$(srcdir)/eek-enumtypes.h
|
||||
|
||||
libeek_marshalers_sources = \
|
||||
$(srcdir)/eek-marshalers.c \
|
||||
$(srcdir)/eek-marshalers.h
|
||||
|
||||
BUILT_SOURCES = \
|
||||
$(libeek_keysym_sources) \
|
||||
$(libeek_enumtypes_sources) \
|
||||
$(libeek_marshalers_sources)
|
||||
|
||||
libeek_la_SOURCES = \
|
||||
$(libeek_sources) \
|
||||
$(srcdir)/eek-enumtypes.c \
|
||||
$(srcdir)/eek-marshalers.c
|
||||
|
||||
libeek_la_CFLAGS = -DEEK_COMPILATION=1 $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) $(LIBCROCO_CFLAGS)
|
||||
libeek_la_LIBADD = $(GIO2_LIBS) $(PANGOCAIRO_LIBS) $(LIBCROCO_LIBS) -lm
|
||||
|
||||
if ENABLE_CLUTTER
|
||||
libeek_clutter_public_headers = \
|
||||
$(srcdir)/eek-clutter-keyboard.h \
|
||||
$(srcdir)/eek-clutter.h
|
||||
|
||||
libeek_clutter_la_CFLAGS = $(CLUTTER_CFLAGS) $(CAIRO_LIBS) $(PANGO_LIBS)
|
||||
libeek_clutter_la_LIBADD = libeek.la $(CLUTTER_LIBS) $(CAIRO_LIBS) $(PANGO_LIBS)
|
||||
libeek_clutter_private_headers = \
|
||||
$(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 = -DEEK_COMPILATION=1 $(CLUTTER_CFLAGS)
|
||||
libeek_clutter_la_LIBADD = libeek.la $(CLUTTER_LIBS)
|
||||
endif
|
||||
|
||||
libeek_gtk_la_SOURCES = \
|
||||
$(srcdir)/eek-gtk-keyboard.c \
|
||||
$(srcdir)/eek-gtk-keyboard.h \
|
||||
$(srcdir)/eek-drawing.h \
|
||||
$(srcdir)/eek-drawing.c \
|
||||
libeek_gtk_public_headers = \
|
||||
$(srcdir)/eek-gtk-keyboard.h \
|
||||
$(srcdir)/eek-gtk.h
|
||||
libeek_gtk_private_headers = \
|
||||
$(srcdir)/eek-gtk-renderer.h
|
||||
libeek_gtk_sources = \
|
||||
$(srcdir)/eek-gtk-keyboard.c \
|
||||
$(srcdir)/eek-gtk-renderer.c
|
||||
|
||||
libeek_gtk_la_CFLAGS = $(GTK_CFLAGS) $(CAIRO_LIBS) $(PANGO_LIBS)
|
||||
libeek_gtk_la_LIBADD = libeek.la $(GTK_LIBS) $(CAIRO_LIBS) $(PANGO_LIBS)
|
||||
libeek_gtk_la_SOURCES = $(libeek_gtk_sources)
|
||||
libeek_gtk_la_CFLAGS = -DEEK_COMPILATION=1 $(GTK_CFLAGS) $(LIBCANBERRA_CFLAGS)
|
||||
libeek_gtk_la_LIBADD = libeek.la $(GTK_LIBS) $(LIBCANBERRA_LIBS)
|
||||
|
||||
libeek_xkb_la_SOURCES = \
|
||||
$(srcdir)/eek-xkb-layout.h \
|
||||
libeek_xkb_public_headers = \
|
||||
$(srcdir)/eek-xkb-layout.h \
|
||||
$(srcdir)/eek-xkb.h
|
||||
|
||||
libeek_xkb_sources = \
|
||||
$(srcdir)/eek-xkb-layout.c
|
||||
|
||||
libeek_xkb_la_CFLAGS = $(XKB_CFLAGS) $(GTK_CFLAGS)
|
||||
libeek_xkb_la_SOURCES = $(libeek_xkb_sources)
|
||||
libeek_xkb_la_CFLAGS = -DEEK_COMPILATION=1 $(XKB_CFLAGS) $(GTK_CFLAGS)
|
||||
libeek_xkb_la_LIBADD = libeek.la $(XKB_LIBS) $(GTK_LIBS)
|
||||
|
||||
libeek_xkl_la_SOURCES = \
|
||||
$(srcdir)/eek-xkl-layout.h \
|
||||
libeek_xkl_public_headers = \
|
||||
$(srcdir)/eek-xkl-layout.h \
|
||||
$(srcdir)/eek-xkl.h
|
||||
|
||||
libeek_xkl_sources = \
|
||||
$(srcdir)/eek-xkl-layout.c
|
||||
|
||||
libeek_xkl_la_CFLAGS = $(LIBXKLAVIER_CFLAGS) $(GTK_CFLAGS)
|
||||
libeek_xkl_la_SOURCES = $(libeek_xkl_sources)
|
||||
libeek_xkl_la_CFLAGS = -DEEK_COMPILATION=1 $(LIBXKLAVIER_CFLAGS) $(GTK_CFLAGS)
|
||||
libeek_xkl_la_LIBADD = libeek-xkb.la $(LIBXKLAVIER_LIBS) $(GTK_LIBS)
|
||||
|
||||
eekdir = $(includedir)/eek-$(EEK_API_VERSION)/eek
|
||||
eek_HEADERS = \
|
||||
$(srcdir)/eek-element.h \
|
||||
$(srcdir)/eek-container.h \
|
||||
$(srcdir)/eek-keyboard.h \
|
||||
$(srcdir)/eek-section.h \
|
||||
$(srcdir)/eek-key.h \
|
||||
$(srcdir)/eek-layout.h \
|
||||
$(srcdir)/eek-keysym.h \
|
||||
$(srcdir)/eek-types.h \
|
||||
$(srcdir)/eek-gtk-keyboard.h \
|
||||
$(srcdir)/eek-xkb-layout.h \
|
||||
$(srcdir)/eek-xkl-layout.h \
|
||||
$(srcdir)/eek.h \
|
||||
$(srcdir)/eek-gtk.h \
|
||||
$(srcdir)/eek-xkb.h \
|
||||
$(srcdir)/eek-xkl.h
|
||||
eek_HEADERS = \
|
||||
$(libeek_public_headers) \
|
||||
$(srcdir)/eek-enumtypes.h \
|
||||
$(libeek_clutter_public_headers) \
|
||||
$(libeek_gtk_public_headers) \
|
||||
$(libeek_xkb_public_headers) \
|
||||
$(libeek_xkl_public_headers)
|
||||
|
||||
if HAVE_CLUTTER
|
||||
eek_HEADERS += \
|
||||
$(srcdir)/eek-clutter-keyboard.h \
|
||||
$(srcdir)/eek-clutter-section.h \
|
||||
$(srcdir)/eek-clutter-key.h \
|
||||
$(srcdir)/eek-clutter-drawing-context.h \
|
||||
$(srcdir)/eek-clutter.h
|
||||
endif
|
||||
noinst_HEADERS = \
|
||||
$(libeek_private_headers) \
|
||||
$(libeek_clutter_private_headers) \
|
||||
$(libeek_gtk_private_headers) \
|
||||
$(libeek_xkb_private_headers) \
|
||||
$(libeek_xkl_private_headers)
|
||||
|
||||
eek-keysym.c: eek-special-keysym-labels.h eek-unicode-keysym-labels.h eek-keyname-keysym-labels.h
|
||||
eek-special-keysym-entries.h: special-keysym-entries.txt
|
||||
$(AM_V_GEN) $(PYTHON) ./gen-keysym-entries.py special_keysym_entries \
|
||||
< $< > $@
|
||||
eek-unicode-keysym-entries.h: unicode-keysym-entries.txt
|
||||
$(AM_V_GEN) $(PYTHON) ./gen-keysym-entries.py unicode_keysym_entries \
|
||||
< $< > $@
|
||||
eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt
|
||||
$(AM_V_GEN) $(PYTHON) ./gen-keysym-entries.py xkeysym_keysym_entries \
|
||||
< $< > $@
|
||||
|
||||
eek-special-keysym-labels.h: special-keysym-labels.txt
|
||||
$(PYTHON) ./gen-keysym-labels.py special_keysym_labels < $< > $@
|
||||
eek-unicode-keysym-labels.h: unicode-keysym-labels.txt
|
||||
$(PYTHON) ./gen-keysym-labels.py unicode_keysym_labels < $< > $@
|
||||
eek-keyname-keysym-labels.h: keyname-keysym-labels.txt
|
||||
$(PYTHON) ./gen-keysym-labels.py keyname_keysym_labels < $< > $@
|
||||
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
|
||||
eek-marshalers.h: eek-marshalers.list
|
||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --header --internal > $@.tmp && \
|
||||
mv $@.tmp $@
|
||||
|
||||
eek-marshalers.c: eek-marshalers.list eek-marshalers.h
|
||||
$(AM_V_GEN) (echo "#include \"eek-marshalers.h\""; \
|
||||
$(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --body --internal) > $@.tmp && \
|
||||
mv $@.tmp $@
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = \
|
||||
eek-$(EEK_API_VERSION).pc \
|
||||
eek-clutter-$(EEK_API_VERSION).pc \
|
||||
eek-gtk-$(EEK_API_VERSION).pc \
|
||||
eek-xkb-$(EEK_API_VERSION).pc \
|
||||
pkgconfig_DATA = \
|
||||
eek-$(EEK_API_VERSION).pc \
|
||||
eek-gtk-$(EEK_API_VERSION).pc \
|
||||
eek-xkb-$(EEK_API_VERSION).pc \
|
||||
eek-xkl-$(EEK_API_VERSION).pc
|
||||
|
||||
DISTCLEANFILES = \
|
||||
eek-special-keysym-labels.h \
|
||||
eek-unicode-keysym-labels.h \
|
||||
eek-keyname-keysym-labels.h \
|
||||
$(pkgconfig_DATA)
|
||||
|
||||
EXTRA_DIST = \
|
||||
gen-keysym-labels.py \
|
||||
special-keysym-labels.txt \
|
||||
unicode-keysym-labels.txt \
|
||||
keyname-keysym-labels.txt
|
||||
if ENABLE_CLUTTER
|
||||
pkgconfig_DATA += eek-clutter-$(EEK_API_VERSION).pc
|
||||
endif
|
||||
|
||||
CLEANFILES =
|
||||
|
||||
DISTCLEANFILES = \
|
||||
$(BUILT_SOURCES) \
|
||||
$(pkgconfig_DATA)
|
||||
|
||||
EXTRA_DIST = \
|
||||
gen-keysym-entries.py \
|
||||
special-keysym-entries.txt \
|
||||
unicode-keysym-entries.txt \
|
||||
xkeysym-keysym-entries.txt \
|
||||
eek-enumtypes.h.template \
|
||||
eek-enumtypes.c.template \
|
||||
eek-marshalers.list
|
||||
|
||||
-include $(INTROSPECTION_MAKEFILE)
|
||||
INTROSPECTION_GIRS =
|
||||
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(builddir)
|
||||
@ -160,45 +237,45 @@ if HAVE_INTROSPECTION
|
||||
|
||||
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_INCLUDES = GLib-2.0 GObject-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_LIBS = libeek.la
|
||||
Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_la_SOURCES)
|
||||
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_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_LIBS = libeek-gtk.la
|
||||
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_gtk_la_SOURCES)
|
||||
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_gtk_sources) $(libeek_gtk_public_headers)
|
||||
|
||||
if HAVE_CLUTTER
|
||||
if ENABLE_CLUTTER
|
||||
EekClutter@EEK_LIBRARY_SUFFIX@.gir: libeek-clutter.la Eek@EEK_LIBRARY_SUFFIX@.gir
|
||||
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_la_SOURCES)
|
||||
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_la_SOURCES)
|
||||
EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkb_sources) $(libeek_xkb_public_headers)
|
||||
|
||||
EekXkl@EEK_LIBRARY_SUFFIX@.gir: libeek-xkl.la EekXkb@EEK_LIBRARY_SUFFIX@.gir
|
||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 EekXkb@EEK_LIBRARY_SUFFIX@
|
||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkl_la_CFLAGS)
|
||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkl.la
|
||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_la_SOURCES)
|
||||
EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_sources) $(libeek_xkl_public_headers)
|
||||
|
||||
INTROSPECTION_GIRS += \
|
||||
Eek@EEK_LIBRARY_SUFFIX@.gir \
|
||||
EekGtk@EEK_LIBRARY_SUFFIX@.gir \
|
||||
EekXkb@EEK_LIBRARY_SUFFIX@.gir \
|
||||
INTROSPECTION_GIRS += \
|
||||
Eek@EEK_LIBRARY_SUFFIX@.gir \
|
||||
EekGtk@EEK_LIBRARY_SUFFIX@.gir \
|
||||
EekXkb@EEK_LIBRARY_SUFFIX@.gir \
|
||||
EekXkl@EEK_LIBRARY_SUFFIX@.gir
|
||||
|
||||
if HAVE_CLUTTER
|
||||
INTROSPECTION_GIRS += \
|
||||
if ENABLE_CLUTTER
|
||||
INTROSPECTION_GIRS += \
|
||||
EekClutter@EEK_LIBRARY_SUFFIX@.gir
|
||||
endif
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -23,8 +23,8 @@ includedir=@includedir@
|
||||
|
||||
Name: EEK
|
||||
Description: A Library to Create Keyboard-like UI
|
||||
URL: http://ueno.github.com/eekboard/
|
||||
URL: http://fedorahosted.org/eekboard/
|
||||
Version: @VERSION@
|
||||
Requires: gobject-2.0
|
||||
Requires: gobject-2.0 gio-2.0
|
||||
Libs: -L${libdir} -leek
|
||||
Cflags: -I${includedir}/eek-@EEK_API_VERSION@
|
||||
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
# 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
|
||||
@ -23,7 +23,7 @@ includedir=@includedir@
|
||||
|
||||
Name: libeek-clutter
|
||||
Description: A Library to Create Keyboard-like UI (Clutter Support)
|
||||
URL: http://ueno.github.com/eekboard/
|
||||
URL: http://fedorahosted.org/eekboard/
|
||||
Version: @VERSION@
|
||||
Requires: eek-@EEK_API_VERSION@ clutter-1.0
|
||||
Libs: -L${libdir} -leek-clutter
|
||||
@ -1,138 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "eek-clutter-drawing-context.h"
|
||||
|
||||
G_DEFINE_TYPE (EekClutterDrawingContext, eek_clutter_drawing_context,
|
||||
G_TYPE_INITIALLY_UNOWNED);
|
||||
|
||||
#define EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CLUTTER_DRAWING_CONTEXT, EekClutterDrawingContextPrivate))
|
||||
|
||||
struct _EekClutterDrawingContextPrivate
|
||||
{
|
||||
/* outline pointer -> ClutterTexture */
|
||||
GHashTable *outline_textures;
|
||||
|
||||
/* keysym category -> PangoFontDescription * */
|
||||
PangoFontDescription *category_fonts[EEK_KEYSYM_CATEGORY_LAST];
|
||||
};
|
||||
|
||||
static void
|
||||
eek_clutter_drawing_context_dispose (GObject *object)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv =
|
||||
EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(object);
|
||||
if (priv->outline_textures) {
|
||||
g_hash_table_unref (priv->outline_textures);
|
||||
priv->outline_textures = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_drawing_context_finalize (GObject *object)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv =
|
||||
EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(object);
|
||||
gint i;
|
||||
|
||||
for (i = 0; i < EEK_KEYSYM_CATEGORY_LAST; i++)
|
||||
pango_font_description_free (priv->category_fonts[i]);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_drawing_context_class_init (EekClutterDrawingContextClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (gobject_class,
|
||||
sizeof (EekClutterDrawingContextPrivate));
|
||||
|
||||
gobject_class->finalize = eek_clutter_drawing_context_finalize;
|
||||
gobject_class->dispose = eek_clutter_drawing_context_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_drawing_context_init (EekClutterDrawingContext *self)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv;
|
||||
|
||||
priv = self->priv = EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(self);
|
||||
priv->outline_textures = g_hash_table_new (g_direct_hash, g_direct_equal);
|
||||
memset (priv->category_fonts, 0, sizeof *priv->category_fonts);
|
||||
}
|
||||
|
||||
void
|
||||
eek_clutter_drawing_context_set_outline_texture
|
||||
(EekClutterDrawingContext *context,
|
||||
EekOutline *outline,
|
||||
ClutterActor *texture)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv =
|
||||
EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(context);
|
||||
g_return_if_fail (priv);
|
||||
g_hash_table_insert (context->priv->outline_textures, outline, texture);
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
eek_clutter_drawing_context_get_outline_texture
|
||||
(EekClutterDrawingContext *context,
|
||||
EekOutline *outline)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv =
|
||||
EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(context);
|
||||
g_return_val_if_fail (priv, NULL);
|
||||
return g_hash_table_lookup (context->priv->outline_textures, outline);
|
||||
}
|
||||
|
||||
void
|
||||
eek_clutter_drawing_context_set_category_font
|
||||
(EekClutterDrawingContext *context,
|
||||
EekKeysymCategory category,
|
||||
PangoFontDescription *font)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv =
|
||||
EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(context);
|
||||
g_return_if_fail (priv);
|
||||
priv->category_fonts[category] = pango_font_description_copy (font);
|
||||
}
|
||||
|
||||
PangoFontDescription *
|
||||
eek_clutter_drawing_context_get_category_font
|
||||
(EekClutterDrawingContext *context,
|
||||
EekKeysymCategory category)
|
||||
{
|
||||
EekClutterDrawingContextPrivate *priv =
|
||||
EEK_CLUTTER_DRAWING_CONTEXT_GET_PRIVATE(context);
|
||||
g_return_val_if_fail (priv, NULL);
|
||||
return priv->category_fonts[category];
|
||||
}
|
||||
|
||||
EekClutterDrawingContext *
|
||||
eek_clutter_drawing_context_new (void)
|
||||
{
|
||||
return g_object_new (EEK_TYPE_CLUTTER_DRAWING_CONTEXT, NULL);
|
||||
}
|
||||
@ -1,82 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 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_DRAWING_CONTEXT_H
|
||||
#define EEK_CLUTTER_DRAWING_CONTEXT_H 1
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include <pango/pango.h>
|
||||
|
||||
#include "eek-keysym.h"
|
||||
#include "eek-types.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
#define EEK_TYPE_CLUTTER_DRAWING_CONTEXT (eek_clutter_drawing_context_get_type())
|
||||
#define EEK_CLUTTER_DRAWING_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEK_TYPE_CLUTTER_DRAWING_CONTEXT, EekClutterDrawingContext))
|
||||
#define EEK_CLUTTER_DRAWING_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EEK_TYPE_CLUTTER_DRAWING_CONTEXT, EekClutterDrawingContextClass))
|
||||
#define EEK_IS_CLUTTER_DRAWING_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEK_TYPE_CLUTTER_DRAWING_CONTEXT))
|
||||
#define EEK_IS_CLUTTER_DRAWING_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEK_TYPE_CLUTTER_DRAWING_CONTEXT))
|
||||
#define EEK_CLUTTER_DRAWING_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EEK_TYPE_CLUTTER_DRAWING_CONTEXT, EekClutterDrawingContextClass))
|
||||
|
||||
typedef struct _EekClutterDrawingContext EekClutterDrawingContext;
|
||||
typedef struct _EekClutterDrawingContextClass EekClutterDrawingContextClass;
|
||||
typedef struct _EekClutterDrawingContextPrivate EekClutterDrawingContextPrivate;
|
||||
|
||||
struct _EekClutterDrawingContext
|
||||
{
|
||||
/*< private >*/
|
||||
GInitiallyUnowned parent;
|
||||
|
||||
/*< private >*/
|
||||
EekClutterDrawingContextPrivate *priv;
|
||||
};
|
||||
|
||||
struct _EekClutterDrawingContextClass
|
||||
{
|
||||
/*< private >*/
|
||||
GInitiallyUnownedClass parent_class;
|
||||
|
||||
/*< private >*/
|
||||
/* padding */
|
||||
gpointer pdummy[24];
|
||||
};
|
||||
|
||||
GType eek_clutter_drawing_context_get_type
|
||||
(void) G_GNUC_CONST;
|
||||
EekClutterDrawingContext *eek_clutter_drawing_context_new
|
||||
(void);
|
||||
|
||||
void eek_clutter_drawing_context_set_outline_texture
|
||||
(EekClutterDrawingContext *context,
|
||||
EekOutline *outline,
|
||||
ClutterActor *texture);
|
||||
ClutterActor *eek_clutter_drawing_context_get_outline_texture
|
||||
(EekClutterDrawingContext *context,
|
||||
EekOutline *outline);
|
||||
|
||||
void eek_clutter_drawing_context_set_category_font
|
||||
(EekClutterDrawingContext *context,
|
||||
EekKeysymCategory category,
|
||||
PangoFontDescription *fonts);
|
||||
PangoFontDescription *eek_clutter_drawing_context_get_category_font
|
||||
(EekClutterDrawingContext *context,
|
||||
EekKeysymCategory category);
|
||||
|
||||
G_END_DECLS
|
||||
#endif /* EEK_CLUTTER_DRAWING_CONTEXT_H */
|
||||
@ -1,373 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2006 Sergey V. Udaltsov <svu@gnome.org>
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <cogl/cogl.h>
|
||||
#include <cogl/cogl-pango.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
#include "eek-clutter-key-actor.h"
|
||||
#include "eek-keysym.h"
|
||||
#include "eek-drawing.h"
|
||||
#include "eek-section.h"
|
||||
#include "eek-keyboard.h"
|
||||
|
||||
#define noKBDRAW_DEBUG
|
||||
|
||||
enum {
|
||||
PRESSED,
|
||||
RELEASED,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
static guint signals[LAST_SIGNAL] = { 0, };
|
||||
|
||||
G_DEFINE_TYPE (EekClutterKeyActor, eek_clutter_key_actor,
|
||||
CLUTTER_TYPE_GROUP);
|
||||
|
||||
#define EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_CLUTTER_KEY_ACTOR, EekClutterKeyActorPrivate))
|
||||
|
||||
struct _EekClutterKeyActorPrivate
|
||||
{
|
||||
EekClutterDrawingContext *context;
|
||||
EekKey *key;
|
||||
ClutterActor *texture;
|
||||
gboolean is_pressed;
|
||||
};
|
||||
|
||||
static ClutterActor *get_texture (EekClutterKeyActor *actor);
|
||||
static void draw_key_on_layout (EekClutterKeyActor *actor,
|
||||
PangoLayout *layout);
|
||||
static void key_enlarge (ClutterActor *actor);
|
||||
static void key_shrink (ClutterActor *actor);
|
||||
|
||||
static void
|
||||
eek_clutter_key_actor_real_paint (ClutterActor *self)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv = EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE (self);
|
||||
PangoLayout *layout;
|
||||
PangoRectangle logical_rect = { 0, };
|
||||
CoglColor color;
|
||||
ClutterGeometry geom;
|
||||
EekBounds bounds;
|
||||
|
||||
eek_element_get_bounds (EEK_ELEMENT(priv->key), &bounds);
|
||||
clutter_actor_set_anchor_point_from_gravity (self,
|
||||
CLUTTER_GRAVITY_CENTER);
|
||||
clutter_actor_set_position (self,
|
||||
bounds.x + bounds.width / 2,
|
||||
bounds.y + bounds.height / 2);
|
||||
|
||||
if (!priv->texture) {
|
||||
priv->texture = get_texture (EEK_CLUTTER_KEY_ACTOR(self));
|
||||
clutter_actor_set_position (priv->texture, 0, 0);
|
||||
clutter_container_add_actor (CLUTTER_CONTAINER(self), priv->texture);
|
||||
}
|
||||
|
||||
CLUTTER_ACTOR_CLASS (eek_clutter_key_actor_parent_class)->
|
||||
paint (self);
|
||||
|
||||
/* Draw the label on the key. */
|
||||
layout = clutter_actor_create_pango_layout (self, NULL);
|
||||
draw_key_on_layout (EEK_CLUTTER_KEY_ACTOR(self), layout);
|
||||
pango_layout_get_extents (layout, NULL, &logical_rect);
|
||||
|
||||
/* FIXME: Color should be configurable through a property. */
|
||||
cogl_color_set_from_4ub (&color, 0x80, 0x00, 0x00, 0xff);
|
||||
clutter_actor_get_allocation_geometry (self, &geom);
|
||||
cogl_pango_render_layout
|
||||
(layout,
|
||||
(geom.width - logical_rect.width / PANGO_SCALE) / 2,
|
||||
(geom.height - logical_rect.height / PANGO_SCALE) / 2,
|
||||
&color,
|
||||
0);
|
||||
g_object_unref (layout);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_actor_real_pressed (EekClutterKeyActor *self)
|
||||
{
|
||||
ClutterActor *actor, *section;
|
||||
|
||||
actor = CLUTTER_ACTOR(self);
|
||||
|
||||
/* Make sure the enlarged key show up on the keys which belong
|
||||
to other sections. */
|
||||
section = clutter_actor_get_parent (actor);
|
||||
clutter_actor_raise_top (section);
|
||||
clutter_actor_raise_top (actor);
|
||||
key_enlarge (actor);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_actor_real_released (EekClutterKeyActor *self)
|
||||
{
|
||||
ClutterActor *actor, *section;
|
||||
|
||||
actor = CLUTTER_ACTOR(self);
|
||||
|
||||
/* Make sure the enlarged key show up on the keys which belong
|
||||
to other sections. */
|
||||
section = clutter_actor_get_parent (actor);
|
||||
clutter_actor_raise_top (section);
|
||||
clutter_actor_raise_top (actor);
|
||||
key_shrink (actor);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_actor_dispose (GObject *object)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv = EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE(object);
|
||||
|
||||
if (priv->context) {
|
||||
g_object_unref (priv->context);
|
||||
priv->context = NULL;
|
||||
}
|
||||
if (priv->key) {
|
||||
g_object_unref (priv->key);
|
||||
priv->key = NULL;
|
||||
}
|
||||
G_OBJECT_CLASS (eek_clutter_key_actor_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_actor_class_init (EekClutterKeyActorClass *klass)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (gobject_class,
|
||||
sizeof (EekClutterKeyActorPrivate));
|
||||
|
||||
actor_class->paint = eek_clutter_key_actor_real_paint;
|
||||
|
||||
gobject_class->dispose = eek_clutter_key_actor_dispose;
|
||||
|
||||
/* signals */
|
||||
klass->pressed = eek_clutter_key_actor_real_pressed;
|
||||
klass->released = eek_clutter_key_actor_real_released;
|
||||
|
||||
signals[PRESSED] =
|
||||
g_signal_new ("pressed",
|
||||
G_TYPE_FROM_CLASS(gobject_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET(EekClutterKeyActorClass, pressed),
|
||||
NULL,
|
||||
NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
signals[RELEASED] =
|
||||
g_signal_new ("released",
|
||||
G_TYPE_FROM_CLASS(gobject_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET(EekClutterKeyActorClass, released),
|
||||
NULL,
|
||||
NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
on_button_press_event (ClutterActor *actor,
|
||||
ClutterEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv =
|
||||
EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE(actor);
|
||||
|
||||
if (!priv->is_pressed) {
|
||||
priv->is_pressed = TRUE;
|
||||
/* priv->key will send back PRESSED event of actor. */
|
||||
g_signal_emit_by_name (priv->key, "pressed");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
on_button_release_event (ClutterActor *actor,
|
||||
ClutterEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv =
|
||||
EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE(actor);
|
||||
|
||||
if (priv->is_pressed) {
|
||||
priv->is_pressed = FALSE;
|
||||
/* priv->key will send back RELEASED event of actor. */
|
||||
g_signal_emit_by_name (priv->key, "released");
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_leave_event (ClutterActor *actor,
|
||||
ClutterEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv =
|
||||
EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE(actor);
|
||||
|
||||
if (priv->is_pressed) {
|
||||
priv->is_pressed = FALSE;
|
||||
/* priv->key will send back RELEASED event of actor. */
|
||||
g_signal_emit_by_name (priv->key, "released");
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_actor_init (EekClutterKeyActor *self)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv;
|
||||
|
||||
priv = self->priv = EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE(self);
|
||||
priv->key = NULL;
|
||||
priv->texture = NULL;
|
||||
|
||||
clutter_actor_set_reactive (CLUTTER_ACTOR(self), TRUE);
|
||||
|
||||
g_signal_connect (self, "button-press-event",
|
||||
G_CALLBACK (on_button_press_event), NULL);
|
||||
g_signal_connect (self, "button-release-event",
|
||||
G_CALLBACK (on_button_release_event), NULL);
|
||||
g_signal_connect (self, "leave-event",
|
||||
G_CALLBACK (on_leave_event), NULL);
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
eek_clutter_key_actor_new (EekClutterDrawingContext *context, EekKey *key)
|
||||
{
|
||||
EekClutterKeyActor *actor;
|
||||
|
||||
actor = g_object_new (EEK_TYPE_CLUTTER_KEY_ACTOR, NULL);
|
||||
actor->priv->context = context;
|
||||
g_object_ref_sink (actor->priv->context);
|
||||
actor->priv->key = key;
|
||||
g_object_ref_sink (actor->priv->key);
|
||||
return CLUTTER_ACTOR(actor);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
on_key_animate_complete (ClutterAnimation *animation,
|
||||
gpointer user_data)
|
||||
{
|
||||
ClutterActor *actor = (ClutterActor*)user_data;
|
||||
|
||||
/* reset after effect */
|
||||
clutter_actor_set_opacity (actor, 0xff);
|
||||
clutter_actor_set_scale (actor, 1.0, 1.0);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
key_enlarge (ClutterActor *actor)
|
||||
{
|
||||
clutter_actor_set_scale (actor, 1.0, 1.0);
|
||||
clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 150,
|
||||
"scale-x", 1.5,
|
||||
"scale-y", 1.5,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
key_shrink (ClutterActor *actor)
|
||||
{
|
||||
clutter_actor_set_scale (actor, 1.5, 1.5);
|
||||
clutter_actor_animate (actor, CLUTTER_EASE_OUT_SINE, 150,
|
||||
"scale-x", 1.0,
|
||||
"scale-y", 1.0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
static ClutterActor *
|
||||
create_texture_for_key (EekKey *key)
|
||||
{
|
||||
ClutterActor *texture;
|
||||
cairo_t *cr;
|
||||
EekOutline *outline;
|
||||
EekBounds bounds;
|
||||
|
||||
outline = eek_key_get_outline (EEK_KEY(key));
|
||||
eek_element_get_bounds (EEK_ELEMENT(key), &bounds);
|
||||
|
||||
texture = clutter_cairo_texture_new (bounds.width, bounds.height);
|
||||
cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE(texture));
|
||||
eek_draw_outline (cr, outline);
|
||||
cairo_destroy (cr);
|
||||
return texture;
|
||||
}
|
||||
|
||||
static ClutterActor *
|
||||
get_texture (EekClutterKeyActor *actor)
|
||||
{
|
||||
ClutterActor *texture;
|
||||
EekOutline *outline;
|
||||
|
||||
outline = eek_key_get_outline (actor->priv->key);
|
||||
texture =
|
||||
eek_clutter_drawing_context_get_outline_texture (actor->priv->context,
|
||||
outline);
|
||||
if (texture == NULL) {
|
||||
texture = create_texture_for_key (actor->priv->key);
|
||||
eek_clutter_drawing_context_set_outline_texture (actor->priv->context,
|
||||
outline,
|
||||
texture);
|
||||
} else
|
||||
texture = clutter_clone_new (texture);
|
||||
return texture;
|
||||
}
|
||||
|
||||
static void
|
||||
draw_key_on_layout (EekClutterKeyActor *self,
|
||||
PangoLayout *layout)
|
||||
{
|
||||
EekClutterKeyActorPrivate *priv = EEK_CLUTTER_KEY_ACTOR_GET_PRIVATE (self);
|
||||
guint keysym;
|
||||
const gchar *label, *empty_label = "";
|
||||
EekKeysymCategory category;
|
||||
EekBounds bounds;
|
||||
PangoFontDescription *font;
|
||||
|
||||
keysym = eek_key_get_keysym (priv->key);
|
||||
if (keysym == EEK_INVALID_KEYSYM)
|
||||
return;
|
||||
category = eek_keysym_get_category (keysym);
|
||||
if (category == EEK_KEYSYM_CATEGORY_UNKNOWN)
|
||||
return;
|
||||
|
||||
font = eek_clutter_drawing_context_get_category_font (priv->context,
|
||||
category);
|
||||
pango_layout_set_font_description (layout, font);
|
||||
|
||||
eek_element_get_bounds (EEK_ELEMENT(priv->key), &bounds);
|
||||
pango_layout_set_width (layout, PANGO_SCALE * bounds.width);
|
||||
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
|
||||
|
||||
label = eek_keysym_to_string (keysym);
|
||||
if (!label)
|
||||
label = empty_label;
|
||||
eek_draw_text_on_layout (layout, label);
|
||||
if (label != empty_label)
|
||||
g_free ((gpointer)label);
|
||||
}
|
||||
@ -1,68 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 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_ACTOR_H
|
||||
#define EEK_CLUTTER_KEY_ACTOR_H 1
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include "eek-clutter-drawing-context.h"
|
||||
#include "eek-key.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
#define EEK_TYPE_CLUTTER_KEY_ACTOR (eek_clutter_key_actor_get_type())
|
||||
#define EEK_CLUTTER_KEY_ACTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EEK_TYPE_CLUTTER_KEY_ACTOR, EekClutterKeyActor))
|
||||
#define EEK_CLUTTER_KEY_ACTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EEK_TYPE_CLUTTER_KEY_ACTOR, EekClutterKeyActorClass))
|
||||
#define EEK_IS_CLUTTER_KEY_ACTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EEK_TYPE_CLUTTER_KEY_ACTOR))
|
||||
#define EEK_IS_CLUTTER_KEY_ACTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EEK_TYPE_CLUTTER_KEY_ACTOR))
|
||||
#define EEK_CLUTTER_KEY_ACTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EEK_TYPE_CLUTTER_KEY_ACTOR, EekClutterKeyActorClass))
|
||||
|
||||
typedef struct _EekClutterKeyActor EekClutterKeyActor;
|
||||
typedef struct _EekClutterKeyActorClass EekClutterKeyActorClass;
|
||||
typedef struct _EekClutterKeyActorPrivate EekClutterKeyActorPrivate;
|
||||
|
||||
struct _EekClutterKeyActor
|
||||
{
|
||||
/*< private >*/
|
||||
ClutterGroup parent;
|
||||
|
||||
/*< private >*/
|
||||
EekClutterKeyActorPrivate *priv;
|
||||
};
|
||||
|
||||
struct _EekClutterKeyActorClass
|
||||
{
|
||||
/*< private >*/
|
||||
ClutterGroupClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* pressed) (EekClutterKeyActor *self);
|
||||
void (* released) (EekClutterKeyActor *self);
|
||||
|
||||
/*< private >*/
|
||||
/* padding */
|
||||
gpointer pdummy[24];
|
||||
};
|
||||
|
||||
GType eek_clutter_key_actor_get_type
|
||||
(void) G_GNUC_CONST;
|
||||
ClutterActor *eek_clutter_key_actor_new (EekClutterDrawingContext *context,
|
||||
EekKey *key);
|
||||
|
||||
G_END_DECLS
|
||||
#endif /* EEK_CLUTTER_KEY_ACTOR_H */
|
||||
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
* 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
|
||||
@ -23,98 +23,269 @@
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "eek-clutter-key.h"
|
||||
#include "eek-clutter-key-actor.h"
|
||||
|
||||
G_DEFINE_TYPE (EekClutterKey, eek_clutter_key, EEK_TYPE_KEY);
|
||||
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
|
||||
{
|
||||
EekClutterDrawingContext *context;
|
||||
ClutterActor *actor;
|
||||
EekKey *key;
|
||||
EekClutterRenderer *renderer;
|
||||
gulong pressed_handler;
|
||||
gulong released_handler;
|
||||
};
|
||||
|
||||
static void
|
||||
eek_clutter_key_real_set_name (EekElement *self,
|
||||
const gchar *name)
|
||||
on_pressed (EekKey *key, gpointer user_data)
|
||||
{
|
||||
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(self);
|
||||
ClutterActor *actor = user_data, *parent;
|
||||
|
||||
EEK_ELEMENT_CLASS (eek_clutter_key_parent_class)->
|
||||
set_name (self, name);
|
||||
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);
|
||||
|
||||
if (priv->actor)
|
||||
clutter_actor_set_name (CLUTTER_ACTOR(priv->actor), name);
|
||||
clutter_actor_animate (actor, CLUTTER_EASE_IN_SINE, 150,
|
||||
"scale-x", 1.5,
|
||||
"scale-y", 1.5,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_real_set_bounds (EekElement *self,
|
||||
EekBounds *bounds)
|
||||
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);
|
||||
|
||||
EEK_ELEMENT_CLASS (eek_clutter_key_parent_class)->
|
||||
set_bounds (self, bounds);
|
||||
set_position (self);
|
||||
clutter_actor_set_reactive (self, TRUE);
|
||||
|
||||
if (priv->actor) {
|
||||
clutter_actor_set_position (priv->actor, bounds->x, bounds->y);
|
||||
clutter_actor_set_size (priv->actor, bounds->width, bounds->height);
|
||||
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_real_pressed (EekKey *key)
|
||||
{
|
||||
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(key);
|
||||
|
||||
if (priv->actor)
|
||||
g_signal_emit_by_name (priv->actor, "pressed");
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_real_released (EekKey *key)
|
||||
{
|
||||
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(key);
|
||||
|
||||
if (priv->actor)
|
||||
g_signal_emit_by_name (priv->actor, "released");
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_key_dispose (GObject *object)
|
||||
{
|
||||
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(object);
|
||||
|
||||
if (priv->context) {
|
||||
g_object_unref (priv->context);
|
||||
priv->context = NULL;
|
||||
if (priv->renderer) {
|
||||
g_object_unref (priv->renderer);
|
||||
priv->renderer = NULL;
|
||||
}
|
||||
if (priv->actor) {
|
||||
g_object_unref (priv->actor);
|
||||
priv->actor = 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);
|
||||
EekElementClass *element_class = EEK_ELEMENT_CLASS (klass);
|
||||
EekKeyClass *key_class = EEK_KEY_CLASS (klass);
|
||||
GParamSpec *pspec;
|
||||
|
||||
g_type_class_add_private (gobject_class,
|
||||
sizeof (EekClutterKeyPrivate));
|
||||
|
||||
element_class->set_name = eek_clutter_key_real_set_name;
|
||||
element_class->set_bounds = eek_clutter_key_real_set_bounds;
|
||||
gobject_class->dispose = eek_clutter_key_dispose;
|
||||
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 */
|
||||
key_class->pressed = eek_clutter_key_real_pressed;
|
||||
key_class->released = eek_clutter_key_real_released;
|
||||
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
|
||||
@ -122,33 +293,15 @@ eek_clutter_key_init (EekClutterKey *self)
|
||||
{
|
||||
EekClutterKeyPrivate *priv;
|
||||
priv = self->priv = EEK_CLUTTER_KEY_GET_PRIVATE (self);
|
||||
priv->actor = NULL;
|
||||
priv->key = NULL;
|
||||
priv->renderer = NULL;
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
eek_clutter_key_get_actor (EekClutterKey *key)
|
||||
eek_clutter_key_new (EekKey *key, EekClutterRenderer *renderer)
|
||||
{
|
||||
EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(key);
|
||||
|
||||
if (!priv->actor) {
|
||||
g_return_val_if_fail (priv->context, NULL);
|
||||
priv->actor = eek_clutter_key_actor_new (priv->context, EEK_KEY(key));
|
||||
g_object_ref_sink (priv->actor);
|
||||
}
|
||||
return priv->actor;
|
||||
}
|
||||
|
||||
EekKey *
|
||||
eek_clutter_key_new (EekClutterDrawingContext *context, gint column, gint row)
|
||||
{
|
||||
EekClutterKey *key;
|
||||
|
||||
g_return_val_if_fail (context, NULL);
|
||||
key = g_object_new (EEK_TYPE_CLUTTER_KEY,
|
||||
"column", column,
|
||||
"row", row,
|
||||
NULL);
|
||||
key->priv->context = context;
|
||||
g_object_ref_sink (key->priv->context);
|
||||
return EEK_KEY(key);
|
||||
return g_object_new (EEK_TYPE_CLUTTER_KEY,
|
||||
"key", key,
|
||||
"renderer", renderer,
|
||||
NULL);
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
* 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
|
||||
@ -21,8 +21,8 @@
|
||||
#define EEK_CLUTTER_KEY_H 1
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
#include "eek-clutter-drawing-context.h"
|
||||
#include "eek-key.h"
|
||||
#include "eek-clutter-renderer.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
#define EEK_TYPE_CLUTTER_KEY (eek_clutter_key_get_type())
|
||||
@ -39,7 +39,7 @@ typedef struct _EekClutterKeyPrivate EekClutterKeyPrivate;
|
||||
struct _EekClutterKey
|
||||
{
|
||||
/*< private >*/
|
||||
EekKey parent;
|
||||
ClutterActor parent;
|
||||
|
||||
/*< private >*/
|
||||
EekClutterKeyPrivate *priv;
|
||||
@ -48,18 +48,16 @@ struct _EekClutterKey
|
||||
struct _EekClutterKeyClass
|
||||
{
|
||||
/*< private >*/
|
||||
EekKeyClass parent_class;
|
||||
ClutterActorClass parent_class;
|
||||
|
||||
/*< private >*/
|
||||
/* padding */
|
||||
gpointer pdummy[24];
|
||||
};
|
||||
|
||||
GType eek_clutter_key_get_type (void) G_GNUC_CONST;
|
||||
EekKey * eek_clutter_key_new (EekClutterDrawingContext *context,
|
||||
gint column,
|
||||
gint row);
|
||||
ClutterActor *eek_clutter_key_get_actor (EekClutterKey *key);
|
||||
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,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
* 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
|
||||
@ -20,107 +20,165 @@
|
||||
|
||||
/**
|
||||
* SECTION:eek-clutter-keyboard
|
||||
* @short_description: #EekKeyboard that can be converted into a #ClutterActor
|
||||
* @short_description: a #ClutterActor displaying #EekKeyboard
|
||||
*/
|
||||
#include <string.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "eek-clutter-keyboard.h"
|
||||
#include "eek-clutter-drawing-context.h"
|
||||
#include "eek-keyboard.h"
|
||||
#include "eek-drawing.h"
|
||||
#include <string.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
G_DEFINE_TYPE (EekClutterKeyboard, eek_clutter_keyboard, EEK_TYPE_KEYBOARD);
|
||||
#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
|
||||
{
|
||||
EekClutterDrawingContext *context;
|
||||
ClutterActor *actor;
|
||||
|
||||
guint key_press_event_handler;
|
||||
guint key_release_event_handler;
|
||||
EekKeyboard *keyboard;
|
||||
EekClutterRenderer *renderer;
|
||||
EekTheme *theme;
|
||||
};
|
||||
|
||||
static void
|
||||
eek_clutter_keyboard_real_set_name (EekElement *self,
|
||||
const gchar *name)
|
||||
{
|
||||
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
|
||||
|
||||
EEK_ELEMENT_CLASS (eek_clutter_keyboard_parent_class)->
|
||||
set_name (self, name);
|
||||
|
||||
if (priv->actor)
|
||||
clutter_actor_set_name (priv->actor, name);
|
||||
}
|
||||
|
||||
static void
|
||||
eek_clutter_keyboard_real_set_bounds (EekElement *self,
|
||||
EekBounds *bounds)
|
||||
{
|
||||
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
|
||||
|
||||
EEK_ELEMENT_CLASS (eek_clutter_keyboard_parent_class)->
|
||||
set_bounds (self, bounds);
|
||||
|
||||
if (priv->actor) {
|
||||
clutter_actor_set_position (priv->actor, bounds->x, bounds->y);
|
||||
clutter_actor_set_size (priv->actor, bounds->width, bounds->height);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
key_pressed_event (EekSection *section,
|
||||
EekKey *key,
|
||||
EekKeyboard *keyboard)
|
||||
{
|
||||
g_signal_emit_by_name (keyboard, "key-pressed", key);
|
||||
}
|
||||
|
||||
static void
|
||||
key_released_event (EekSection *section,
|
||||
EekKey *key,
|
||||
EekKeyboard *keyboard)
|
||||
{
|
||||
g_signal_emit_by_name (keyboard, "key-released", key);
|
||||
}
|
||||
|
||||
static EekSection *
|
||||
eek_clutter_keyboard_real_create_section (EekKeyboard *self)
|
||||
{
|
||||
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
|
||||
EekSection *section;
|
||||
struct _CreateSectionCallbackData {
|
||||
ClutterActor *actor;
|
||||
EekClutterRenderer *renderer;
|
||||
};
|
||||
typedef struct _CreateSectionCallbackData CreateSectionCallbackData;
|
||||
|
||||
if (!priv->context) {
|
||||
priv->context = eek_clutter_drawing_context_new ();
|
||||
g_object_ref_sink (G_OBJECT(priv->context));
|
||||
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;
|
||||
}
|
||||
|
||||
section = eek_clutter_section_new (priv->context);
|
||||
g_return_val_if_fail (section, NULL);
|
||||
|
||||
g_signal_connect (section, "key-pressed",
|
||||
G_CALLBACK(key_pressed_event), self);
|
||||
g_signal_connect (section, "key-released",
|
||||
G_CALLBACK(key_released_event), self);
|
||||
|
||||
EEK_CONTAINER_GET_CLASS(self)->add_child (EEK_CONTAINER(self),
|
||||
EEK_ELEMENT(section));
|
||||
|
||||
actor = eek_clutter_keyboard_get_actor (EEK_CLUTTER_KEYBOARD(self));
|
||||
clutter_container_add_actor
|
||||
(CLUTTER_CONTAINER(actor),
|
||||
eek_clutter_section_get_actor (EEK_CLUTTER_SECTION(section)));
|
||||
|
||||
return section;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -128,40 +186,53 @@ eek_clutter_keyboard_dispose (GObject *object)
|
||||
{
|
||||
EekClutterKeyboardPrivate *priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(object);
|
||||
|
||||
if (priv->context) {
|
||||
g_object_unref (G_OBJECT(priv->context));
|
||||
priv->context = NULL;
|
||||
if (priv->renderer) {
|
||||
g_object_unref (G_OBJECT(priv->renderer));
|
||||
priv->renderer = NULL;
|
||||
}
|
||||
if (priv->actor) {
|
||||
ClutterActor *stage;
|
||||
|
||||
stage = clutter_actor_get_stage (priv->actor);
|
||||
if (stage) {
|
||||
g_signal_handler_disconnect (stage,
|
||||
priv->key_press_event_handler);
|
||||
g_signal_handler_disconnect (stage,
|
||||
priv->key_release_event_handler);
|
||||
}
|
||||
g_object_unref (priv->actor);
|
||||
priv->actor = 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);
|
||||
EekElementClass *element_class = EEK_ELEMENT_CLASS (klass);
|
||||
EekKeyboardClass *keyboard_class = EEK_KEYBOARD_CLASS (klass);
|
||||
GParamSpec *pspec;
|
||||
|
||||
g_type_class_add_private (gobject_class,
|
||||
sizeof (EekClutterKeyboardPrivate));
|
||||
|
||||
keyboard_class->create_section = eek_clutter_keyboard_real_create_section;
|
||||
element_class->set_name = eek_clutter_keyboard_real_set_name;
|
||||
element_class->set_bounds = eek_clutter_keyboard_real_set_bounds;
|
||||
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
|
||||
@ -170,147 +241,32 @@ eek_clutter_keyboard_init (EekClutterKeyboard *self)
|
||||
EekClutterKeyboardPrivate *priv;
|
||||
|
||||
priv = self->priv = EEK_CLUTTER_KEYBOARD_GET_PRIVATE(self);
|
||||
priv->actor = NULL;
|
||||
priv->keyboard = NULL;
|
||||
priv->renderer = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* eek_clutter_keyboard_new:
|
||||
* @keyboard: an #EekKeyboard
|
||||
*
|
||||
* Create a new #EekClutterKeyboard.
|
||||
* Create a new #ClutterActor displaying @keyboard.
|
||||
* Returns: a #ClutterActor
|
||||
*/
|
||||
EekKeyboard*
|
||||
eek_clutter_keyboard_new (void)
|
||||
{
|
||||
return g_object_new (EEK_TYPE_CLUTTER_KEYBOARD, NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_clutter_key_press_event (ClutterActor *actor,
|
||||
ClutterEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
guint keycode;
|
||||
EekKey *key;
|
||||
|
||||
keycode = clutter_event_get_key_code (event);
|
||||
key = eek_keyboard_find_key_by_keycode (user_data, keycode);
|
||||
if (key) {
|
||||
g_signal_emit_by_name (key, "pressed", NULL);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_clutter_key_release_event (ClutterActor *actor,
|
||||
ClutterEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
guint keycode;
|
||||
EekKey *key;
|
||||
|
||||
keycode = clutter_event_get_key_code (event);
|
||||
key = eek_keyboard_find_key_by_keycode (user_data, keycode);
|
||||
if (key) {
|
||||
g_signal_emit_by_name (key, "released", NULL);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
on_clutter_stage_resize (GObject *object,
|
||||
GParamSpec *param_spec,
|
||||
gpointer user_data)
|
||||
{
|
||||
ClutterActor *stage = CLUTTER_ACTOR(object);
|
||||
EekClutterKeyboard *keyboard = user_data;
|
||||
GValue value = {0};
|
||||
gfloat width, height, scale;
|
||||
EekBounds bounds;
|
||||
|
||||
eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
|
||||
g_object_get (G_OBJECT(stage), "width", &width, NULL);
|
||||
g_object_get (G_OBJECT(stage), "height", &height, NULL);
|
||||
|
||||
g_value_init (&value, G_TYPE_DOUBLE);
|
||||
|
||||
scale = width > height ? width / bounds.width : height / bounds.height;
|
||||
|
||||
g_value_set_double (&value, scale);
|
||||
g_object_set_property (G_OBJECT (stage),
|
||||
"scale-x",
|
||||
&value);
|
||||
|
||||
g_value_set_double (&value, scale);
|
||||
g_object_set_property (G_OBJECT (stage),
|
||||
"scale-y",
|
||||
&value);
|
||||
}
|
||||
|
||||
static void
|
||||
on_clutter_realize (ClutterActor *actor,
|
||||
gpointer user_data)
|
||||
{
|
||||
EekClutterKeyboard *keyboard = user_data;
|
||||
EekClutterKeyboardPrivate *priv =
|
||||
EEK_CLUTTER_KEYBOARD_GET_PRIVATE(keyboard);
|
||||
ClutterActor *stage;
|
||||
|
||||
stage = clutter_actor_get_stage (priv->actor);
|
||||
priv->key_press_event_handler =
|
||||
g_signal_connect (stage, "key-press-event",
|
||||
G_CALLBACK (on_clutter_key_press_event), keyboard);
|
||||
priv->key_release_event_handler =
|
||||
g_signal_connect (stage, "key-release-event",
|
||||
G_CALLBACK (on_clutter_key_release_event), keyboard);
|
||||
g_signal_connect (stage, "notify::width",
|
||||
G_CALLBACK (on_clutter_stage_resize), keyboard);
|
||||
g_signal_connect (stage, "notify::height",
|
||||
G_CALLBACK (on_clutter_stage_resize), keyboard);
|
||||
}
|
||||
|
||||
static void
|
||||
update_category_fonts (EekClutterKeyboard *keyboard)
|
||||
{
|
||||
EekClutterKeyboardPrivate *priv =
|
||||
EEK_CLUTTER_KEYBOARD_GET_PRIVATE(keyboard);
|
||||
PangoContext *context;
|
||||
PangoLayout *layout;
|
||||
PangoFontDescription *fonts[EEK_KEYSYM_CATEGORY_LAST], *base_font;
|
||||
gint i;
|
||||
|
||||
context = clutter_actor_get_pango_context (priv->actor);
|
||||
layout = pango_layout_new (context);
|
||||
base_font = pango_font_description_from_string ("Sans");
|
||||
pango_layout_set_font_description (layout, base_font);
|
||||
pango_font_description_free (base_font);
|
||||
eek_get_fonts (EEK_KEYBOARD(keyboard),
|
||||
layout,
|
||||
(PangoFontDescription **)&fonts);
|
||||
for (i = 0; i < EEK_KEYSYM_CATEGORY_LAST; i++) {
|
||||
eek_clutter_drawing_context_set_category_font (priv->context,
|
||||
i,
|
||||
fonts[i]);
|
||||
pango_font_description_free (fonts[i]);
|
||||
}
|
||||
g_object_unref (G_OBJECT(layout));
|
||||
}
|
||||
|
||||
ClutterActor *
|
||||
eek_clutter_keyboard_get_actor (EekClutterKeyboard *keyboard)
|
||||
eek_clutter_keyboard_new (EekKeyboard *keyboard)
|
||||
{
|
||||
EekClutterKeyboardPrivate *priv =
|
||||
EEK_CLUTTER_KEYBOARD_GET_PRIVATE(keyboard);
|
||||
if (!priv->actor) {
|
||||
priv->actor = clutter_group_new ();
|
||||
g_object_ref_sink (priv->actor);
|
||||
g_signal_connect (priv->actor, "realize",
|
||||
G_CALLBACK (on_clutter_realize), keyboard);
|
||||
g_return_val_if_fail (priv->actor, NULL);
|
||||
|
||||
eek_keyboard_realize (EEK_KEYBOARD(keyboard));
|
||||
update_category_fonts (keyboard);
|
||||
}
|
||||
return priv->actor;
|
||||
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,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Daiki Ueno <ueno@unixuser.org>
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
* 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
|
||||
@ -17,10 +17,15 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#if !defined(__EEK_H_INSIDE__) && !defined(EEK_COMPILATION)
|
||||
#error "Only <eek/eek-clutter.h> can be included directly."
|
||||
#endif
|
||||
|
||||
#ifndef EEK_CLUTTER_KEYBOARD_H
|
||||
#define EEK_CLUTTER_KEYBOARD_H 1
|
||||
|
||||
#include "eek-clutter-section.h"
|
||||
#include <clutter/clutter.h>
|
||||
#include "eek-keyboard.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
@ -38,7 +43,7 @@ typedef struct _EekClutterKeyboardPrivate EekClutterKeyboardPrivate;
|
||||
struct _EekClutterKeyboard
|
||||
{
|
||||
/*< private >*/
|
||||
EekKeyboard parent;
|
||||
ClutterGroup parent;
|
||||
|
||||
EekClutterKeyboardPrivate *priv;
|
||||
};
|
||||
@ -46,7 +51,7 @@ struct _EekClutterKeyboard
|
||||
struct _EekClutterKeyboardClass
|
||||
{
|
||||
/*< private >*/
|
||||
EekKeyboardClass parent_class;
|
||||
ClutterGroupClass parent_class;
|
||||
|
||||
/*< private >*/
|
||||
/* padding */
|
||||
@ -54,8 +59,9 @@ struct _EekClutterKeyboardClass
|
||||
};
|
||||
|
||||
GType eek_clutter_keyboard_get_type (void) G_GNUC_CONST;
|
||||
EekKeyboard *eek_clutter_keyboard_new (void);
|
||||
ClutterActor *eek_clutter_keyboard_get_actor (EekClutterKeyboard *keyboard);
|
||||
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 */
|
||||
|
||||
235
eek/eek-clutter-renderer.c
Normal file
235
eek/eek-clutter-renderer.c
Normal file
@ -0,0 +1,235 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user