Compare commits
	
		
			22 Commits
		
	
	
		
			eekboard-0
			...
			eekboard-0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2211fb6b1e | |||
| 34569679f0 | |||
| 816e1f0d51 | |||
| de62d74ac5 | |||
| d71c79f268 | |||
| ee948cb2ae | |||
| ba59a850d1 | |||
| b7999842a9 | |||
| 2dd0ae47db | |||
| 926d9346e1 | |||
| ac8764b9b7 | |||
| 4cf3f24fbc | |||
| 0691766a31 | |||
| 77c00a10da | |||
| 8c407ae482 | |||
| 8d2d612547 | |||
| 80dc26b7f4 | |||
| fbe7b9ec1a | |||
| 048fccd6e0 | |||
| 638d41e0b6 | |||
| 4271eb6b3e | |||
| d25bfd8ba7 | 
							
								
								
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -33,6 +33,7 @@ gtk-doc.make
 | 
				
			|||||||
eek/eek-special-keysym-entries.h
 | 
					eek/eek-special-keysym-entries.h
 | 
				
			||||||
eek/eek-unicode-keysym-entries.h
 | 
					eek/eek-unicode-keysym-entries.h
 | 
				
			||||||
eek/eek-xkeysym-keysym-entries.h
 | 
					eek/eek-xkeysym-keysym-entries.h
 | 
				
			||||||
 | 
					eek/eek-enumtypes.[ch]
 | 
				
			||||||
eek/eek-marshalers.[ch]
 | 
					eek/eek-marshalers.[ch]
 | 
				
			||||||
eek/*.pc
 | 
					eek/*.pc
 | 
				
			||||||
eek/*.gir
 | 
					eek/*.gir
 | 
				
			||||||
@ -43,12 +44,13 @@ eekboard/*.typelib
 | 
				
			|||||||
tests/eek-simple-test
 | 
					tests/eek-simple-test
 | 
				
			||||||
tests/eek-xkb-test
 | 
					tests/eek-xkb-test
 | 
				
			||||||
tests/eek-xml-test
 | 
					tests/eek-xml-test
 | 
				
			||||||
 | 
					src/eekboard
 | 
				
			||||||
src/eekboard-server
 | 
					src/eekboard-server
 | 
				
			||||||
src/eekboard-client
 | 
					 | 
				
			||||||
src/eekboard-system-client
 | 
					 | 
				
			||||||
src/eekboard-xml
 | 
					src/eekboard-xml
 | 
				
			||||||
 | 
					src/eekboard-server.service
 | 
				
			||||||
docs/reference/eek/*.stamp
 | 
					docs/reference/eek/*.stamp
 | 
				
			||||||
docs/reference/eek/*.txt
 | 
					docs/reference/eek/*.txt
 | 
				
			||||||
 | 
					docs/reference/eek/eek.types
 | 
				
			||||||
!/docs/reference/eek/eek-sections.txt
 | 
					!/docs/reference/eek/eek-sections.txt
 | 
				
			||||||
docs/reference/eek/xml
 | 
					docs/reference/eek/xml
 | 
				
			||||||
docs/reference/eek/html
 | 
					docs/reference/eek/html
 | 
				
			||||||
@ -71,6 +73,9 @@ po/*.gmo
 | 
				
			|||||||
po/Makefile.in.in
 | 
					po/Makefile.in.in
 | 
				
			||||||
po/POTFILES
 | 
					po/POTFILES
 | 
				
			||||||
po/stamp-it
 | 
					po/stamp-it
 | 
				
			||||||
 | 
					po/.intltool-merge-cache
 | 
				
			||||||
bindings/vala/*.vapi
 | 
					bindings/vala/*.vapi
 | 
				
			||||||
py-compile
 | 
					py-compile
 | 
				
			||||||
 | 
					data/*.desktop
 | 
				
			||||||
 | 
					examples/eekboard-inscript/eekboard-inscript
 | 
				
			||||||
 | 
					examples/simple-client/simple-client
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								README
									
									
									
									
									
								
							@ -7,8 +7,8 @@ tools to implement desktop virtual keyboards.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
** Dependencies
 | 
					** Dependencies
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REQUIRED: GLib2, GTK, GConf2, PangoCairo, libxklavier, libcroco
 | 
					REQUIRED: GLib2, GTK, PangoCairo, libxklavier, libcroco
 | 
				
			||||||
OPTIONAL: fakekey, CSPI, Clutter, Clutter-Gtk, Vala, gobject-introspection
 | 
					OPTIONAL: fakekey, at-spi2-core, Clutter, Clutter-Gtk, Python, Vala, gobject-introspection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** Build from git repo
 | 
					** Build from git repo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -24,7 +24,7 @@ OPTIONAL: fakekey, CSPI, Clutter, Clutter-Gtk, Vala, gobject-introspection
 | 
				
			|||||||
  $ make
 | 
					  $ make
 | 
				
			||||||
  $ sudo make install
 | 
					  $ sudo make install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* How to test
 | 
					* Using command-line tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eekboard currently includes 3 tools to implement your own virtual
 | 
					eekboard currently includes 3 tools to implement your own virtual
 | 
				
			||||||
keyboard.
 | 
					keyboard.
 | 
				
			||||||
@ -47,10 +47,15 @@ be started with:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  $ eekboard
 | 
					  $ eekboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By default it renders current system keyboard layout.  To read custom
 | 
				
			||||||
 | 
					keyboard layout, specify --keyboard option like:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $ eekboard --keyboard /usr/share/eekboard/keyboards/us-qwerty.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** eekboard-xml
 | 
					** eekboard-xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eekboard-xml is a tool to manipulate XML keyboard description used by
 | 
					eekboard-xml is a tool to manipulate XML keyboard description read by
 | 
				
			||||||
eekboard-client tool and in the eekboard library.
 | 
					eekboard if --keyboard option is specified.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To dump the current system keyboard layout into an XML file:
 | 
					To dump the current system keyboard layout into an XML file:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -60,6 +65,14 @@ You can display the dumped layout with:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  $ eekboard-xml --load keyboard.xml
 | 
					  $ eekboard-xml --load keyboard.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Documentation
 | 
					* Using library
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eekboard currently includes two libraries.  One is to access
 | 
				
			||||||
 | 
					eekboard-server via D-Bus and another is to manually render on-screen
 | 
				
			||||||
 | 
					keyboards.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For the former, see
 | 
				
			||||||
 | 
					file:docs/reference/eekboard/html/index.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For the latter, see
 | 
				
			||||||
See file:docs/reference/eek/html/index.html
 | 
					See file:docs/reference/eek/html/index.html
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										36
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								configure.ac
									
									
									
									
									
								
							@ -20,7 +20,7 @@ AC_PREREQ(2.63)
 | 
				
			|||||||
dnl AC_CONFIG_SRCDIR([configure.ac])
 | 
					dnl AC_CONFIG_SRCDIR([configure.ac])
 | 
				
			||||||
AC_CONFIG_MACRO_DIR([m4])
 | 
					AC_CONFIG_MACRO_DIR([m4])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AC_INIT([eekboard], [0.90.6], [ueno@unixuser.org])
 | 
					AC_INIT([eekboard], [0.90.7], [ueno@unixuser.org])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dnl Init automake
 | 
					dnl Init automake
 | 
				
			||||||
AM_INIT_AUTOMAKE
 | 
					AM_INIT_AUTOMAKE
 | 
				
			||||||
@ -85,7 +85,7 @@ AM_CONDITIONAL([HAVE_GTK_2],[test "$with_gtk" = "2.0"])
 | 
				
			|||||||
AM_CONDITIONAL([HAVE_GTK_3],[test "$with_gtk" = "3.0"])
 | 
					AM_CONDITIONAL([HAVE_GTK_3],[test "$with_gtk" = "3.0"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AM_PATH_GLIB_2_0
 | 
					AM_PATH_GLIB_2_0
 | 
				
			||||||
PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.25.4], ,
 | 
					PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= 2.26.0], ,
 | 
				
			||||||
  [AC_MSG_ERROR([GLib2 not found])])
 | 
					  [AC_MSG_ERROR([GLib2 not found])])
 | 
				
			||||||
PKG_CHECK_MODULES([GIO2], [gio-2.0], ,
 | 
					PKG_CHECK_MODULES([GIO2], [gio-2.0], ,
 | 
				
			||||||
  [AC_MSG_ERROR([Gio2 not found])])
 | 
					  [AC_MSG_ERROR([Gio2 not found])])
 | 
				
			||||||
@ -95,8 +95,6 @@ PKG_CHECK_MODULES([GTK], [
 | 
				
			|||||||
  gtk+-$GTK_API_VERSION >= $GTK_REQUIRED
 | 
					  gtk+-$GTK_API_VERSION >= $GTK_REQUIRED
 | 
				
			||||||
  gdk-$GTK_API_VERSION >= $GTK_REQUIRED], ,
 | 
					  gdk-$GTK_API_VERSION >= $GTK_REQUIRED], ,
 | 
				
			||||||
  [AC_MSG_ERROR([GTK not found])])
 | 
					  [AC_MSG_ERROR([GTK not found])])
 | 
				
			||||||
PKG_CHECK_MODULES([GCONF2], [gconf-2.0], ,
 | 
					 | 
				
			||||||
  [AC_MSG_ERROR([GConf not found])])
 | 
					 | 
				
			||||||
PKG_CHECK_MODULES([XKB], [x11], ,
 | 
					PKG_CHECK_MODULES([XKB], [x11], ,
 | 
				
			||||||
  [AC_MSG_ERROR([XKB support not found])])
 | 
					  [AC_MSG_ERROR([XKB support not found])])
 | 
				
			||||||
PKG_CHECK_MODULES([LIBXKLAVIER], [libxklavier x11], ,
 | 
					PKG_CHECK_MODULES([LIBXKLAVIER], [libxklavier x11], ,
 | 
				
			||||||
@ -119,20 +117,20 @@ fi
 | 
				
			|||||||
AM_CONDITIONAL(ENABLE_FAKEKEY, [test x$enable_fakekey = xyes])
 | 
					AM_CONDITIONAL(ENABLE_FAKEKEY, [test x$enable_fakekey = xyes])
 | 
				
			||||||
AC_MSG_RESULT($enable_fakekey)
 | 
					AC_MSG_RESULT($enable_fakekey)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dnl use AT-SPI to capture focus/keystroke events
 | 
					dnl use AT-SPI 2 to capture focus/keystroke events
 | 
				
			||||||
AC_MSG_CHECKING([whether you enable AT-SPI event handling])
 | 
					AC_MSG_CHECKING([whether you enable AT-SPI 2 event handling])
 | 
				
			||||||
AC_ARG_ENABLE(cspi,
 | 
					AC_ARG_ENABLE(atspi,
 | 
				
			||||||
              AS_HELP_STRING([--enable-cspi=no/yes],
 | 
					              AS_HELP_STRING([--enable-atspi=no/yes],
 | 
				
			||||||
                             [Enable AT-SPI event handling default=yes]),,
 | 
					                             [Enable AT-SPI 2 event handling default=no]),,
 | 
				
			||||||
              enable_cspi=yes)
 | 
					              enable_atspi=no)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test x$enable_cspi = xyes; then
 | 
					if test x$enable_atspi = xyes; then
 | 
				
			||||||
  PKG_CHECK_MODULES([CSPI], [cspi-1.0], ,
 | 
					  PKG_CHECK_MODULES([ATSPI2], [atspi-2 dbus-glib-1], ,
 | 
				
			||||||
    [AC_MSG_ERROR([AT-SPI C not found])])
 | 
					    [AC_MSG_ERROR([AT-SPI 2 not found])])
 | 
				
			||||||
  AC_DEFINE([HAVE_CSPI], [1], [Define if CSPI is found])
 | 
					  AC_DEFINE([HAVE_ATSPI], [1], [Define if AT-SPI 2 is found])
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
AC_MSG_RESULT($enable_cspi)
 | 
					AC_MSG_RESULT($enable_atspi)
 | 
				
			||||||
AM_CONDITIONAL(ENABLE_CSPI, [test x$enable_cspi = xyes])
 | 
					AM_CONDITIONAL(ENABLE_ATSPI, [test x$enable_atspi = xyes])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dnl Python language binding
 | 
					dnl Python language binding
 | 
				
			||||||
AC_MSG_CHECKING([whether you enable Python language support])
 | 
					AC_MSG_CHECKING([whether you enable Python language support])
 | 
				
			||||||
@ -263,6 +261,10 @@ Build options:
 | 
				
			|||||||
  Build shared libs         $enable_shared
 | 
					  Build shared libs         $enable_shared
 | 
				
			||||||
  Build static libs         $enable_static
 | 
					  Build static libs         $enable_static
 | 
				
			||||||
  CFLAGS                    $CFLAGS
 | 
					  CFLAGS                    $CFLAGS
 | 
				
			||||||
  Build vala binding        $enable_vala
 | 
					  GTK version               $with_gtk
 | 
				
			||||||
 | 
					  Build Clutter UI          $enable_clutter
 | 
				
			||||||
 | 
					  Build Vala binding        $enable_vala
 | 
				
			||||||
 | 
					  Build Python binding      $enable_python
 | 
				
			||||||
  Build document            $enable_gtk_doc
 | 
					  Build document            $enable_gtk_doc
 | 
				
			||||||
 | 
					  Support accessibility     $enable_atspi
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,20 @@ SUBDIRS = icons themes keyboards
 | 
				
			|||||||
desktopdir = $(datadir)/applications
 | 
					desktopdir = $(datadir)/applications
 | 
				
			||||||
desktop_in_files = eekboard.desktop.in
 | 
					desktop_in_files = eekboard.desktop.in
 | 
				
			||||||
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
 | 
					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@
 | 
					@INTLTOOL_DESKTOP_RULE@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLEANFILES = $(desktop_DATA)
 | 
					CLEANFILES = $(desktop_DATA)
 | 
				
			||||||
EXTRA_DIST = $(desktop_in_files)
 | 
					EXTRA_DIST = $(desktop_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
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
Name=Eekboard
 | 
					Name=Eekboard
 | 
				
			||||||
GenericName=Eekboard Virtual Keyboard
 | 
					GenericName=Eekboard Virtual Keyboard
 | 
				
			||||||
Comment=Virtual Keyboard
 | 
					Comment=Virtual Keyboard
 | 
				
			||||||
Exec=eekboard-desktop-client
 | 
					Exec=eekboard
 | 
				
			||||||
Icon=eekboard
 | 
					Icon=eekboard
 | 
				
			||||||
Terminal=false
 | 
					Terminal=false
 | 
				
			||||||
Type=Application
 | 
					Type=Application
 | 
				
			||||||
 | 
				
			|||||||
@ -47,7 +47,7 @@ SCANGOBJ_OPTIONS=
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Extra options to supply to gtkdoc-scan.
 | 
					# Extra options to supply to gtkdoc-scan.
 | 
				
			||||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
 | 
					# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
 | 
				
			||||||
SCAN_OPTIONS=--rebuild-types
 | 
					SCAN_OPTIONS=--rebuild-types --deprecated-guards="EEK_DISABLE_DEPRECATED"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Extra options to supply to gtkdoc-mkdb.
 | 
					# Extra options to supply to gtkdoc-mkdb.
 | 
				
			||||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
 | 
					# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
 | 
				
			||||||
@ -82,7 +82,8 @@ IGNORE_HFILES = \
 | 
				
			|||||||
	eek-clutter-renderer.h \
 | 
						eek-clutter-renderer.h \
 | 
				
			||||||
	eek-clutter-section.h \
 | 
						eek-clutter-section.h \
 | 
				
			||||||
	eek-clutter-key.h \
 | 
						eek-clutter-key.h \
 | 
				
			||||||
	eek-gtk-renderer.h
 | 
						eek-gtk-renderer.h \
 | 
				
			||||||
 | 
						eek-enumtypes.h
 | 
				
			||||||
if !ENABLE_CLUTTER
 | 
					if !ENABLE_CLUTTER
 | 
				
			||||||
IGNORE_HFILES += eek-clutter-keyboard.h eek-clutter.h
 | 
					IGNORE_HFILES += eek-clutter-keyboard.h eek-clutter.h
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,8 @@
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-keyboard</FILE>
 | 
					<FILE>eek-keyboard</FILE>
 | 
				
			||||||
<TITLE>EekKeyboard</TITLE>
 | 
					<TITLE>EekKeyboard</TITLE>
 | 
				
			||||||
EekKeyboardClass
 | 
					 | 
				
			||||||
EekKeyboardPrivate
 | 
					 | 
				
			||||||
EekKeyboard
 | 
					EekKeyboard
 | 
				
			||||||
 | 
					EekKeyboardClass
 | 
				
			||||||
eek_keyboard_new
 | 
					eek_keyboard_new
 | 
				
			||||||
eek_keyboard_get_layout
 | 
					eek_keyboard_get_layout
 | 
				
			||||||
eek_keyboard_get_size
 | 
					eek_keyboard_get_size
 | 
				
			||||||
@ -21,6 +20,11 @@ eek_keyboard_create_section
 | 
				
			|||||||
eek_keyboard_find_key_by_keycode
 | 
					eek_keyboard_find_key_by_keycode
 | 
				
			||||||
eek_keyboard_add_outline
 | 
					eek_keyboard_add_outline
 | 
				
			||||||
eek_keyboard_get_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
 | 
				
			||||||
 | 
					EekKeyboardPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_KEYBOARD
 | 
					EEK_KEYBOARD
 | 
				
			||||||
EEK_IS_KEYBOARD
 | 
					EEK_IS_KEYBOARD
 | 
				
			||||||
@ -34,8 +38,8 @@ EEK_KEYBOARD_GET_CLASS
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-layout</FILE>
 | 
					<FILE>eek-layout</FILE>
 | 
				
			||||||
<TITLE>EekLayout</TITLE>
 | 
					<TITLE>EekLayout</TITLE>
 | 
				
			||||||
EekLayoutClass
 | 
					 | 
				
			||||||
EekLayout
 | 
					EekLayout
 | 
				
			||||||
 | 
					EekLayoutClass
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_LAYOUT
 | 
					EEK_LAYOUT
 | 
				
			||||||
EEK_IS_LAYOUT
 | 
					EEK_IS_LAYOUT
 | 
				
			||||||
@ -51,8 +55,9 @@ EEK_LAYOUT_GET_CLASS
 | 
				
			|||||||
<TITLE>EekGtkKeyboard</TITLE>
 | 
					<TITLE>EekGtkKeyboard</TITLE>
 | 
				
			||||||
EekGtkKeyboard
 | 
					EekGtkKeyboard
 | 
				
			||||||
EekGtkKeyboardClass
 | 
					EekGtkKeyboardClass
 | 
				
			||||||
EekGtkKeyboardPrivate
 | 
					 | 
				
			||||||
eek_gtk_keyboard_new
 | 
					eek_gtk_keyboard_new
 | 
				
			||||||
 | 
					eek_gtk_keyboard_set_theme
 | 
				
			||||||
 | 
					EekGtkKeyboardPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_GTK_KEYBOARD
 | 
					EEK_GTK_KEYBOARD
 | 
				
			||||||
EEK_IS_GTK_KEYBOARD
 | 
					EEK_IS_GTK_KEYBOARD
 | 
				
			||||||
@ -63,12 +68,42 @@ EEK_IS_GTK_KEYBOARD_CLASS
 | 
				
			|||||||
EEK_GTK_KEYBOARD_GET_CLASS
 | 
					EEK_GTK_KEYBOARD_GET_CLASS
 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-theme-node</FILE>
 | 
				
			||||||
 | 
					EekSide
 | 
				
			||||||
 | 
					EekCorner
 | 
				
			||||||
 | 
					eek_theme_node_new
 | 
				
			||||||
 | 
					eek_theme_node_get_parent
 | 
				
			||||||
 | 
					eek_theme_node_get_theme
 | 
				
			||||||
 | 
					eek_theme_node_get_element_type
 | 
				
			||||||
 | 
					eek_theme_node_get_element_id
 | 
				
			||||||
 | 
					eek_theme_node_get_element_class
 | 
				
			||||||
 | 
					eek_theme_node_get_pseudo_class
 | 
				
			||||||
 | 
					eek_theme_node_get_color
 | 
				
			||||||
 | 
					eek_theme_node_get_background_color
 | 
				
			||||||
 | 
					eek_theme_node_get_foreground_color
 | 
				
			||||||
 | 
					eek_theme_node_get_background_gradient
 | 
				
			||||||
 | 
					eek_theme_node_get_border_width
 | 
				
			||||||
 | 
					eek_theme_node_get_border_radius
 | 
				
			||||||
 | 
					eek_theme_node_get_border_color
 | 
				
			||||||
 | 
					eek_theme_node_get_font
 | 
				
			||||||
 | 
					EekThemeNodePrivate
 | 
				
			||||||
 | 
					EekThemeNodeClass
 | 
				
			||||||
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
 | 
					EEK_THEME_NODE
 | 
				
			||||||
 | 
					EEK_IS_THEME_NODE
 | 
				
			||||||
 | 
					EEK_TYPE_THEME_NODE
 | 
				
			||||||
 | 
					eek_theme_node_get_type
 | 
				
			||||||
 | 
					EEK_THEME_NODE_CLASS
 | 
				
			||||||
 | 
					EEK_IS_THEME_NODE_CLASS
 | 
				
			||||||
 | 
					EEK_THEME_NODE_GET_CLASS
 | 
				
			||||||
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-section</FILE>
 | 
					<FILE>eek-section</FILE>
 | 
				
			||||||
<TITLE>EekSection</TITLE>
 | 
					<TITLE>EekSection</TITLE>
 | 
				
			||||||
EekSectionClass
 | 
					 | 
				
			||||||
EekSectionPrivate
 | 
					 | 
				
			||||||
EekSection
 | 
					EekSection
 | 
				
			||||||
 | 
					EekSectionClass
 | 
				
			||||||
eek_section_set_angle
 | 
					eek_section_set_angle
 | 
				
			||||||
eek_section_get_angle
 | 
					eek_section_get_angle
 | 
				
			||||||
eek_section_get_n_rows
 | 
					eek_section_get_n_rows
 | 
				
			||||||
@ -76,6 +111,7 @@ eek_section_add_row
 | 
				
			|||||||
eek_section_get_row
 | 
					eek_section_get_row
 | 
				
			||||||
eek_section_create_key
 | 
					eek_section_create_key
 | 
				
			||||||
eek_section_find_key_by_keycode
 | 
					eek_section_find_key_by_keycode
 | 
				
			||||||
 | 
					EekSectionPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_SECTION
 | 
					EEK_SECTION
 | 
				
			||||||
EEK_IS_SECTION
 | 
					EEK_IS_SECTION
 | 
				
			||||||
@ -86,17 +122,39 @@ EEK_IS_SECTION_CLASS
 | 
				
			|||||||
EEK_SECTION_GET_CLASS
 | 
					EEK_SECTION_GET_CLASS
 | 
				
			||||||
</SECTION>
 | 
					</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>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-container</FILE>
 | 
					<FILE>eek-container</FILE>
 | 
				
			||||||
<TITLE>EekContainer</TITLE>
 | 
					<TITLE>EekContainer</TITLE>
 | 
				
			||||||
EekContainerClass
 | 
					 | 
				
			||||||
EekContainerPrivate
 | 
					 | 
				
			||||||
EekCallback
 | 
					EekCallback
 | 
				
			||||||
EekCompareFunc
 | 
					EekCompareFunc
 | 
				
			||||||
EekContainer
 | 
					EekContainer
 | 
				
			||||||
 | 
					EekContainerClass
 | 
				
			||||||
eek_container_foreach_child
 | 
					eek_container_foreach_child
 | 
				
			||||||
eek_container_find
 | 
					eek_container_find
 | 
				
			||||||
eek_container_add_child
 | 
					eek_container_add_child
 | 
				
			||||||
 | 
					EekContainerPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_CONTAINER
 | 
					EEK_CONTAINER
 | 
				
			||||||
EEK_IS_CONTAINER
 | 
					EEK_IS_CONTAINER
 | 
				
			||||||
@ -107,13 +165,30 @@ EEK_IS_CONTAINER_CLASS
 | 
				
			|||||||
EEK_CONTAINER_GET_CLASS
 | 
					EEK_CONTAINER_GET_CLASS
 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-clutter-keyboard</FILE>
 | 
				
			||||||
 | 
					<TITLE>EekClutterKeyboard</TITLE>
 | 
				
			||||||
 | 
					EekClutterKeyboard
 | 
				
			||||||
 | 
					EekClutterKeyboardClass
 | 
				
			||||||
 | 
					eek_clutter_keyboard_new
 | 
				
			||||||
 | 
					eek_clutter_keyboard_set_theme
 | 
				
			||||||
 | 
					EekClutterKeyboardPrivate
 | 
				
			||||||
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
 | 
					EEK_CLUTTER_KEYBOARD
 | 
				
			||||||
 | 
					EEK_IS_CLUTTER_KEYBOARD
 | 
				
			||||||
 | 
					EEK_TYPE_CLUTTER_KEYBOARD
 | 
				
			||||||
 | 
					eek_clutter_keyboard_get_type
 | 
				
			||||||
 | 
					EEK_CLUTTER_KEYBOARD_CLASS
 | 
				
			||||||
 | 
					EEK_IS_CLUTTER_KEYBOARD_CLASS
 | 
				
			||||||
 | 
					EEK_CLUTTER_KEYBOARD_GET_CLASS
 | 
				
			||||||
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-symbol</FILE>
 | 
					<FILE>eek-symbol</FILE>
 | 
				
			||||||
<TITLE>EekSymbol</TITLE>
 | 
					<TITLE>EekSymbol</TITLE>
 | 
				
			||||||
EekSymbolCategory
 | 
					EekSymbolCategory
 | 
				
			||||||
EekSymbolClass
 | 
					 | 
				
			||||||
EekSymbolPrivate
 | 
					 | 
				
			||||||
EekSymbol
 | 
					EekSymbol
 | 
				
			||||||
 | 
					EekSymbolClass
 | 
				
			||||||
eek_symbol_new
 | 
					eek_symbol_new
 | 
				
			||||||
eek_symbol_set_name
 | 
					eek_symbol_set_name
 | 
				
			||||||
eek_symbol_get_name
 | 
					eek_symbol_get_name
 | 
				
			||||||
@ -126,6 +201,7 @@ eek_symbol_set_modifier_mask
 | 
				
			|||||||
eek_symbol_is_modifier
 | 
					eek_symbol_is_modifier
 | 
				
			||||||
eek_symbol_set_icon_name
 | 
					eek_symbol_set_icon_name
 | 
				
			||||||
eek_symbol_get_icon_name
 | 
					eek_symbol_get_icon_name
 | 
				
			||||||
 | 
					EekSymbolPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_SYMBOL
 | 
					EEK_SYMBOL
 | 
				
			||||||
EEK_IS_SYMBOL
 | 
					EEK_IS_SYMBOL
 | 
				
			||||||
@ -141,7 +217,6 @@ EEK_SYMBOL_GET_CLASS
 | 
				
			|||||||
<TITLE>EekXklLayout</TITLE>
 | 
					<TITLE>EekXklLayout</TITLE>
 | 
				
			||||||
EekXklLayout
 | 
					EekXklLayout
 | 
				
			||||||
EekXklLayoutClass
 | 
					EekXklLayoutClass
 | 
				
			||||||
EekXklLayoutPrivate
 | 
					 | 
				
			||||||
eek_xkl_layout_new
 | 
					eek_xkl_layout_new
 | 
				
			||||||
eek_xkl_layout_set_config
 | 
					eek_xkl_layout_set_config
 | 
				
			||||||
eek_xkl_layout_set_config_full
 | 
					eek_xkl_layout_set_config_full
 | 
				
			||||||
@ -156,6 +231,7 @@ eek_xkl_layout_get_layouts
 | 
				
			|||||||
eek_xkl_layout_get_variants
 | 
					eek_xkl_layout_get_variants
 | 
				
			||||||
eek_xkl_layout_get_options
 | 
					eek_xkl_layout_get_options
 | 
				
			||||||
eek_xkl_layout_get_option
 | 
					eek_xkl_layout_get_option
 | 
				
			||||||
 | 
					EekXklLayoutPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_XKL_LAYOUT
 | 
					EEK_XKL_LAYOUT
 | 
				
			||||||
EEK_IS_XKL_LAYOUT
 | 
					EEK_IS_XKL_LAYOUT
 | 
				
			||||||
@ -171,7 +247,6 @@ EEK_XKL_LAYOUT_GET_CLASS
 | 
				
			|||||||
<TITLE>EekXkbLayout</TITLE>
 | 
					<TITLE>EekXkbLayout</TITLE>
 | 
				
			||||||
EekXkbLayout
 | 
					EekXkbLayout
 | 
				
			||||||
EekXkbLayoutClass
 | 
					EekXkbLayoutClass
 | 
				
			||||||
EekXkbLayoutPrivate
 | 
					 | 
				
			||||||
eek_xkb_layout_new
 | 
					eek_xkb_layout_new
 | 
				
			||||||
eek_xkb_layout_set_names
 | 
					eek_xkb_layout_set_names
 | 
				
			||||||
eek_xkb_layout_set_names_full
 | 
					eek_xkb_layout_set_names_full
 | 
				
			||||||
@ -182,6 +257,7 @@ eek_xkb_layout_set_symbols
 | 
				
			|||||||
eek_xkb_layout_get_keycodes
 | 
					eek_xkb_layout_get_keycodes
 | 
				
			||||||
eek_xkb_layout_get_geometry
 | 
					eek_xkb_layout_get_geometry
 | 
				
			||||||
eek_xkb_layout_get_symbols
 | 
					eek_xkb_layout_get_symbols
 | 
				
			||||||
 | 
					EekXkbLayoutPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_XKB_LAYOUT
 | 
					EEK_XKB_LAYOUT
 | 
				
			||||||
EEK_IS_XKB_LAYOUT
 | 
					EEK_IS_XKB_LAYOUT
 | 
				
			||||||
@ -195,9 +271,8 @@ EEK_XKB_LAYOUT_GET_CLASS
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-key</FILE>
 | 
					<FILE>eek-key</FILE>
 | 
				
			||||||
<TITLE>EekKey</TITLE>
 | 
					<TITLE>EekKey</TITLE>
 | 
				
			||||||
EekKeyClass
 | 
					 | 
				
			||||||
EekKeyPrivate
 | 
					 | 
				
			||||||
EekKey
 | 
					EekKey
 | 
				
			||||||
 | 
					EekKeyClass
 | 
				
			||||||
eek_key_set_keycode
 | 
					eek_key_set_keycode
 | 
				
			||||||
eek_key_get_keycode
 | 
					eek_key_get_keycode
 | 
				
			||||||
eek_key_set_symbol_matrix
 | 
					eek_key_set_symbol_matrix
 | 
				
			||||||
@ -210,6 +285,7 @@ eek_key_get_index
 | 
				
			|||||||
eek_key_set_oref
 | 
					eek_key_set_oref
 | 
				
			||||||
eek_key_get_oref
 | 
					eek_key_get_oref
 | 
				
			||||||
eek_key_is_pressed
 | 
					eek_key_is_pressed
 | 
				
			||||||
 | 
					EekKeyPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_KEY
 | 
					EEK_KEY
 | 
				
			||||||
EEK_IS_KEY
 | 
					EEK_IS_KEY
 | 
				
			||||||
@ -223,7 +299,6 @@ EEK_KEY_GET_CLASS
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-serializable</FILE>
 | 
					<FILE>eek-serializable</FILE>
 | 
				
			||||||
<TITLE>EekSerializable</TITLE>
 | 
					<TITLE>EekSerializable</TITLE>
 | 
				
			||||||
EekSerializable
 | 
					 | 
				
			||||||
EekSerializableIface
 | 
					EekSerializableIface
 | 
				
			||||||
eek_serializable_serialize
 | 
					eek_serializable_serialize
 | 
				
			||||||
eek_serializable_deserialize
 | 
					eek_serializable_deserialize
 | 
				
			||||||
@ -238,9 +313,8 @@ EEK_SERIALIZABLE_GET_IFACE
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-element</FILE>
 | 
					<FILE>eek-element</FILE>
 | 
				
			||||||
<TITLE>EekElement</TITLE>
 | 
					<TITLE>EekElement</TITLE>
 | 
				
			||||||
EekElementClass
 | 
					 | 
				
			||||||
EekElementPrivate
 | 
					 | 
				
			||||||
EekElement
 | 
					EekElement
 | 
				
			||||||
 | 
					EekElementClass
 | 
				
			||||||
eek_element_set_parent
 | 
					eek_element_set_parent
 | 
				
			||||||
eek_element_get_parent
 | 
					eek_element_get_parent
 | 
				
			||||||
eek_element_set_name
 | 
					eek_element_set_name
 | 
				
			||||||
@ -256,6 +330,7 @@ eek_element_set_group
 | 
				
			|||||||
eek_element_set_level
 | 
					eek_element_set_level
 | 
				
			||||||
eek_element_get_group
 | 
					eek_element_get_group
 | 
				
			||||||
eek_element_get_level
 | 
					eek_element_get_level
 | 
				
			||||||
 | 
					EekElementPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_ELEMENT
 | 
					EEK_ELEMENT
 | 
				
			||||||
EEK_IS_ELEMENT
 | 
					EEK_IS_ELEMENT
 | 
				
			||||||
@ -271,10 +346,10 @@ EEK_ELEMENT_GET_CLASS
 | 
				
			|||||||
<TITLE>EekXmlLayout</TITLE>
 | 
					<TITLE>EekXmlLayout</TITLE>
 | 
				
			||||||
EekXmlLayout
 | 
					EekXmlLayout
 | 
				
			||||||
EekXmlLayoutClass
 | 
					EekXmlLayoutClass
 | 
				
			||||||
EekXmlLayoutPrivate
 | 
					 | 
				
			||||||
eek_xml_layout_new
 | 
					eek_xml_layout_new
 | 
				
			||||||
eek_xml_layout_set_source
 | 
					eek_xml_layout_set_source
 | 
				
			||||||
eek_xml_layout_get_source
 | 
					eek_xml_layout_get_source
 | 
				
			||||||
 | 
					EekXmlLayoutPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_XML_LAYOUT
 | 
					EEK_XML_LAYOUT
 | 
				
			||||||
EEK_IS_XML_LAYOUT
 | 
					EEK_IS_XML_LAYOUT
 | 
				
			||||||
@ -285,16 +360,33 @@ EEK_IS_XML_LAYOUT_CLASS
 | 
				
			|||||||
EEK_XML_LAYOUT_GET_CLASS
 | 
					EEK_XML_LAYOUT_GET_CLASS
 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-theme</FILE>
 | 
				
			||||||
 | 
					eek_theme_new
 | 
				
			||||||
 | 
					eek_theme_load_stylesheet
 | 
				
			||||||
 | 
					eek_theme_unload_stylesheet
 | 
				
			||||||
 | 
					EekThemeClass
 | 
				
			||||||
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
 | 
					EEK_THEME
 | 
				
			||||||
 | 
					EEK_IS_THEME
 | 
				
			||||||
 | 
					EEK_TYPE_THEME
 | 
				
			||||||
 | 
					eek_theme_get_type
 | 
				
			||||||
 | 
					EEK_THEME_CLASS
 | 
				
			||||||
 | 
					EEK_IS_THEME_CLASS
 | 
				
			||||||
 | 
					EEK_THEME_GET_CLASS
 | 
				
			||||||
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-keysym</FILE>
 | 
					<FILE>eek-keysym</FILE>
 | 
				
			||||||
<TITLE>EekKeysym</TITLE>
 | 
					<TITLE>EekKeysym</TITLE>
 | 
				
			||||||
EEK_KEYSYM
 | 
					EEK_KEYSYM
 | 
				
			||||||
EekKeysymClass
 | 
					 | 
				
			||||||
EekKeysymPrivate
 | 
					 | 
				
			||||||
EekKeysym
 | 
					EekKeysym
 | 
				
			||||||
 | 
					EekKeysymClass
 | 
				
			||||||
eek_keysym_new
 | 
					eek_keysym_new
 | 
				
			||||||
eek_keysym_get_xkeysym
 | 
					eek_keysym_get_xkeysym
 | 
				
			||||||
eek_keysym_new_from_name
 | 
					eek_keysym_new_from_name
 | 
				
			||||||
 | 
					eek_keysym_new_with_modifier
 | 
				
			||||||
 | 
					EekKeysymPrivate
 | 
				
			||||||
<SUBSECTION Standard>
 | 
					<SUBSECTION Standard>
 | 
				
			||||||
EEK_INVALID_KEYSYM
 | 
					EEK_INVALID_KEYSYM
 | 
				
			||||||
EEK_IS_KEYSYM
 | 
					EEK_IS_KEYSYM
 | 
				
			||||||
@ -314,7 +406,6 @@ eek_keyboard_output
 | 
				
			|||||||
<SECTION>
 | 
					<SECTION>
 | 
				
			||||||
<FILE>eek-types</FILE>
 | 
					<FILE>eek-types</FILE>
 | 
				
			||||||
I_
 | 
					I_
 | 
				
			||||||
EEK_TYPE_SYMBOL_MATRIX
 | 
					 | 
				
			||||||
EEK_TYPE_POINT
 | 
					EEK_TYPE_POINT
 | 
				
			||||||
EEK_TYPE_BOUNDS
 | 
					EEK_TYPE_BOUNDS
 | 
				
			||||||
EEK_TYPE_OUTLINE
 | 
					EEK_TYPE_OUTLINE
 | 
				
			||||||
@ -323,23 +414,40 @@ EekOrientation
 | 
				
			|||||||
EekModifierBehavior
 | 
					EekModifierBehavior
 | 
				
			||||||
EekModifierType
 | 
					EekModifierType
 | 
				
			||||||
EEK_INVALID_KEYCODE
 | 
					EEK_INVALID_KEYCODE
 | 
				
			||||||
EekSymbolMatrix
 | 
					 | 
				
			||||||
EekPoint
 | 
					EekPoint
 | 
				
			||||||
 | 
					eek_point_get_type
 | 
				
			||||||
 | 
					eek_point_copy
 | 
				
			||||||
 | 
					eek_point_free
 | 
				
			||||||
 | 
					eek_point_rotate
 | 
				
			||||||
EekBounds
 | 
					EekBounds
 | 
				
			||||||
 | 
					eek_bounds_get_type
 | 
				
			||||||
 | 
					eek_bounds_copy
 | 
				
			||||||
 | 
					eek_bounds_free
 | 
				
			||||||
 | 
					eek_bounds_long_side
 | 
				
			||||||
EekOutline
 | 
					EekOutline
 | 
				
			||||||
 | 
					eek_outline_get_type
 | 
				
			||||||
 | 
					eek_outline_copy
 | 
				
			||||||
 | 
					eek_outline_free
 | 
				
			||||||
EekColor
 | 
					EekColor
 | 
				
			||||||
 | 
					eek_color_get_type
 | 
				
			||||||
 | 
					eek_color_new
 | 
				
			||||||
 | 
					eek_color_copy
 | 
				
			||||||
 | 
					eek_color_free
 | 
				
			||||||
 | 
					EekGradientType
 | 
				
			||||||
 | 
					EekThemeNode
 | 
				
			||||||
 | 
					EekThemeContext
 | 
				
			||||||
 | 
					EekTheme
 | 
				
			||||||
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<SECTION>
 | 
				
			||||||
 | 
					<FILE>eek-symbol-matrix</FILE>
 | 
				
			||||||
 | 
					EekSymbolMatrix
 | 
				
			||||||
 | 
					EEK_TYPE_SYMBOL_MATRIX
 | 
				
			||||||
eek_symbol_matrix_get_type
 | 
					eek_symbol_matrix_get_type
 | 
				
			||||||
eek_symbol_matrix_new
 | 
					eek_symbol_matrix_new
 | 
				
			||||||
eek_symbol_matrix_copy
 | 
					eek_symbol_matrix_copy
 | 
				
			||||||
eek_symbol_matrix_free
 | 
					eek_symbol_matrix_free
 | 
				
			||||||
eek_point_get_type
 | 
					eek_symbol_matrix_set_symbol
 | 
				
			||||||
eek_point_rotate
 | 
					eek_symbol_matrix_get_symbol
 | 
				
			||||||
eek_bounds_get_type
 | 
					 | 
				
			||||||
eek_bounds_long_side
 | 
					 | 
				
			||||||
eek_outline_get_type
 | 
					 | 
				
			||||||
eek_outline_copy
 | 
					 | 
				
			||||||
eek_outline_free
 | 
					 | 
				
			||||||
eek_color_get_type
 | 
					 | 
				
			||||||
eek_color_new
 | 
					 | 
				
			||||||
</SECTION>
 | 
					</SECTION>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -88,10 +88,12 @@ libeek_marshalers_sources =			\
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
BUILT_SOURCES =					\
 | 
					BUILT_SOURCES =					\
 | 
				
			||||||
	$(libeek_keysym_sources)		\
 | 
						$(libeek_keysym_sources)		\
 | 
				
			||||||
 | 
						$(libeek_enumtypes_sources)		\
 | 
				
			||||||
	$(libeek_marshalers_sources)
 | 
						$(libeek_marshalers_sources)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_la_SOURCES =				\
 | 
					libeek_la_SOURCES =				\
 | 
				
			||||||
	$(libeek_sources)			\
 | 
						$(libeek_sources)			\
 | 
				
			||||||
 | 
						$(srcdir)/eek-enumtypes.c		\
 | 
				
			||||||
	$(srcdir)/eek-marshalers.c
 | 
						$(srcdir)/eek-marshalers.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
libeek_la_CFLAGS = $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) $(LIBCROCO_CFLAGS)
 | 
					libeek_la_CFLAGS = $(GIO2_CFLAGS) $(PANGOCAIRO_CFLAGS) $(LIBCROCO_CFLAGS)
 | 
				
			||||||
@ -156,6 +158,7 @@ libeek_xkl_la_LIBADD = libeek-xkb.la $(LIBXKLAVIER_LIBS) $(GTK_LIBS)
 | 
				
			|||||||
eekdir = $(includedir)/eek-$(EEK_API_VERSION)/eek
 | 
					eekdir = $(includedir)/eek-$(EEK_API_VERSION)/eek
 | 
				
			||||||
eek_HEADERS =					\
 | 
					eek_HEADERS =					\
 | 
				
			||||||
	$(libeek_public_headers)		\
 | 
						$(libeek_public_headers)		\
 | 
				
			||||||
 | 
						$(srcdir)/eek-enumtypes.h		\
 | 
				
			||||||
	$(libeek_clutter_public_headers)	\
 | 
						$(libeek_clutter_public_headers)	\
 | 
				
			||||||
	$(libeek_gtk_public_headers)		\
 | 
						$(libeek_gtk_public_headers)		\
 | 
				
			||||||
	$(libeek_xkb_public_headers)		\
 | 
						$(libeek_xkb_public_headers)		\
 | 
				
			||||||
@ -175,6 +178,16 @@ eek-unicode-keysym-entries.h: unicode-keysym-entries.txt
 | 
				
			|||||||
eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt
 | 
					eek-xkeysym-keysym-entries.h: xkeysym-keysym-entries.txt
 | 
				
			||||||
	$(PYTHON) ./gen-keysym-entries.py xkeysym_keysym_entries < $< > $@
 | 
						$(PYTHON) ./gen-keysym-entries.py xkeysym_keysym_entries < $< > $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eek-enumtypes.h: $(libeek_public_headers) eek-enumtypes.h.template
 | 
				
			||||||
 | 
						$(AM_V_GEN) $(GLIB_MKENUMS) --template eek-enumtypes.h.template \
 | 
				
			||||||
 | 
							$(libeek_public_headers) > eek-enumtypes.h.tmp && \
 | 
				
			||||||
 | 
							mv eek-enumtypes.h.tmp eek-enumtypes.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eek-enumtypes.c: $(libeek_public_headers) eek-enumtypes.c.template
 | 
				
			||||||
 | 
						$(AM_V_GEN) $(GLIB_MKENUMS) --template eek-enumtypes.c.template \
 | 
				
			||||||
 | 
							$(libeek_public_headers) > eek-enumtypes.c.tmp && \
 | 
				
			||||||
 | 
							mv eek-enumtypes.c.tmp eek-enumtypes.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# gen marshal
 | 
					# gen marshal
 | 
				
			||||||
eek-marshalers.h: eek-marshalers.list
 | 
					eek-marshalers.h: eek-marshalers.list
 | 
				
			||||||
	$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --header --internal > $@.tmp && \
 | 
						$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshalers.list --header --internal > $@.tmp && \
 | 
				
			||||||
@ -207,6 +220,8 @@ EXTRA_DIST =					\
 | 
				
			|||||||
	special-keysym-entries.txt		\
 | 
						special-keysym-entries.txt		\
 | 
				
			||||||
	unicode-keysym-entries.txt		\
 | 
						unicode-keysym-entries.txt		\
 | 
				
			||||||
	xkeysym-keysym-entries.txt		\
 | 
						xkeysym-keysym-entries.txt		\
 | 
				
			||||||
 | 
						eek-enumtypes.h.template		\
 | 
				
			||||||
 | 
						eek-enumtypes.c.template		\
 | 
				
			||||||
	eek-marshalers.list
 | 
						eek-marshalers.list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-include $(INTROSPECTION_MAKEFILE)
 | 
					-include $(INTROSPECTION_MAKEFILE)
 | 
				
			||||||
@ -221,7 +236,7 @@ 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 Gio-2.0
 | 
					Eek@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0
 | 
				
			||||||
Eek@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_la_CFLAGS)
 | 
					Eek@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_la_CFLAGS)
 | 
				
			||||||
Eek@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek.la
 | 
					Eek@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek.la
 | 
				
			||||||
Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_sources) $(libeek_public_headers)
 | 
					Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_sources) $(libeek_public_headers) $(srcdir)/eek-enumtypes.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EekGtk@EEK_LIBRARY_SUFFIX@.gir: libeek-gtk.la Eek@EEK_LIBRARY_SUFFIX@.gir
 | 
					EekGtk@EEK_LIBRARY_SUFFIX@.gir: libeek-gtk.la Eek@EEK_LIBRARY_SUFFIX@.gir
 | 
				
			||||||
EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Gtk-@GTK_API_VERSION@ Eek@EEK_LIBRARY_SUFFIX@
 | 
					EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Gtk-@GTK_API_VERSION@ Eek@EEK_LIBRARY_SUFFIX@
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										36
									
								
								eek/eek-enumtypes.c.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								eek/eek-enumtypes.c.template
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					/*** BEGIN file-header ***/
 | 
				
			||||||
 | 
					#include "eek.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** END file-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN file-production ***/
 | 
				
			||||||
 | 
					/* enumerations from "@filename@" */
 | 
				
			||||||
 | 
					/*** END file-production ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN value-header ***/
 | 
				
			||||||
 | 
					GType
 | 
				
			||||||
 | 
					@enum_name@_get_type (void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  static volatile gsize g_define_type_id__volatile = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (g_once_init_enter (&g_define_type_id__volatile))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      static const G@Type@Value values[] = {
 | 
				
			||||||
 | 
					/*** END value-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN value-production ***/
 | 
				
			||||||
 | 
					        { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
 | 
				
			||||||
 | 
					/*** END value-production ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN value-tail ***/
 | 
				
			||||||
 | 
					        { 0, NULL, NULL }
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      GType g_define_type_id =
 | 
				
			||||||
 | 
					        g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
 | 
				
			||||||
 | 
					      g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return g_define_type_id__volatile;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** END value-tail ***/
 | 
				
			||||||
							
								
								
									
										24
									
								
								eek/eek-enumtypes.h.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								eek/eek-enumtypes.h.template
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					/*** BEGIN file-header ***/
 | 
				
			||||||
 | 
					#ifndef __EEK_ENUMTYPES_H__
 | 
				
			||||||
 | 
					#define __EEK_ENUMTYPES_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <glib-object.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					/*** END file-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN file-production ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* enumerations from "@filename@" */
 | 
				
			||||||
 | 
					/*** END file-production ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN value-header ***/
 | 
				
			||||||
 | 
					GType @enum_name@_get_type (void) G_GNUC_CONST;
 | 
				
			||||||
 | 
					#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
 | 
				
			||||||
 | 
					/*** END value-header ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*** BEGIN file-tail ***/
 | 
				
			||||||
 | 
					G_END_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __EEK_ENUMTYPES_H__ */
 | 
				
			||||||
 | 
					/*** END file-tail ***/
 | 
				
			||||||
@ -557,9 +557,9 @@ eek_key_get_symbol_matrix (EekKey *key)
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_key_get_symbol:
 | 
					 * eek_key_get_symbol:
 | 
				
			||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 * @returns: (transfer none): the current #EekSymbol or %NULL on failure
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the current symbol of @key.
 | 
					 * Get the current symbol of @key.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): the current #EekSymbol or %NULL on failure
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbol *
 | 
					EekSymbol *
 | 
				
			||||||
eek_key_get_symbol (EekKey *key)
 | 
					eek_key_get_symbol (EekKey *key)
 | 
				
			||||||
@ -572,9 +572,9 @@ eek_key_get_symbol (EekKey *key)
 | 
				
			|||||||
 * @key: an #EekKey
 | 
					 * @key: an #EekKey
 | 
				
			||||||
 * @fallback_group: fallback group index
 | 
					 * @fallback_group: fallback group index
 | 
				
			||||||
 * @fallback_level: fallback level index
 | 
					 * @fallback_level: fallback level index
 | 
				
			||||||
 * @returns: (transfer none): the current #EekSymbol or %NULL on failure
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the current symbol of @key.
 | 
					 * Get the current symbol of @key.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): the current #EekSymbol or %NULL on failure
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbol *
 | 
					EekSymbol *
 | 
				
			||||||
eek_key_get_symbol_with_fallback (EekKey *key,
 | 
					eek_key_get_symbol_with_fallback (EekKey *key,
 | 
				
			||||||
@ -628,9 +628,9 @@ eek_key_get_symbol_with_fallback (EekKey *key,
 | 
				
			|||||||
 * @level: level index of the symbol matrix
 | 
					 * @level: level index of the symbol matrix
 | 
				
			||||||
 * @fallback_group: fallback group index
 | 
					 * @fallback_group: fallback group index
 | 
				
			||||||
 * @fallback_level: fallback level index
 | 
					 * @fallback_level: fallback level index
 | 
				
			||||||
 * @returns: (transfer none): an #EekSymbol at (@group, @level), or %NULL
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get the symbol at (@group, @level) in the symbol matrix of @key.
 | 
					 * Get the symbol at (@group, @level) in the symbol matrix of @key.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): an #EekSymbol at (@group, @level), or %NULL
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekSymbol *
 | 
					EekSymbol *
 | 
				
			||||||
eek_key_get_symbol_at_index (EekKey *key,
 | 
					eek_key_get_symbol_at_index (EekKey *key,
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,7 @@
 | 
				
			|||||||
#include "eek-key.h"
 | 
					#include "eek-key.h"
 | 
				
			||||||
#include "eek-symbol.h"
 | 
					#include "eek-symbol.h"
 | 
				
			||||||
#include "eek-serializable.h"
 | 
					#include "eek-serializable.h"
 | 
				
			||||||
 | 
					#include "eek-enumtypes.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
@ -274,7 +275,7 @@ eek_keyboard_set_property (GObject      *object,
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_MODIFIER_BEHAVIOR:
 | 
					    case PROP_MODIFIER_BEHAVIOR:
 | 
				
			||||||
        eek_keyboard_set_modifier_behavior (EEK_KEYBOARD(object),
 | 
					        eek_keyboard_set_modifier_behavior (EEK_KEYBOARD(object),
 | 
				
			||||||
                                            g_value_get_int (value));
 | 
					                                            g_value_get_enum (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_set_property (object,
 | 
					        g_object_set_property (object,
 | 
				
			||||||
@ -297,8 +298,8 @@ eek_keyboard_get_property (GObject    *object,
 | 
				
			|||||||
        g_value_set_object (value, priv->layout);
 | 
					        g_value_set_object (value, priv->layout);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_MODIFIER_BEHAVIOR:
 | 
					    case PROP_MODIFIER_BEHAVIOR:
 | 
				
			||||||
        g_value_set_int (value,
 | 
					        g_value_set_enum (value,
 | 
				
			||||||
                         eek_keyboard_get_modifier_behavior (EEK_KEYBOARD(object)));
 | 
					                          eek_keyboard_get_modifier_behavior (EEK_KEYBOARD(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        g_object_get_property (object,
 | 
					        g_object_get_property (object,
 | 
				
			||||||
@ -465,11 +466,12 @@ eek_keyboard_class_init (EekKeyboardClass *klass)
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * The modifier handling mode of #EekKeyboard.
 | 
					     * The modifier handling mode of #EekKeyboard.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    pspec = g_param_spec_int ("modifier-behavior",
 | 
					    pspec = g_param_spec_enum ("modifier-behavior",
 | 
				
			||||||
                              "Modifier behavior",
 | 
					                               "Modifier behavior",
 | 
				
			||||||
                              "Modifier handling mode of the keyboard",
 | 
					                               "Modifier handling mode of the keyboard",
 | 
				
			||||||
                              0, G_MAXINT, EEK_MODIFIER_BEHAVIOR_NONE,
 | 
					                               EEK_TYPE_MODIFIER_BEHAVIOR,
 | 
				
			||||||
                              G_PARAM_READWRITE);
 | 
					                               EEK_MODIFIER_BEHAVIOR_NONE,
 | 
				
			||||||
 | 
					                               G_PARAM_READWRITE);
 | 
				
			||||||
    g_object_class_install_property (gobject_class,
 | 
					    g_object_class_install_property (gobject_class,
 | 
				
			||||||
                                     PROP_MODIFIER_BEHAVIOR,
 | 
					                                     PROP_MODIFIER_BEHAVIOR,
 | 
				
			||||||
                                     pspec);
 | 
					                                     pspec);
 | 
				
			||||||
@ -658,9 +660,9 @@ eek_keyboard_create_section (EekKeyboard *keyboard)
 | 
				
			|||||||
 * eek_keyboard_find_key_by_keycode:
 | 
					 * eek_keyboard_find_key_by_keycode:
 | 
				
			||||||
 * @keyboard: an #EekKeyboard
 | 
					 * @keyboard: an #EekKeyboard
 | 
				
			||||||
 * @keycode: a keycode
 | 
					 * @keycode: a keycode
 | 
				
			||||||
 * @returns: (transfer none): #EekKey whose keycode is @keycode
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Find an #EekKey whose keycode is @keycode.
 | 
					 * Find an #EekKey whose keycode is @keycode.
 | 
				
			||||||
 | 
					 * Return value: (transfer none): #EekKey whose keycode is @keycode
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekKey *
 | 
					EekKey *
 | 
				
			||||||
eek_keyboard_find_key_by_keycode (EekKeyboard *keyboard,
 | 
					eek_keyboard_find_key_by_keycode (EekKeyboard *keyboard,
 | 
				
			||||||
 | 
				
			|||||||
@ -104,6 +104,7 @@ void                eek_keyboard_set_size
 | 
				
			|||||||
                                     (EekKeyboard        *keyboard,
 | 
					                                     (EekKeyboard        *keyboard,
 | 
				
			||||||
                                      gdouble             width,
 | 
					                                      gdouble             width,
 | 
				
			||||||
                                      gdouble             height);
 | 
					                                      gdouble             height);
 | 
				
			||||||
 | 
					#ifndef EEK_DISABLE_DEPRECATED
 | 
				
			||||||
void                eek_keyboard_set_symbol_index
 | 
					void                eek_keyboard_set_symbol_index
 | 
				
			||||||
                                     (EekKeyboard        *keyboard,
 | 
					                                     (EekKeyboard        *keyboard,
 | 
				
			||||||
                                      gint                group,
 | 
					                                      gint                group,
 | 
				
			||||||
@ -112,7 +113,6 @@ void                eek_keyboard_get_symbol_index
 | 
				
			|||||||
                                     (EekKeyboard        *keyboard,
 | 
					                                     (EekKeyboard        *keyboard,
 | 
				
			||||||
                                      gint               *group,
 | 
					                                      gint               *group,
 | 
				
			||||||
                                      gint               *level);
 | 
					                                      gint               *level);
 | 
				
			||||||
 | 
					 | 
				
			||||||
void                eek_keyboard_set_group
 | 
					void                eek_keyboard_set_group
 | 
				
			||||||
                                     (EekKeyboard        *keyboard,
 | 
					                                     (EekKeyboard        *keyboard,
 | 
				
			||||||
                                      gint                group);
 | 
					                                      gint                group);
 | 
				
			||||||
@ -123,6 +123,7 @@ gint                eek_keyboard_get_group
 | 
				
			|||||||
                                     (EekKeyboard        *keyboard);
 | 
					                                     (EekKeyboard        *keyboard);
 | 
				
			||||||
gint                eek_keyboard_get_level
 | 
					gint                eek_keyboard_get_level
 | 
				
			||||||
                                     (EekKeyboard        *keyboard);
 | 
					                                     (EekKeyboard        *keyboard);
 | 
				
			||||||
 | 
					#endif  /* EEK_DISABLE_DEPRECATED */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void                eek_keyboard_set_modifier_behavior
 | 
					void                eek_keyboard_set_modifier_behavior
 | 
				
			||||||
                                     (EekKeyboard        *keyboard,
 | 
					                                     (EekKeyboard        *keyboard,
 | 
				
			||||||
 | 
				
			|||||||
@ -223,7 +223,8 @@ eek_keysym_init (EekKeysym *self)
 | 
				
			|||||||
 * modifier @modifier_mask.
 | 
					 * modifier @modifier_mask.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekKeysym *
 | 
					EekKeysym *
 | 
				
			||||||
eek_keysym_new_with_modifier (guint xkeysym, EekModifierType modifier_mask)
 | 
					eek_keysym_new_with_modifier (guint           xkeysym,
 | 
				
			||||||
 | 
					                              EekModifierType modifier_mask)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKeysym *keysym;
 | 
					    EekKeysym *keysym;
 | 
				
			||||||
    EekKeysymPrivate *priv;
 | 
					    EekKeysymPrivate *priv;
 | 
				
			||||||
 | 
				
			|||||||
@ -482,7 +482,6 @@ render_key (EekRenderer *self,
 | 
				
			|||||||
        PangoLayout *layout;
 | 
					        PangoLayout *layout;
 | 
				
			||||||
        PangoRectangle extents = { 0, };
 | 
					        PangoRectangle extents = { 0, };
 | 
				
			||||||
        EekColor foreground;
 | 
					        EekColor foreground;
 | 
				
			||||||
        EekThemeNode *theme_node;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        layout = pango_cairo_create_layout (cr);
 | 
					        layout = pango_cairo_create_layout (cr);
 | 
				
			||||||
        eek_renderer_render_key_label (self, layout, key);
 | 
					        eek_renderer_render_key_label (self, layout, key);
 | 
				
			||||||
@ -494,11 +493,6 @@ render_key (EekRenderer *self,
 | 
				
			|||||||
             (bounds.width * priv->scale - extents.width / PANGO_SCALE) / 2,
 | 
					             (bounds.width * priv->scale - extents.width / PANGO_SCALE) / 2,
 | 
				
			||||||
             (bounds.height * priv->scale - extents.height / PANGO_SCALE) / 2);
 | 
					             (bounds.height * priv->scale - extents.height / PANGO_SCALE) / 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (eek_key_is_pressed (key))
 | 
					 | 
				
			||||||
            theme_node = g_object_get_data (G_OBJECT(key), "theme-node-pressed");
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
            theme_node = g_object_get_data (G_OBJECT(key), "theme-node");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        eek_renderer_get_foreground_color (self, EEK_ELEMENT(key), &foreground);
 | 
					        eek_renderer_get_foreground_color (self, EEK_ELEMENT(key), &foreground);
 | 
				
			||||||
        cairo_set_source_rgba (cr,
 | 
					        cairo_set_source_rgba (cr,
 | 
				
			||||||
                               foreground.red,
 | 
					                               foreground.red,
 | 
				
			||||||
@ -570,7 +564,7 @@ eek_renderer_real_render_key_label (EekRenderer *self,
 | 
				
			|||||||
    EekBounds bounds;
 | 
					    EekBounds bounds;
 | 
				
			||||||
    const TextProperty *prop;
 | 
					    const TextProperty *prop;
 | 
				
			||||||
    PangoFontDescription *font;
 | 
					    PangoFontDescription *font;
 | 
				
			||||||
    gdouble size, scale;
 | 
					    gdouble scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
					    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
				
			||||||
    if (!symbol)
 | 
					    if (!symbol)
 | 
				
			||||||
@ -1141,7 +1135,6 @@ eek_renderer_get_background_gradient (EekRenderer     *renderer,
 | 
				
			|||||||
                                      EekColor        *start,
 | 
					                                      EekColor        *start,
 | 
				
			||||||
                                      EekColor        *end)
 | 
					                                      EekColor        *end)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekRendererPrivate *priv;
 | 
					 | 
				
			||||||
    EekThemeNode *theme_node;
 | 
					    EekThemeNode *theme_node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_return_if_fail (EEK_IS_RENDERER(renderer));
 | 
					    g_return_if_fail (EEK_IS_RENDERER(renderer));
 | 
				
			||||||
@ -1150,8 +1143,6 @@ eek_renderer_get_background_gradient (EekRenderer     *renderer,
 | 
				
			|||||||
    g_return_if_fail (start);
 | 
					    g_return_if_fail (start);
 | 
				
			||||||
    g_return_if_fail (end);
 | 
					    g_return_if_fail (end);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    priv = EEK_RENDERER_GET_PRIVATE(renderer);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    theme_node = g_object_get_data (G_OBJECT(element), "theme-node");
 | 
					    theme_node = g_object_get_data (G_OBJECT(element), "theme-node");
 | 
				
			||||||
    if (theme_node)
 | 
					    if (theme_node)
 | 
				
			||||||
        eek_theme_node_get_background_gradient (theme_node, type, start, end);
 | 
					        eek_theme_node_get_background_gradient (theme_node, type, start, end);
 | 
				
			||||||
@ -1234,11 +1225,8 @@ find_key_by_position_section_callback (EekElement *element,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    FindKeyByPositionCallbackData *data = user_data;
 | 
					    FindKeyByPositionCallbackData *data = user_data;
 | 
				
			||||||
    EekBounds bounds;
 | 
					    EekBounds bounds;
 | 
				
			||||||
    EekRendererPrivate *priv;
 | 
					 | 
				
			||||||
    EekPoint origin;
 | 
					    EekPoint origin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    priv = EEK_RENDERER_GET_PRIVATE(data->renderer);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    origin = data->origin;
 | 
					    origin = data->origin;
 | 
				
			||||||
    eek_element_get_bounds (element, &bounds);
 | 
					    eek_element_get_bounds (element, &bounds);
 | 
				
			||||||
    data->origin.x += bounds.x;
 | 
					    data->origin.x += bounds.x;
 | 
				
			||||||
 | 
				
			|||||||
@ -54,6 +54,8 @@ struct _EekSection
 | 
				
			|||||||
 * @create_key: virtual function for creating key in the section
 | 
					 * @create_key: virtual function for creating key in the section
 | 
				
			||||||
 * @find_key_by_keycode: virtual function for accessing a key in the
 | 
					 * @find_key_by_keycode: virtual function for accessing a key in the
 | 
				
			||||||
 * section by keycode
 | 
					 * section by keycode
 | 
				
			||||||
 | 
					 * @key_pressed: class handler for #EekSection::key-pressed signal
 | 
				
			||||||
 | 
					 * @key_released: class handler for #EekSection::key-released signal
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
struct _EekSectionClass
 | 
					struct _EekSectionClass
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,7 @@ struct _EekSymbolMatrix
 | 
				
			|||||||
    EekSymbol **data;
 | 
					    EekSymbol **data;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define EEK_TYPE_SYMBOL_MATRIX (eek_symbol_matrix_get_type ())
 | 
				
			||||||
GType            eek_symbol_matrix_get_type (void) G_GNUC_CONST;
 | 
					GType            eek_symbol_matrix_get_type (void) G_GNUC_CONST;
 | 
				
			||||||
EekSymbolMatrix *eek_symbol_matrix_new      (gint                   num_groups,
 | 
					EekSymbolMatrix *eek_symbol_matrix_new      (gint                   num_groups,
 | 
				
			||||||
                                             gint                   num_levels);
 | 
					                                             gint                   num_levels);
 | 
				
			||||||
 | 
				
			|||||||
@ -31,6 +31,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "eek-symbol.h"
 | 
					#include "eek-symbol.h"
 | 
				
			||||||
#include "eek-serializable.h"
 | 
					#include "eek-serializable.h"
 | 
				
			||||||
 | 
					#include "eek-enumtypes.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
@ -110,11 +111,11 @@ eek_symbol_set_property (GObject      *object,
 | 
				
			|||||||
        eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value));
 | 
					        eek_symbol_set_label (EEK_SYMBOL(object), g_value_get_string (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_CATEGORY:
 | 
					    case PROP_CATEGORY:
 | 
				
			||||||
        eek_symbol_set_category (EEK_SYMBOL(object), g_value_get_uint (value));
 | 
					        eek_symbol_set_category (EEK_SYMBOL(object), g_value_get_enum (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_MODIFIER_MASK:
 | 
					    case PROP_MODIFIER_MASK:
 | 
				
			||||||
        eek_symbol_set_modifier_mask (EEK_SYMBOL(object),
 | 
					        eek_symbol_set_modifier_mask (EEK_SYMBOL(object),
 | 
				
			||||||
                                      g_value_get_uint (value));
 | 
					                                      g_value_get_flags (value));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_ICON_NAME:
 | 
					    case PROP_ICON_NAME:
 | 
				
			||||||
        eek_symbol_set_icon_name (EEK_SYMBOL(object),
 | 
					        eek_symbol_set_icon_name (EEK_SYMBOL(object),
 | 
				
			||||||
@ -142,11 +143,11 @@ eek_symbol_get_property (GObject    *object,
 | 
				
			|||||||
        g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object)));
 | 
					        g_value_set_string (value, eek_symbol_get_label (EEK_SYMBOL(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_CATEGORY:
 | 
					    case PROP_CATEGORY:
 | 
				
			||||||
        g_value_set_uint (value, eek_symbol_get_category (EEK_SYMBOL(object)));
 | 
					        g_value_set_enum (value, eek_symbol_get_category (EEK_SYMBOL(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_MODIFIER_MASK:
 | 
					    case PROP_MODIFIER_MASK:
 | 
				
			||||||
        g_value_set_uint (value,
 | 
					        g_value_set_flags (value,
 | 
				
			||||||
                          eek_symbol_get_modifier_mask (EEK_SYMBOL(object)));
 | 
					                           eek_symbol_get_modifier_mask (EEK_SYMBOL(object)));
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case PROP_ICON_NAME:
 | 
					    case PROP_ICON_NAME:
 | 
				
			||||||
        g_value_set_string (value,
 | 
					        g_value_set_string (value,
 | 
				
			||||||
@ -197,18 +198,20 @@ eek_symbol_class_init (EekSymbolClass *klass)
 | 
				
			|||||||
                                 G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
					                                 G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
				
			||||||
    g_object_class_install_property (gobject_class, PROP_LABEL, pspec);
 | 
					    g_object_class_install_property (gobject_class, PROP_LABEL, pspec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pspec = g_param_spec_uint ("category",
 | 
					    pspec = g_param_spec_enum ("category",
 | 
				
			||||||
                               "Category",
 | 
					                               "Category",
 | 
				
			||||||
                               "Category of the symbol",
 | 
					                               "Category of the symbol",
 | 
				
			||||||
                               0, G_MAXUINT, 0,
 | 
					                               EEK_TYPE_SYMBOL_CATEGORY,
 | 
				
			||||||
 | 
					                               EEK_SYMBOL_CATEGORY_UNKNOWN,
 | 
				
			||||||
                               G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
					                               G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
				
			||||||
    g_object_class_install_property (gobject_class, PROP_CATEGORY, pspec);
 | 
					    g_object_class_install_property (gobject_class, PROP_CATEGORY, pspec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pspec = g_param_spec_uint ("modifier-mask",
 | 
					    pspec = g_param_spec_flags ("modifier-mask",
 | 
				
			||||||
                               "Modifier mask",
 | 
					                                "Modifier mask",
 | 
				
			||||||
                               "Modifier mask of the symbol",
 | 
					                                "Modifier mask of the symbol",
 | 
				
			||||||
                               0, G_MAXUINT, 0,
 | 
					                                EEK_TYPE_MODIFIER_TYPE,
 | 
				
			||||||
                               G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
					                                0,
 | 
				
			||||||
 | 
					                                G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
 | 
				
			||||||
    g_object_class_install_property (gobject_class, PROP_MODIFIER_MASK, pspec);
 | 
					    g_object_class_install_property (gobject_class, PROP_MODIFIER_MASK, pspec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pspec = g_param_spec_string ("icon-name",
 | 
					    pspec = g_param_spec_string ("icon-name",
 | 
				
			||||||
@ -361,8 +364,9 @@ eek_symbol_get_category (EekSymbol *symbol)
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_symbol_set_modifier_mask:
 | 
					 * eek_symbol_set_modifier_mask:
 | 
				
			||||||
 * @symbol: an #EekSymbol
 | 
					 * @symbol: an #EekSymbol
 | 
				
			||||||
 | 
					 * @mask: an #EekModifierType
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Set modifier mask @symbol can trigger.
 | 
					 * Set modifier mask that @symbol can trigger.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
eek_symbol_set_modifier_mask (EekSymbol      *symbol,
 | 
					eek_symbol_set_modifier_mask (EekSymbol      *symbol,
 | 
				
			||||||
@ -380,7 +384,7 @@ eek_symbol_set_modifier_mask (EekSymbol      *symbol,
 | 
				
			|||||||
 * eek_symbol_get_modifier_mask:
 | 
					 * eek_symbol_get_modifier_mask:
 | 
				
			||||||
 * @symbol: an #EekSymbol
 | 
					 * @symbol: an #EekSymbol
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Get modifier mask @symbol can trigger.
 | 
					 * Get modifier mask that @symbol can trigger.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
EekModifierType
 | 
					EekModifierType
 | 
				
			||||||
eek_symbol_get_modifier_mask (EekSymbol *symbol)
 | 
					eek_symbol_get_modifier_mask (EekSymbol *symbol)
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,7 @@ G_BEGIN_DECLS
 | 
				
			|||||||
 * @EEK_SYMBOL_CATEGORY_USER3: reserved for future use
 | 
					 * @EEK_SYMBOL_CATEGORY_USER3: reserved for future use
 | 
				
			||||||
 * @EEK_SYMBOL_CATEGORY_USER4: reserved for future use
 | 
					 * @EEK_SYMBOL_CATEGORY_USER4: reserved for future use
 | 
				
			||||||
 * @EEK_SYMBOL_CATEGORY_UNKNOWN: used for error reporting
 | 
					 * @EEK_SYMBOL_CATEGORY_UNKNOWN: used for error reporting
 | 
				
			||||||
 | 
					 * @EEK_SYMBOL_CATEGORY_LAST: the last symbol category
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Category of the key symbols.
 | 
					 * Category of the key symbols.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -49,7 +50,6 @@ typedef enum {
 | 
				
			|||||||
    EEK_SYMBOL_CATEGORY_USER3,
 | 
					    EEK_SYMBOL_CATEGORY_USER3,
 | 
				
			||||||
    EEK_SYMBOL_CATEGORY_USER4,
 | 
					    EEK_SYMBOL_CATEGORY_USER4,
 | 
				
			||||||
    EEK_SYMBOL_CATEGORY_UNKNOWN,
 | 
					    EEK_SYMBOL_CATEGORY_UNKNOWN,
 | 
				
			||||||
    /*< private >*/
 | 
					 | 
				
			||||||
    EEK_SYMBOL_CATEGORY_LAST = EEK_SYMBOL_CATEGORY_UNKNOWN
 | 
					    EEK_SYMBOL_CATEGORY_LAST = EEK_SYMBOL_CATEGORY_UNKNOWN
 | 
				
			||||||
} EekSymbolCategory;
 | 
					} EekSymbolCategory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -121,7 +121,8 @@ eek_theme_context_changed (EekThemeContext *context)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * eek_theme_context_set_theme:
 | 
					 * eek_theme_context_set_theme:
 | 
				
			||||||
 * @context: a #EekThemeContext
 | 
					 * @context: an #EekThemeContext
 | 
				
			||||||
 | 
					 * @theme: an #EekTheme
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Sets the default set of theme stylesheets for the context. This theme will
 | 
					 * Sets the default set of theme stylesheets for the context. This theme will
 | 
				
			||||||
 * be used for the root node and for nodes descending from it, unless some other
 | 
					 * be used for the root node and for nodes descending from it, unless some other
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,7 @@
 | 
				
			|||||||
G_BEGIN_DECLS
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * SECTION:EekThemeContext
 | 
					 * SECTION:eek-theme-context
 | 
				
			||||||
 * @short_description: holds global information about a tree of styled objects
 | 
					 * @short_description: holds global information about a tree of styled objects
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * #EekThemeContext is responsible for managing information global to
 | 
					 * #EekThemeContext is responsible for managing information global to
 | 
				
			||||||
 | 
				
			|||||||
@ -26,12 +26,12 @@
 | 
				
			|||||||
G_BEGIN_DECLS
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * SECTION:EekThemeNode
 | 
					 * SECTION:eek-theme-node
 | 
				
			||||||
 * @short_description: style information for one node in a tree of
 | 
					 * @short_description: style information for one node in a tree of
 | 
				
			||||||
 * themed objects
 | 
					 * themed objects
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * A #EekThemeNode represents the CSS style information (the set of
 | 
					 * The #EekThemeNode class represents the CSS style information (the
 | 
				
			||||||
 * CSS properties) for one node in a tree of themed objects. In
 | 
					 * set of CSS properties) for one node in a tree of themed objects. In
 | 
				
			||||||
 * typical usage, it represents the style information for a single
 | 
					 * typical usage, it represents the style information for a single
 | 
				
			||||||
 * #EekElement. A #EekThemeNode is immutable: attributes such as the
 | 
					 * #EekElement. A #EekThemeNode is immutable: attributes such as the
 | 
				
			||||||
 * CSS classes for the node are passed in at construction. If the
 | 
					 * CSS classes for the node are passed in at construction. If the
 | 
				
			||||||
 | 
				
			|||||||
@ -33,31 +33,20 @@
 | 
				
			|||||||
#include "eek-types.h"
 | 
					#include "eek-types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* EekPoint */
 | 
					/* EekPoint */
 | 
				
			||||||
static EekPoint *
 | 
					G_DEFINE_BOXED_TYPE(EekPoint, eek_point, eek_point_copy, eek_point_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EekPoint *
 | 
				
			||||||
eek_point_copy (const EekPoint *point)
 | 
					eek_point_copy (const EekPoint *point)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return g_slice_dup (EekPoint, point);
 | 
					    return g_slice_dup (EekPoint, point);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					void
 | 
				
			||||||
eek_point_free (EekPoint *point)
 | 
					eek_point_free (EekPoint *point)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_slice_free (EekPoint, point);
 | 
					    g_slice_free (EekPoint, point);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType
 | 
					 | 
				
			||||||
eek_point_get_type (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    static GType our_type = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (our_type == 0)
 | 
					 | 
				
			||||||
        our_type =
 | 
					 | 
				
			||||||
            g_boxed_type_register_static ("EekPoint",
 | 
					 | 
				
			||||||
                                          (GBoxedCopyFunc)eek_point_copy,
 | 
					 | 
				
			||||||
                                          (GBoxedFreeFunc)eek_point_free);
 | 
					 | 
				
			||||||
    return our_type;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
eek_point_rotate (EekPoint *point, gint angle)
 | 
					eek_point_rotate (EekPoint *point, gint angle)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -71,32 +60,24 @@ eek_point_rotate (EekPoint *point, gint angle)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* EekBounds */
 | 
					/* EekBounds */
 | 
				
			||||||
static EekBounds *
 | 
					G_DEFINE_BOXED_TYPE(EekBounds, eek_bounds, eek_bounds_copy, eek_bounds_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EekBounds *
 | 
				
			||||||
eek_bounds_copy (const EekBounds *bounds)
 | 
					eek_bounds_copy (const EekBounds *bounds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return g_slice_dup (EekBounds, bounds);
 | 
					    return g_slice_dup (EekBounds, bounds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					void
 | 
				
			||||||
eek_bounds_free (EekBounds *bounds)
 | 
					eek_bounds_free (EekBounds *bounds)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    g_slice_free (EekBounds, bounds);
 | 
					    g_slice_free (EekBounds, bounds);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType
 | 
					 | 
				
			||||||
eek_bounds_get_type (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    static GType our_type = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (our_type == 0)
 | 
					 | 
				
			||||||
        our_type =
 | 
					 | 
				
			||||||
            g_boxed_type_register_static ("EekBounds",
 | 
					 | 
				
			||||||
                                          (GBoxedCopyFunc)eek_bounds_copy,
 | 
					 | 
				
			||||||
                                          (GBoxedFreeFunc)eek_bounds_free);
 | 
					 | 
				
			||||||
    return our_type;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* EekOutline */
 | 
					/* EekOutline */
 | 
				
			||||||
 | 
					G_DEFINE_BOXED_TYPE(EekOutline, eek_outline,
 | 
				
			||||||
 | 
					                    eek_outline_copy, eek_outline_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EekOutline *
 | 
					EekOutline *
 | 
				
			||||||
eek_outline_copy (const EekOutline *outline)
 | 
					eek_outline_copy (const EekOutline *outline)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -115,20 +96,9 @@ eek_outline_free (EekOutline *outline)
 | 
				
			|||||||
    g_slice_free (EekOutline, outline);
 | 
					    g_slice_free (EekOutline, outline);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType
 | 
					 | 
				
			||||||
eek_outline_get_type (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    static GType our_type = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (our_type == 0)
 | 
					 | 
				
			||||||
        our_type =
 | 
					 | 
				
			||||||
            g_boxed_type_register_static ("EekOutline",
 | 
					 | 
				
			||||||
                                          (GBoxedCopyFunc)eek_outline_copy,
 | 
					 | 
				
			||||||
                                          (GBoxedFreeFunc)eek_outline_free);
 | 
					 | 
				
			||||||
    return our_type;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* EekColor */
 | 
					/* EekColor */
 | 
				
			||||||
 | 
					G_DEFINE_BOXED_TYPE(EekColor, eek_color, eek_color_copy, eek_color_free);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EekColor *
 | 
					EekColor *
 | 
				
			||||||
eek_color_copy (const EekColor *color)
 | 
					eek_color_copy (const EekColor *color)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -141,19 +111,6 @@ eek_color_free (EekColor *color)
 | 
				
			|||||||
    g_slice_free (EekColor, color);
 | 
					    g_slice_free (EekColor, color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType
 | 
					 | 
				
			||||||
eek_color_get_type (void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    static GType our_type = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (our_type == 0)
 | 
					 | 
				
			||||||
        our_type =
 | 
					 | 
				
			||||||
            g_boxed_type_register_static ("EekColor",
 | 
					 | 
				
			||||||
                                          (GBoxedCopyFunc)eek_color_copy,
 | 
					 | 
				
			||||||
                                          (GBoxedFreeFunc)eek_color_free);
 | 
					 | 
				
			||||||
    return our_type;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EekColor *
 | 
					EekColor *
 | 
				
			||||||
eek_color_new (gdouble red,
 | 
					eek_color_new (gdouble red,
 | 
				
			||||||
               gdouble green,
 | 
					               gdouble green,
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,6 @@ G_BEGIN_DECLS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define I_(string) g_intern_static_string (string)
 | 
					#define I_(string) g_intern_static_string (string)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EEK_TYPE_SYMBOL_MATRIX (eek_symbol_matrix_get_type ())
 | 
					 | 
				
			||||||
#define EEK_TYPE_POINT (eek_point_get_type ())
 | 
					#define EEK_TYPE_POINT (eek_point_get_type ())
 | 
				
			||||||
#define EEK_TYPE_BOUNDS (eek_bounds_get_type ())
 | 
					#define EEK_TYPE_BOUNDS (eek_bounds_get_type ())
 | 
				
			||||||
#define EEK_TYPE_OUTLINE (eek_outline_get_type ())
 | 
					#define EEK_TYPE_OUTLINE (eek_outline_get_type ())
 | 
				
			||||||
@ -141,7 +140,6 @@ typedef struct _EekThemeContext EekThemeContext;
 | 
				
			|||||||
typedef struct _EekThemeNode EekThemeNode;
 | 
					typedef struct _EekThemeNode EekThemeNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _EekSymbolMatrix EekSymbolMatrix;
 | 
					typedef struct _EekSymbolMatrix EekSymbolMatrix;
 | 
				
			||||||
typedef struct _EekPoint EekPoint;
 | 
					 | 
				
			||||||
typedef struct _EekBounds EekBounds;
 | 
					typedef struct _EekBounds EekBounds;
 | 
				
			||||||
typedef struct _EekOutline EekOutline;
 | 
					typedef struct _EekOutline EekOutline;
 | 
				
			||||||
typedef struct _EekColor EekColor;
 | 
					typedef struct _EekColor EekColor;
 | 
				
			||||||
@ -153,15 +151,18 @@ typedef struct _EekColor EekColor;
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * 2D vertex
 | 
					 * 2D vertex
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					typedef struct _EekPoint EekPoint;
 | 
				
			||||||
struct _EekPoint
 | 
					struct _EekPoint
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    gdouble x;
 | 
					    gdouble x;
 | 
				
			||||||
    gdouble y;
 | 
					    gdouble y;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType eek_point_get_type (void) G_GNUC_CONST;
 | 
					GType     eek_point_get_type (void) G_GNUC_CONST;
 | 
				
			||||||
void  eek_point_rotate   (EekPoint *point,
 | 
					EekPoint *eek_point_copy     (const EekPoint *point);
 | 
				
			||||||
                          gint      angle);
 | 
					void      eek_point_free     (EekPoint       *point);
 | 
				
			||||||
 | 
					void      eek_point_rotate   (EekPoint       *point,
 | 
				
			||||||
 | 
					                              gint            angle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * EekBounds:
 | 
					 * EekBounds:
 | 
				
			||||||
@ -174,14 +175,15 @@ void  eek_point_rotate   (EekPoint *point,
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
struct _EekBounds
 | 
					struct _EekBounds
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /*< public >*/
 | 
					 | 
				
			||||||
    gdouble x;
 | 
					    gdouble x;
 | 
				
			||||||
    gdouble y;
 | 
					    gdouble y;
 | 
				
			||||||
    gdouble width;
 | 
					    gdouble width;
 | 
				
			||||||
    gdouble height;
 | 
					    gdouble height;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType eek_bounds_get_type (void) G_GNUC_CONST;
 | 
					GType      eek_bounds_get_type (void) G_GNUC_CONST;
 | 
				
			||||||
 | 
					EekBounds *eek_bounds_copy     (const EekBounds *bounds);
 | 
				
			||||||
 | 
					void       eek_bounds_free     (EekBounds       *bounds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_INLINE_FUNC gdouble
 | 
					G_INLINE_FUNC gdouble
 | 
				
			||||||
eek_bounds_long_side (EekBounds *bounds)
 | 
					eek_bounds_long_side (EekBounds *bounds)
 | 
				
			||||||
 | 
				
			|||||||
@ -127,7 +127,7 @@ create_key (EekXkbLayout *layout,
 | 
				
			|||||||
    EekSymbolMatrix *matrix = NULL;
 | 
					    EekSymbolMatrix *matrix = NULL;
 | 
				
			||||||
    gchar name[XkbKeyNameLength + 1];
 | 
					    gchar name[XkbKeyNameLength + 1];
 | 
				
			||||||
    KeyCode keycode;
 | 
					    KeyCode keycode;
 | 
				
			||||||
    gint num_groups, num_levels, num_symbols;
 | 
					    gint num_groups, num_levels;
 | 
				
			||||||
    gulong oref;
 | 
					    gulong oref;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    xkbgeometry = priv->xkb->geom;
 | 
					    xkbgeometry = priv->xkb->geom;
 | 
				
			||||||
@ -199,7 +199,6 @@ create_key (EekXkbLayout *layout,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        num_groups = XkbKeyNumGroups (priv->xkb, keycode);
 | 
					        num_groups = XkbKeyNumGroups (priv->xkb, keycode);
 | 
				
			||||||
        num_levels = XkbKeyGroupsWidth (priv->xkb, keycode);
 | 
					        num_levels = XkbKeyGroupsWidth (priv->xkb, keycode);
 | 
				
			||||||
        num_symbols = num_groups * num_levels;
 | 
					 | 
				
			||||||
        matrix = eek_symbol_matrix_new (num_groups, num_levels);
 | 
					        matrix = eek_symbol_matrix_new (num_groups, num_levels);
 | 
				
			||||||
        for (i = 0; i < num_groups; i++)
 | 
					        for (i = 0; i < num_groups; i++)
 | 
				
			||||||
            for (j = 0; j < num_levels; j++) {
 | 
					            for (j = 0; j < num_levels; j++) {
 | 
				
			||||||
 | 
				
			|||||||
@ -590,6 +590,10 @@ eek_xml_layout_real_create_keyboard (EekLayout *self,
 | 
				
			|||||||
    if (data.oref_outline_hash)
 | 
					    if (data.oref_outline_hash)
 | 
				
			||||||
        g_hash_table_destroy (data.oref_outline_hash);
 | 
					        g_hash_table_destroy (data.oref_outline_hash);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* use pre-defined modifier mask here */
 | 
				
			||||||
 | 
					    eek_keyboard_set_num_lock_mask (data.keyboard, EEK_MOD2_MASK);
 | 
				
			||||||
 | 
					    eek_keyboard_set_alt_gr_mask (data.keyboard, EEK_MOD5_MASK);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return data.keyboard;
 | 
					    return data.keyboard;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -28,9 +28,9 @@ eekboard_CFLAGS = \
 | 
				
			|||||||
	-I$(top_srcdir) \
 | 
						-I$(top_srcdir) \
 | 
				
			||||||
	$(GIO2_CFLAGS) \
 | 
						$(GIO2_CFLAGS) \
 | 
				
			||||||
	$(GTK_CFLAGS) \
 | 
						$(GTK_CFLAGS) \
 | 
				
			||||||
	$(GCONF2_CFLAGS) \
 | 
					 | 
				
			||||||
	$(XKB_CFLAGS) \
 | 
						$(XKB_CFLAGS) \
 | 
				
			||||||
	$(LIBXKLAVIER_CFLAGS)
 | 
						$(LIBXKLAVIER_CFLAGS) \
 | 
				
			||||||
 | 
						-DKEYBOARDDIR=\"$(pkgdatadir)/keyboards\"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eekboard_LDADD = \
 | 
					eekboard_LDADD = \
 | 
				
			||||||
	$(builddir)/libxklutil.la \
 | 
						$(builddir)/libxklutil.la \
 | 
				
			||||||
@ -39,7 +39,6 @@ eekboard_LDADD = \
 | 
				
			|||||||
	$(top_builddir)/eek/libeek-xkl.la \
 | 
						$(top_builddir)/eek/libeek-xkl.la \
 | 
				
			||||||
	$(GIO2_LIBS) \
 | 
						$(GIO2_LIBS) \
 | 
				
			||||||
	$(GTK_LIBS) \
 | 
						$(GTK_LIBS) \
 | 
				
			||||||
	$(GCONF2_LIBS) \
 | 
					 | 
				
			||||||
	$(XKB_LIBS) \
 | 
						$(XKB_LIBS) \
 | 
				
			||||||
	$(LIBXKLAVIER_LIBS)
 | 
						$(LIBXKLAVIER_LIBS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -50,11 +49,11 @@ eekboard_LDADD += \
 | 
				
			|||||||
	$(FAKEKEY_LIBS)
 | 
						$(FAKEKEY_LIBS)
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ENABLE_CSPI
 | 
					if ENABLE_ATSPI
 | 
				
			||||||
eekboard_CFLAGS += \
 | 
					eekboard_CFLAGS += \
 | 
				
			||||||
	$(CSPI_CFLAGS)
 | 
						$(ATSPI2_CFLAGS)
 | 
				
			||||||
eekboard_LDADD += \
 | 
					eekboard_LDADD += \
 | 
				
			||||||
	$(CSPI_LIBS)
 | 
						$(ATSPI2_LIBS)
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eekboard_headers = client.h
 | 
					eekboard_headers = client.h
 | 
				
			||||||
 | 
				
			|||||||
@ -20,21 +20,24 @@
 | 
				
			|||||||
#endif  /* HAVE_CONFIG_H */
 | 
					#endif  /* HAVE_CONFIG_H */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <cspi/spi.h>
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
 | 
					#include <dbus/dbus.h>
 | 
				
			||||||
 | 
					#include <atspi/atspi.h>
 | 
				
			||||||
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
#include <gtk/gtk.h>
 | 
					#include <gtk/gtk.h>
 | 
				
			||||||
#include <glib/gi18n.h>
 | 
					#include <glib/gi18n.h>
 | 
				
			||||||
#include <gconf/gconf-client.h>
 | 
					 | 
				
			||||||
#include "eekboard/eekboard.h"
 | 
					#include "eekboard/eekboard.h"
 | 
				
			||||||
#include "client.h"
 | 
					#include "client.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DEFAULT_LAYOUT "us-qwerty"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static gboolean opt_system = FALSE;
 | 
					static gboolean opt_system = FALSE;
 | 
				
			||||||
static gboolean opt_session = FALSE;
 | 
					static gboolean opt_session = FALSE;
 | 
				
			||||||
static gchar *opt_address = NULL;
 | 
					static gchar *opt_address = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					static gboolean opt_use_system_layout = FALSE;
 | 
				
			||||||
static gboolean opt_focus = FALSE;
 | 
					static gboolean opt_focus = FALSE;
 | 
				
			||||||
static gboolean opt_keystroke = FALSE;
 | 
					static gboolean opt_keystroke = FALSE;
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static gchar *opt_keyboard = NULL;
 | 
					static gchar *opt_keyboard = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -51,14 +54,16 @@ static const GOptionEntry options[] = {
 | 
				
			|||||||
     N_("Connect to the session bus")},
 | 
					     N_("Connect to the session bus")},
 | 
				
			||||||
    {"address", 'a', 0, G_OPTION_ARG_STRING, &opt_address,
 | 
					    {"address", 'a', 0, G_OPTION_ARG_STRING, &opt_address,
 | 
				
			||||||
     N_("Connect to the given D-Bus address")},
 | 
					     N_("Connect to the given D-Bus address")},
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					    {"use-system-layout", 'x', 0, G_OPTION_ARG_NONE, &opt_use_system_layout,
 | 
				
			||||||
 | 
					     N_("Use system keyboard layout")},
 | 
				
			||||||
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
    {"listen-focus", 'f', 0, G_OPTION_ARG_NONE, &opt_focus,
 | 
					    {"listen-focus", 'f', 0, G_OPTION_ARG_NONE, &opt_focus,
 | 
				
			||||||
     N_("Listen focus change events with AT-SPI")},
 | 
					     N_("Listen focus change events with AT-SPI")},
 | 
				
			||||||
    {"listen-keystroke", 's', 0, G_OPTION_ARG_NONE, &opt_keystroke,
 | 
					    {"listen-keystroke", 's', 0, G_OPTION_ARG_NONE, &opt_keystroke,
 | 
				
			||||||
     N_("Listen keystroke events with AT-SPI")},
 | 
					     N_("Listen keystroke events with AT-SPI")},
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
    {"keyboard", 'k', 0, G_OPTION_ARG_STRING, &opt_keyboard,
 | 
					    {"keyboard", 'k', 0, G_OPTION_ARG_STRING, &opt_keyboard,
 | 
				
			||||||
     N_("Specify keyboard file")},
 | 
					     N_("Specify keyboard")},
 | 
				
			||||||
    {"model", '\0', 0, G_OPTION_ARG_STRING, &opt_model,
 | 
					    {"model", '\0', 0, G_OPTION_ARG_STRING, &opt_model,
 | 
				
			||||||
     N_("Specify model")},
 | 
					     N_("Specify model")},
 | 
				
			||||||
    {"layouts", '\0', 0, G_OPTION_ARG_STRING, &opt_layouts,
 | 
					    {"layouts", '\0', 0, G_OPTION_ARG_STRING, &opt_layouts,
 | 
				
			||||||
@ -112,7 +117,6 @@ main (int argc, char **argv)
 | 
				
			|||||||
    GBusType bus_type;
 | 
					    GBusType bus_type;
 | 
				
			||||||
    GDBusConnection *connection;
 | 
					    GDBusConnection *connection;
 | 
				
			||||||
    GError *error;
 | 
					    GError *error;
 | 
				
			||||||
    GConfClient *gconfc;
 | 
					 | 
				
			||||||
    GOptionContext *option_context;
 | 
					    GOptionContext *option_context;
 | 
				
			||||||
    GMainLoop *loop;
 | 
					    GMainLoop *loop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -168,30 +172,24 @@ main (int argc, char **argv)
 | 
				
			|||||||
        exit (1);
 | 
					        exit (1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    gconfc = gconf_client_get_default ();
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					 | 
				
			||||||
    error = NULL;
 | 
					 | 
				
			||||||
    if (opt_focus || opt_keystroke) {
 | 
					    if (opt_focus || opt_keystroke) {
 | 
				
			||||||
        if (gconf_client_get_bool (gconfc,
 | 
					        GSettings *settings = g_settings_new ("org.gnome.desktop.interface");
 | 
				
			||||||
                                   "/desktop/gnome/interface/accessibility",
 | 
					
 | 
				
			||||||
                                   &error) ||
 | 
					        if (g_settings_get_boolean (settings, "toolkit-accessibility")) {
 | 
				
			||||||
            gconf_client_get_bool (gconfc,
 | 
					            if (atspi_init () != 0) {
 | 
				
			||||||
                                   "/desktop/gnome/interface/accessibility2",
 | 
					                g_printerr ("Can't init AT-SPI 2\n");
 | 
				
			||||||
                                   &error)) {
 | 
					 | 
				
			||||||
            if (SPI_init () != 0) {
 | 
					 | 
				
			||||||
                g_printerr ("Can't init CSPI\n");
 | 
					 | 
				
			||||||
                exit (1);
 | 
					                exit (1);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (opt_focus &&
 | 
					            if (opt_focus &&
 | 
				
			||||||
                !eekboard_client_enable_cspi_focus (client)) {
 | 
					                !eekboard_client_enable_atspi_focus (client)) {
 | 
				
			||||||
                g_printerr ("Can't register focus change event listeners\n");
 | 
					                g_printerr ("Can't register focus change event listeners\n");
 | 
				
			||||||
                exit (1);
 | 
					                exit (1);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (opt_keystroke &&
 | 
					            if (opt_keystroke &&
 | 
				
			||||||
                !eekboard_client_enable_cspi_keystroke (client)) {
 | 
					                !eekboard_client_enable_atspi_keystroke (client)) {
 | 
				
			||||||
                g_printerr ("Can't register keystroke event listeners\n");
 | 
					                g_printerr ("Can't register keystroke event listeners\n");
 | 
				
			||||||
                exit (1);
 | 
					                exit (1);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -200,16 +198,16 @@ main (int argc, char **argv)
 | 
				
			|||||||
            exit (1);
 | 
					            exit (1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (opt_keyboard && (opt_model || opt_layouts || opt_options)) {
 | 
					    if (opt_use_system_layout && (opt_keyboard || opt_model || opt_layouts || opt_options)) {
 | 
				
			||||||
        g_printerr ("Can't use --keyboard option with xklavier options\n");
 | 
					        g_printerr ("Can't use --use-system-layout option with keyboard options\n");
 | 
				
			||||||
        exit (1);
 | 
					        exit (1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (opt_keyboard) {
 | 
					    if (opt_use_system_layout) {
 | 
				
			||||||
        if (!eekboard_client_load_keyboard_from_file (client, opt_keyboard)) {
 | 
					        if (!eekboard_client_enable_xkl (client)) {
 | 
				
			||||||
            g_printerr ("Can't load keyboard\n");
 | 
					            g_printerr ("Can't register xklavier event listeners\n");
 | 
				
			||||||
            exit (1);
 | 
					            exit (1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else if (opt_model || opt_layouts || opt_options) {
 | 
					    } else if (opt_model || opt_layouts || opt_options) {
 | 
				
			||||||
@ -220,9 +218,22 @@ main (int argc, char **argv)
 | 
				
			|||||||
            g_printerr ("Can't set xklavier config\n");
 | 
					            g_printerr ("Can't set xklavier config\n");
 | 
				
			||||||
            exit (1);
 | 
					            exit (1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } else if (!eekboard_client_enable_xkl (client)) {
 | 
					    } else {
 | 
				
			||||||
        g_printerr ("Can't register xklavier event listeners\n");
 | 
					        gchar *file;
 | 
				
			||||||
        exit (1);
 | 
					
 | 
				
			||||||
 | 
					        if (!opt_keyboard)
 | 
				
			||||||
 | 
					            opt_keyboard = DEFAULT_LAYOUT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (g_str_has_suffix (opt_keyboard, ".xml"))
 | 
				
			||||||
 | 
					            file = g_strdup (opt_keyboard);
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            file = g_strdup_printf ("%s/%s.xml", KEYBOARDDIR, opt_keyboard);
 | 
				
			||||||
 | 
					        if (!eekboard_client_load_keyboard_from_file (client, file)) {
 | 
				
			||||||
 | 
					            g_printerr ("Can't load keyboard file %s\n", file);
 | 
				
			||||||
 | 
					            g_free (file);
 | 
				
			||||||
 | 
					            exit (1);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        g_free (file);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_FAKEKEY
 | 
					#ifdef HAVE_FAKEKEY
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										268
									
								
								src/client.c
									
									
									
									
									
								
							
							
						
						
									
										268
									
								
								src/client.c
									
									
									
									
									
								
							@ -21,9 +21,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <libxklavier/xklavier.h>
 | 
					#include <libxklavier/xklavier.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
#include <cspi/spi.h>
 | 
					#include <dbus/dbus.h>
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#include <atspi/atspi.h>
 | 
				
			||||||
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <gdk/gdkx.h>
 | 
					#include <gdk/gdkx.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -67,11 +68,11 @@ struct _EekboardClient {
 | 
				
			|||||||
    gulong key_pressed_handler;
 | 
					    gulong key_pressed_handler;
 | 
				
			||||||
    gulong key_released_handler;
 | 
					    gulong key_released_handler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
    Accessible *acc;
 | 
					    AtspiAccessible *acc;
 | 
				
			||||||
    AccessibleEventListener *focus_listener;
 | 
					    gboolean follows_focus;
 | 
				
			||||||
    AccessibleEventListener *keystroke_listener;
 | 
					    AtspiDeviceListener *keystroke_listener;
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_FAKEKEY
 | 
					#ifdef HAVE_FAKEKEY
 | 
				
			||||||
    FakeKey *fakekey;
 | 
					    FakeKey *fakekey;
 | 
				
			||||||
@ -84,36 +85,33 @@ struct _EekboardClientClass {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
G_DEFINE_TYPE (EekboardClient, eekboard_client, G_TYPE_OBJECT);
 | 
					G_DEFINE_TYPE (EekboardClient, eekboard_client, G_TYPE_OBJECT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static GdkFilterReturn filter_xkl_event  (GdkXEvent                 *xev,
 | 
					static GdkFilterReturn filter_xkl_event     (GdkXEvent              *xev,
 | 
				
			||||||
                                          GdkEvent                  *event,
 | 
					                                             GdkEvent               *event,
 | 
				
			||||||
                                          gpointer                   user_data);
 | 
					                                             gpointer                user_data);
 | 
				
			||||||
static void            on_xkl_config_changed
 | 
					static void            on_xkl_config_changed (XklEngine              *xklengine,
 | 
				
			||||||
                                         (XklEngine                 *xklengine,
 | 
					                                              gpointer                user_data);
 | 
				
			||||||
                                          gpointer                   user_data);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void            on_xkl_state_changed
 | 
					static void            on_xkl_state_changed (XklEngine              *xklengine,
 | 
				
			||||||
                                         (XklEngine                 *xklengine,
 | 
					                                             XklEngineStateChange    type,
 | 
				
			||||||
                                          XklEngineStateChange       type,
 | 
					                                             gint                    value,
 | 
				
			||||||
                                          gint                       value,
 | 
					                                             gboolean                restore,
 | 
				
			||||||
                                          gboolean                   restore,
 | 
					                                             gpointer                user_data);
 | 
				
			||||||
                                          gpointer                   user_data);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
static SPIBoolean      focus_listener_cb (const AccessibleEvent     *event,
 | 
					static void            focus_listener_cb    (const AtspiEvent       *event,
 | 
				
			||||||
                                          void                      *user_data);
 | 
					                                             void                   *user_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SPIBoolean      keystroke_listener_cb
 | 
					static gboolean        keystroke_listener_cb (const AtspiDeviceEvent *stroke,
 | 
				
			||||||
                                         (const AccessibleKeystroke *stroke,
 | 
					                                              void                   *user_data);
 | 
				
			||||||
                                          void                      *user_data);
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					static gboolean        set_keyboard         (EekboardClient         *client,
 | 
				
			||||||
static gboolean        set_keyboard      (EekboardClient            *client,
 | 
					                                             gboolean                show,
 | 
				
			||||||
                                          gboolean                   show,
 | 
					                                             EekLayout              *layout);
 | 
				
			||||||
                                          EekLayout                 *layout);
 | 
					static gboolean        set_xkl_keyboard     (EekboardClient         *client,
 | 
				
			||||||
static gboolean        set_xkl_keyboard  (EekboardClient            *client,
 | 
					                                             gboolean                show,
 | 
				
			||||||
                                          gboolean                   show,
 | 
					                                             const gchar            *model,
 | 
				
			||||||
                                          const gchar               *model,
 | 
					                                             const gchar            *layouts,
 | 
				
			||||||
                                          const gchar               *layouts,
 | 
					                                             const gchar            *options);
 | 
				
			||||||
                                          const gchar               *options);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
eekboard_client_set_property (GObject      *object,
 | 
					eekboard_client_set_property (GObject      *object,
 | 
				
			||||||
@ -181,10 +179,10 @@ eekboard_client_dispose (GObject *object)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    eekboard_client_disable_xkl (client);
 | 
					    eekboard_client_disable_xkl (client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
    eekboard_client_disable_cspi_focus (client);
 | 
					    eekboard_client_disable_atspi_focus (client);
 | 
				
			||||||
    eekboard_client_disable_cspi_keystroke (client);
 | 
					    eekboard_client_disable_atspi_keystroke (client);
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_FAKEKEY
 | 
					#ifdef HAVE_FAKEKEY
 | 
				
			||||||
    eekboard_client_disable_fakekey (client);
 | 
					    eekboard_client_disable_fakekey (client);
 | 
				
			||||||
@ -274,10 +272,10 @@ eekboard_client_init (EekboardClient *client)
 | 
				
			|||||||
    client->key_released_handler = 0;
 | 
					    client->key_released_handler = 0;
 | 
				
			||||||
    client->xkl_config_changed_handler = 0;
 | 
					    client->xkl_config_changed_handler = 0;
 | 
				
			||||||
    client->xkl_state_changed_handler = 0;
 | 
					    client->xkl_state_changed_handler = 0;
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
    client->focus_listener = NULL;
 | 
					    client->follows_focus = FALSE;
 | 
				
			||||||
    client->keystroke_listener = NULL;
 | 
					    client->keystroke_listener = NULL;
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
#ifdef HAVE_FAKEKEY
 | 
					#ifdef HAVE_FAKEKEY
 | 
				
			||||||
    client->fakekey = NULL;
 | 
					    client->fakekey = NULL;
 | 
				
			||||||
#endif  /* HAVE_FAKEKEY */
 | 
					#endif  /* HAVE_FAKEKEY */
 | 
				
			||||||
@ -289,9 +287,9 @@ eekboard_client_set_xkl_config (EekboardClient *client,
 | 
				
			|||||||
                                        const gchar *layouts,
 | 
					                                        const gchar *layouts,
 | 
				
			||||||
                                        const gchar *options)
 | 
					                                        const gchar *options)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
    return set_xkl_keyboard (client,
 | 
					    return set_xkl_keyboard (client,
 | 
				
			||||||
                             client->focus_listener ? FALSE : TRUE,
 | 
					                             !client->follows_focus,
 | 
				
			||||||
                             model,
 | 
					                             model,
 | 
				
			||||||
                             layouts,
 | 
					                             layouts,
 | 
				
			||||||
                             options);
 | 
					                             options);
 | 
				
			||||||
@ -340,9 +338,9 @@ eekboard_client_enable_xkl (EekboardClient *client)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    xkl_engine_start_listen (client->xkl_engine, XKLL_TRACK_KEYBOARD_STATE);
 | 
					    xkl_engine_start_listen (client->xkl_engine, XKLL_TRACK_KEYBOARD_STATE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
    return set_xkl_keyboard (client,
 | 
					    return set_xkl_keyboard (client,
 | 
				
			||||||
                             client->focus_listener ? FALSE : TRUE,
 | 
					                             !client->follows_focus,
 | 
				
			||||||
                             NULL,
 | 
					                             NULL,
 | 
				
			||||||
                             NULL,
 | 
					                             NULL,
 | 
				
			||||||
                             NULL);
 | 
					                             NULL);
 | 
				
			||||||
@ -366,80 +364,135 @@ eekboard_client_disable_xkl (EekboardClient *client)
 | 
				
			|||||||
                                     client->xkl_state_changed_handler);
 | 
					                                     client->xkl_state_changed_handler);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_CSPI
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
gboolean
 | 
					gboolean
 | 
				
			||||||
eekboard_client_enable_cspi_focus (EekboardClient *client)
 | 
					eekboard_client_enable_atspi_focus (EekboardClient *client)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    client->focus_listener = SPI_createAccessibleEventListener
 | 
					    GError *error;
 | 
				
			||||||
        ((AccessibleEventListenerCB)focus_listener_cb,
 | 
					 | 
				
			||||||
         client);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!SPI_registerGlobalEventListener (client->focus_listener,
 | 
					    error = NULL;
 | 
				
			||||||
                                          "object:state-changed:focused"))
 | 
					    if (!atspi_event_listener_register_from_callback
 | 
				
			||||||
 | 
					        ((AtspiEventListenerCB)focus_listener_cb,
 | 
				
			||||||
 | 
					         client,
 | 
				
			||||||
 | 
					         NULL,
 | 
				
			||||||
 | 
					         "object:state-changed:focused",
 | 
				
			||||||
 | 
					         &error))
 | 
				
			||||||
        return FALSE;
 | 
					        return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!SPI_registerGlobalEventListener (client->focus_listener,
 | 
					    error = NULL;
 | 
				
			||||||
                                          "focus:"))
 | 
					    if (!atspi_event_listener_register_from_callback
 | 
				
			||||||
 | 
					        ((AtspiEventListenerCB)focus_listener_cb,
 | 
				
			||||||
 | 
					         client,
 | 
				
			||||||
 | 
					         NULL,
 | 
				
			||||||
 | 
					         "focus:",
 | 
				
			||||||
 | 
					         &error))
 | 
				
			||||||
        return FALSE;
 | 
					        return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    client->follows_focus = TRUE;
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
eekboard_client_disable_cspi_focus (EekboardClient *client)
 | 
					eekboard_client_disable_atspi_focus (EekboardClient *client)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (client->focus_listener) {
 | 
					    GError *error;
 | 
				
			||||||
        SPI_deregisterGlobalEventListenerAll (client->focus_listener);
 | 
					
 | 
				
			||||||
        AccessibleEventListener_unref (client->focus_listener);
 | 
					    client->follows_focus = FALSE;
 | 
				
			||||||
        client->focus_listener = NULL;
 | 
					
 | 
				
			||||||
    }
 | 
					    error = NULL;
 | 
				
			||||||
 | 
					    atspi_event_listener_deregister_from_callback
 | 
				
			||||||
 | 
					        ((AtspiEventListenerCB)focus_listener_cb,
 | 
				
			||||||
 | 
					         client,
 | 
				
			||||||
 | 
					         "object:state-changed:focused",
 | 
				
			||||||
 | 
					         &error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    error = NULL;
 | 
				
			||||||
 | 
					    atspi_event_listener_deregister_from_callback
 | 
				
			||||||
 | 
					        ((AtspiEventListenerCB)focus_listener_cb,
 | 
				
			||||||
 | 
					         client,
 | 
				
			||||||
 | 
					         "focus:",
 | 
				
			||||||
 | 
					         &error);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean
 | 
					gboolean
 | 
				
			||||||
eekboard_client_enable_cspi_keystroke (EekboardClient *client)
 | 
					eekboard_client_enable_atspi_keystroke (EekboardClient *client)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    GError *error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    client->keystroke_listener =
 | 
					    client->keystroke_listener =
 | 
				
			||||||
        SPI_createAccessibleKeystrokeListener (keystroke_listener_cb,
 | 
					        atspi_device_listener_new ((AtspiDeviceListenerCB)keystroke_listener_cb,
 | 
				
			||||||
                                               client);
 | 
					                                   NULL,
 | 
				
			||||||
 | 
					                                   client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!SPI_registerAccessibleKeystrokeListener
 | 
					    error = NULL;
 | 
				
			||||||
 | 
					    if (!atspi_register_keystroke_listener
 | 
				
			||||||
        (client->keystroke_listener,
 | 
					        (client->keystroke_listener,
 | 
				
			||||||
         SPI_KEYSET_ALL_KEYS,
 | 
					         NULL,
 | 
				
			||||||
         0,
 | 
					         0,
 | 
				
			||||||
         SPI_KEY_PRESSED |
 | 
					         ATSPI_KEY_PRESSED,
 | 
				
			||||||
         SPI_KEY_RELEASED,
 | 
					         ATSPI_KEYLISTENER_NOSYNC,
 | 
				
			||||||
         SPI_KEYLISTENER_NOSYNC))
 | 
					         &error))
 | 
				
			||||||
 | 
					        return FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    error = NULL;
 | 
				
			||||||
 | 
					    if (!atspi_register_keystroke_listener
 | 
				
			||||||
 | 
					        (client->keystroke_listener,
 | 
				
			||||||
 | 
					         NULL,
 | 
				
			||||||
 | 
					         0,
 | 
				
			||||||
 | 
					         ATSPI_KEY_RELEASED,
 | 
				
			||||||
 | 
					         ATSPI_KEYLISTENER_NOSYNC,
 | 
				
			||||||
 | 
					         &error))
 | 
				
			||||||
        return FALSE;
 | 
					        return FALSE;
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
eekboard_client_disable_cspi_keystroke (EekboardClient *client)
 | 
					eekboard_client_disable_atspi_keystroke (EekboardClient *client)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (client->keystroke_listener) {
 | 
					    if (client->keystroke_listener) {
 | 
				
			||||||
        SPI_deregisterAccessibleKeystrokeListener (client->keystroke_listener,
 | 
					        GError *error;
 | 
				
			||||||
                                                   0);
 | 
					
 | 
				
			||||||
        AccessibleKeystrokeListener_unref (client->keystroke_listener);
 | 
					        error = NULL;
 | 
				
			||||||
 | 
					        atspi_deregister_keystroke_listener (client->keystroke_listener,
 | 
				
			||||||
 | 
					                                             NULL,
 | 
				
			||||||
 | 
					                                             0,
 | 
				
			||||||
 | 
					                                             ATSPI_KEY_PRESSED,
 | 
				
			||||||
 | 
					                                             &error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        error = NULL;
 | 
				
			||||||
 | 
					        atspi_deregister_keystroke_listener (client->keystroke_listener,
 | 
				
			||||||
 | 
					                                             NULL,
 | 
				
			||||||
 | 
					                                             0,
 | 
				
			||||||
 | 
					                                             ATSPI_KEY_RELEASED,
 | 
				
			||||||
 | 
					                                             &error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        g_object_unref (client->keystroke_listener);
 | 
				
			||||||
        client->keystroke_listener = NULL;
 | 
					        client->keystroke_listener = NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SPIBoolean
 | 
					static void
 | 
				
			||||||
focus_listener_cb (const AccessibleEvent *event,
 | 
					focus_listener_cb (const AtspiEvent *event,
 | 
				
			||||||
                   void                  *user_data)
 | 
					                   void             *user_data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekboardClient *client = user_data;
 | 
					    EekboardClient *client = user_data;
 | 
				
			||||||
    Accessible *accessible = event->source;
 | 
					    AtspiAccessible *accessible = event->source;
 | 
				
			||||||
    AccessibleStateSet *state_set = Accessible_getStateSet (accessible);
 | 
					    AtspiStateSet *state_set = atspi_accessible_get_state_set (accessible);
 | 
				
			||||||
    AccessibleRole role = Accessible_getRole (accessible);
 | 
					    AtspiRole role;
 | 
				
			||||||
 | 
					    GError *error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (AccessibleStateSet_contains (state_set, SPI_STATE_EDITABLE) ||
 | 
					    error = NULL;
 | 
				
			||||||
        role == SPI_ROLE_TERMINAL) {
 | 
					    role = atspi_accessible_get_role (accessible, &error);
 | 
				
			||||||
 | 
					    if (error)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (atspi_state_set_contains (state_set, ATSPI_STATE_EDITABLE) ||
 | 
				
			||||||
 | 
					        role == ATSPI_ROLE_TERMINAL) {
 | 
				
			||||||
        switch (role) {
 | 
					        switch (role) {
 | 
				
			||||||
        case SPI_ROLE_TEXT:
 | 
					        case ATSPI_ROLE_TEXT:
 | 
				
			||||||
        case SPI_ROLE_PARAGRAPH:
 | 
					        case ATSPI_ROLE_PARAGRAPH:
 | 
				
			||||||
        case SPI_ROLE_PASSWORD_TEXT:
 | 
					        case ATSPI_ROLE_PASSWORD_TEXT:
 | 
				
			||||||
        case SPI_ROLE_TERMINAL:
 | 
					        case ATSPI_ROLE_TERMINAL:
 | 
				
			||||||
            if (strncmp (event->type, "focus", 5) == 0 || event->detail1 == 1) {
 | 
					            if (strncmp (event->type, "focus", 5) == 0 || event->detail1 == 1) {
 | 
				
			||||||
                client->acc = accessible;
 | 
					                client->acc = accessible;
 | 
				
			||||||
                eekboard_context_show_keyboard (client->context, NULL);
 | 
					                eekboard_context_show_keyboard (client->context, NULL);
 | 
				
			||||||
@ -448,7 +501,7 @@ focus_listener_cb (const AccessibleEvent *event,
 | 
				
			|||||||
                eekboard_context_hide_keyboard (client->context, NULL);
 | 
					                eekboard_context_hide_keyboard (client->context, NULL);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case SPI_ROLE_ENTRY:
 | 
					        case ATSPI_ROLE_ENTRY:
 | 
				
			||||||
            if (strncmp (event->type, "focus", 5) == 0 || event->detail1 == 1) {
 | 
					            if (strncmp (event->type, "focus", 5) == 0 || event->detail1 == 1) {
 | 
				
			||||||
                client->acc = accessible;
 | 
					                client->acc = accessible;
 | 
				
			||||||
                eekboard_context_show_keyboard (client->context, NULL);
 | 
					                eekboard_context_show_keyboard (client->context, NULL);
 | 
				
			||||||
@ -464,13 +517,11 @@ focus_listener_cb (const AccessibleEvent *event,
 | 
				
			|||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        eekboard_context_hide_keyboard (client->context, NULL);
 | 
					        eekboard_context_hide_keyboard (client->context, NULL);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SPIBoolean
 | 
					static gboolean
 | 
				
			||||||
keystroke_listener_cb (const AccessibleKeystroke *stroke,
 | 
					keystroke_listener_cb (const AtspiDeviceEvent *stroke,
 | 
				
			||||||
                       void                      *user_data)
 | 
					                       void                   *user_data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekboardClient *client = user_data;
 | 
					    EekboardClient *client = user_data;
 | 
				
			||||||
    EekKey *key;
 | 
					    EekKey *key;
 | 
				
			||||||
@ -478,22 +529,22 @@ keystroke_listener_cb (const AccessibleKeystroke *stroke,
 | 
				
			|||||||
    /* Ignore modifiers since the keystroke listener does not called
 | 
					    /* Ignore modifiers since the keystroke listener does not called
 | 
				
			||||||
       when a modifier key is released. */
 | 
					       when a modifier key is released. */
 | 
				
			||||||
    key = eek_keyboard_find_key_by_keycode (client->keyboard,
 | 
					    key = eek_keyboard_find_key_by_keycode (client->keyboard,
 | 
				
			||||||
                                            stroke->keycode);
 | 
					                                            stroke->hw_code);
 | 
				
			||||||
    if (key) {
 | 
					    if (key) {
 | 
				
			||||||
        EekSymbol *symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
					        EekSymbol *symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
				
			||||||
        if (symbol && eek_symbol_is_modifier (symbol))
 | 
					        if (symbol && eek_symbol_is_modifier (symbol))
 | 
				
			||||||
            return FALSE;
 | 
					            return FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (stroke->type == SPI_KEY_PRESSED) {
 | 
					    if (stroke->type == ATSPI_KEY_PRESSED) {
 | 
				
			||||||
        eekboard_context_press_key (client->context, stroke->keycode, NULL);
 | 
					        eekboard_context_press_key (client->context, stroke->hw_code, NULL);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        eekboard_context_release_key (client->context, stroke->keycode, NULL);
 | 
					        eekboard_context_release_key (client->context, stroke->hw_code, NULL);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif  /* HAVE_CSPI */
 | 
					#endif  /* HAVE_ATSPI */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EekboardClient *
 | 
					EekboardClient *
 | 
				
			||||||
eekboard_client_new (GDBusConnection *connection)
 | 
					eekboard_client_new (GDBusConnection *connection)
 | 
				
			||||||
@ -665,12 +716,19 @@ on_key_pressed (EekKeyboard *keyboard,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
					    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
 | 
				
			||||||
    if (EEK_IS_KEYSYM(symbol) && !eek_symbol_is_modifier (symbol)) {
 | 
					    if (EEK_IS_KEYSYM(symbol) && !eek_symbol_is_modifier (symbol)) {
 | 
				
			||||||
        guint xkeysym = eek_keysym_get_xkeysym (EEK_KEYSYM(symbol));
 | 
					        guint xkeysym;
 | 
				
			||||||
        guint keycode =
 | 
					        guint keycode;
 | 
				
			||||||
            XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (client->display), xkeysym);
 | 
					        EekModifierType modifiers;
 | 
				
			||||||
        EekModifierType modifiers =
 | 
					        FakeKeyModifier fakekey_modifiers;
 | 
				
			||||||
            eek_keyboard_get_modifiers (client->keyboard);
 | 
					
 | 
				
			||||||
        FakeKeyModifier fakekey_modifiers = get_fakekey_modifiers (modifiers);
 | 
					        xkeysym = eek_keysym_get_xkeysym (EEK_KEYSYM(symbol));
 | 
				
			||||||
 | 
					        g_return_if_fail (xkeysym > 0);
 | 
				
			||||||
 | 
					        keycode = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (client->display),
 | 
				
			||||||
 | 
					                                    xkeysym);
 | 
				
			||||||
 | 
					        g_return_if_fail (keycode > 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        modifiers = eek_keyboard_get_modifiers (client->keyboard);
 | 
				
			||||||
 | 
					        fakekey_modifiers = get_fakekey_modifiers (modifiers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fakekey_send_keyevent (client->fakekey,
 | 
					        fakekey_send_keyevent (client->fakekey,
 | 
				
			||||||
                               keycode,
 | 
					                               keycode,
 | 
				
			||||||
@ -741,8 +799,6 @@ eekboard_client_load_keyboard_from_file (EekboardClient *client,
 | 
				
			|||||||
    GFileInputStream *input;
 | 
					    GFileInputStream *input;
 | 
				
			||||||
    GError *error;
 | 
					    GError *error;
 | 
				
			||||||
    EekLayout *layout;
 | 
					    EekLayout *layout;
 | 
				
			||||||
    EekKeyboard *keyboard;
 | 
					 | 
				
			||||||
    guint keyboard_id;
 | 
					 | 
				
			||||||
    gboolean retval;
 | 
					    gboolean retval;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    file = g_file_new_for_path (keyboard_file);
 | 
					    file = g_file_new_for_path (keyboard_file);
 | 
				
			||||||
@ -754,7 +810,11 @@ eekboard_client_load_keyboard_from_file (EekboardClient *client,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    layout = eek_xml_layout_new (G_INPUT_STREAM(input));
 | 
					    layout = eek_xml_layout_new (G_INPUT_STREAM(input));
 | 
				
			||||||
    g_object_unref (input);
 | 
					    g_object_unref (input);
 | 
				
			||||||
 | 
					#ifdef HAVE_ATSPI
 | 
				
			||||||
 | 
					    retval = set_keyboard (client, !client->follows_focus, layout);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
    retval = set_keyboard (client, TRUE, layout);
 | 
					    retval = set_keyboard (client, TRUE, layout);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    g_object_unref (layout);
 | 
					    g_object_unref (layout);
 | 
				
			||||||
    return retval;
 | 
					    return retval;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -44,14 +44,14 @@ gboolean         eekboard_client_set_xkl_config  (EekboardClient  *client,
 | 
				
			|||||||
gboolean         eekboard_client_enable_xkl      (EekboardClient  *client);
 | 
					gboolean         eekboard_client_enable_xkl      (EekboardClient  *client);
 | 
				
			||||||
void             eekboard_client_disable_xkl     (EekboardClient  *client);
 | 
					void             eekboard_client_disable_xkl     (EekboardClient  *client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean         eekboard_client_enable_cspi_focus
 | 
					gboolean         eekboard_client_enable_atspi_focus
 | 
				
			||||||
                                                 (EekboardClient  *client);
 | 
					                                                 (EekboardClient  *client);
 | 
				
			||||||
void             eekboard_client_disable_cspi_focus
 | 
					void             eekboard_client_disable_atspi_focus
 | 
				
			||||||
                                                 (EekboardClient  *client);
 | 
					                                                 (EekboardClient  *client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean         eekboard_client_enable_cspi_keystroke
 | 
					gboolean         eekboard_client_enable_atspi_keystroke
 | 
				
			||||||
                                                 (EekboardClient  *client);
 | 
					                                                 (EekboardClient  *client);
 | 
				
			||||||
void             eekboard_client_disable_cspi_keystroke
 | 
					void             eekboard_client_disable_atspi_keystroke
 | 
				
			||||||
                                                 (EekboardClient  *client);
 | 
					                                                 (EekboardClient  *client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gboolean         eekboard_client_enable_fakekey  (EekboardClient  *client);
 | 
					gboolean         eekboard_client_enable_fakekey  (EekboardClient  *client);
 | 
				
			||||||
 | 
				
			|||||||
@ -141,7 +141,10 @@ on_allocation_changed (ClutterActor          *stage,
 | 
				
			|||||||
                       ClutterAllocationFlags flags,
 | 
					                       ClutterAllocationFlags flags,
 | 
				
			||||||
                       gpointer               user_data)
 | 
					                       gpointer               user_data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ClutterActor *actor = user_data;
 | 
					    ClutterActor *actor =
 | 
				
			||||||
 | 
					        clutter_container_find_child_by_name (CLUTTER_CONTAINER(stage),
 | 
				
			||||||
 | 
					                                              "keyboard");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    clutter_actor_set_size (actor,
 | 
					    clutter_actor_set_size (actor,
 | 
				
			||||||
                            box->x2 - box->x1,
 | 
					                            box->x2 - box->x1,
 | 
				
			||||||
                            box->y2 - box->y1);
 | 
					                            box->y2 - box->y1);
 | 
				
			||||||
@ -234,12 +237,11 @@ set_geometry (ServerContext *context)
 | 
				
			|||||||
        g_signal_connect (stage,
 | 
					        g_signal_connect (stage,
 | 
				
			||||||
                          "allocation-changed",
 | 
					                          "allocation-changed",
 | 
				
			||||||
                          G_CALLBACK(on_allocation_changed),
 | 
					                          G_CALLBACK(on_allocation_changed),
 | 
				
			||||||
                          actor);
 | 
					                          NULL);
 | 
				
			||||||
#else
 | 
					#endif
 | 
				
			||||||
        gtk_widget_set_size_request (context->widget,
 | 
					        gtk_widget_set_size_request (context->widget,
 | 
				
			||||||
                                     bounds.width,
 | 
					                                     bounds.width,
 | 
				
			||||||
                                     bounds.height);
 | 
					                                     bounds.height);
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
        gtk_window_move (GTK_WINDOW(context->window),
 | 
					        gtk_window_move (GTK_WINDOW(context->window),
 | 
				
			||||||
                         MAX(rect.width - 20 - bounds.width, 0),
 | 
					                         MAX(rect.width - 20 - bounds.width, 0),
 | 
				
			||||||
                         MAX(rect.height - 40 - bounds.height, 0));
 | 
					                         MAX(rect.height - 40 - bounds.height, 0));
 | 
				
			||||||
@ -265,6 +267,7 @@ update_widget (ServerContext *context)
 | 
				
			|||||||
    context->widget = gtk_clutter_embed_new ();
 | 
					    context->widget = gtk_clutter_embed_new ();
 | 
				
			||||||
    stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED(context->widget));
 | 
					    stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED(context->widget));
 | 
				
			||||||
    actor = eek_clutter_keyboard_new (context->keyboard);
 | 
					    actor = eek_clutter_keyboard_new (context->keyboard);
 | 
				
			||||||
 | 
					    clutter_actor_set_name (actor, "keyboard");
 | 
				
			||||||
    if (theme)
 | 
					    if (theme)
 | 
				
			||||||
        eek_clutter_keyboard_set_theme (EEK_CLUTTER_KEYBOARD(actor), theme);
 | 
					        eek_clutter_keyboard_set_theme (EEK_CLUTTER_KEYBOARD(actor), theme);
 | 
				
			||||||
    clutter_container_add_actor (CLUTTER_CONTAINER(stage), actor);
 | 
					    clutter_container_add_actor (CLUTTER_CONTAINER(stage), actor);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user