Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dorota Czaplejewicz
squeekboard
Commits
e6d17fa4
Commit
e6d17fa4
authored
Mar 11, 2011
by
Daiki Ueno
Browse files
Fix the last commit.
parent
d62b8b49
Changes
10
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
e6d17fa4
...
...
@@ -72,3 +72,5 @@ po/Makefile.in.in
po/POTFILES
po/stamp-it
bindings/vala/*.vapi
py-compile
configure.ac
View file @
e6d17fa4
...
...
@@ -20,7 +20,7 @@ AC_PREREQ(2.63)
dnl AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4])
AC_INIT([eekboard], [0.90.
4
], [ueno@unixuser.org])
AC_INIT([eekboard], [0.90.
5
], [ueno@unixuser.org])
dnl Init automake
AM_INIT_AUTOMAKE
...
...
data/eekboard.desktop.in
0 → 100644
View file @
e6d17fa4
[Desktop Entry]
Name=Eekboard
GenericName=Eekboard Virtual Keyboard
Comment=Virtual Keyboard
Exec=eekboard-desktop-client
Icon=eekboard
Terminal=false
Type=Application
Categories=GTK;Utility;
eek/eek-container.c
View file @
e6d17fa4
...
...
@@ -249,7 +249,7 @@ eek_container_init (EekContainer *self)
/**
* eek_container_foreach_child:
* @container: an #EekContainer
* @callback: an #EekCallback
* @callback:
(scope call):
an #EekCallback
* @user_data: additional data passed to @callback
*
* Enumerate children of @container and run @callback with each child.
...
...
eek/eek-container.h
View file @
e6d17fa4
...
...
@@ -34,6 +34,14 @@ G_BEGIN_DECLS
typedef
struct
_EekContainerClass
EekContainerClass
;
typedef
struct
_EekContainerPrivate
EekContainerPrivate
;
/**
* EekCallback:
* @element: an #EekElement
* @user_data: user-supplied data
*
* The type of the callback function used for iterating over the
* children of a container, see eek_container_foreach_child().
*/
typedef
void
(
*
EekCallback
)
(
EekElement
*
element
,
gpointer
user_data
);
typedef
gint
(
*
EekCompareFunc
)
(
EekElement
*
element
,
gpointer
user_data
);
...
...
examples/eekboard-inscript/inscript.py
View file @
e6d17fa4
...
...
@@ -18,7 +18,8 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
import
gobject
,
gtk
,
eekboard
,
virtkey
import
eekboard
import
gobject
,
gtk
,
virtkey
import
sys
,
os
.
path
,
re
KEYCODE_TABLE
=
{
...
...
@@ -33,6 +34,36 @@ KEYCODE_TABLE = {
MARK_UPPER
=
'~!@#$%^&*()_+{}|:"<>?'
MARK_LOWER
=
'`1234567890-=[]
\\
;
\'
,./'
INSCRIPT_MAPS
=
(
"as-inscript"
,
"bn-inscript"
,
"gu-inscript"
,
"hi-inscript"
,
"kn-inscript"
,
"ml-inscript"
,
"mr-inscript"
,
"or-inscript"
,
"pa-inscript"
,
"sd-inscript"
,
"ta-inscript"
,
"te-inscript"
,
"kn-inscript2"
,
"kok-inscript2-deva"
,
"mai-inscript2"
,
"ml-inscript2"
,
"mni-inscript2-beng"
,
"mni-inscript2-mtei"
,
"mr-inscript2"
,
"ne-inscript2-deva"
,
"or-inscript2"
,
"pa-inscript2-guru"
,
"sa-inscript2"
,
"sat-inscript2-deva"
,
"sat-inscript2-olck"
,
"sd-inscript2-deva"
,
"ta-inscript2"
,
"te-inscript2"
)
class
MapFile
(
object
):
MAPENTRY_PATTERN
=
re
.
compile
(
r
'\A\s*\((?:\((.*?)\)|"(.*?)")\s*"(.*?)"\)'
)
...
...
examples/eekboard-inscript/main.py
View file @
e6d17fa4
...
...
@@ -19,14 +19,25 @@
import
inscript
import
gtk
from
optparse
import
OptionParser
import
sys
,
os
import
sys
,
os
,
os
.
path
,
glob
parser
=
OptionParser
()
parser
.
add_option
(
"-n"
,
"--name=LANGCODE"
,
dest
=
"langcode"
,
help
=
"Specify language code to LANGCODE"
,
metavar
=
"LANGCODE"
)
parser
.
add_option
(
"-l"
,
"--list"
,
dest
=
"list"
,
default
=
False
,
action
=
"store_true"
,
help
=
"List available language codes"
)
(
options
,
args
)
=
parser
.
parse_args
()
if
options
.
list
:
pat
=
os
.
path
.
join
(
os
.
getenv
(
"M17N_DIR"
),
"*.mim"
)
for
fname
in
sorted
(
glob
.
glob
(
pat
)):
mname
=
os
.
path
.
basename
(
fname
[:
-
4
])
if
mname
in
inscript
.
INSCRIPT_MAPS
:
print
mname
exit
(
0
)
if
options
.
langcode
is
None
:
print
>>
sys
.
stderr
,
"Specify language code with -n"
exit
(
1
)
...
...
src/client-main.c
View file @
e6d17fa4
...
...
@@ -36,6 +36,8 @@ static gboolean opt_focus = FALSE;
static
gboolean
opt_keystroke
=
FALSE
;
#endif
/* HAVE_CSPI */
static
gchar
*
opt_keyboard
=
NULL
;
static
gchar
*
opt_model
=
NULL
;
static
gchar
*
opt_layouts
=
NULL
;
static
gchar
*
opt_options
=
NULL
;
...
...
@@ -55,6 +57,8 @@ static const GOptionEntry options[] = {
{
"listen-keystroke"
,
's'
,
0
,
G_OPTION_ARG_NONE
,
&
opt_keystroke
,
N_
(
"Listen keystroke events with AT-SPI"
)},
#endif
/* HAVE_CSPI */
{
"keyboard"
,
'k'
,
0
,
G_OPTION_ARG_STRING
,
&
opt_keyboard
,
N_
(
"Specify keyboard file"
)},
{
"model"
,
'\0'
,
0
,
G_OPTION_ARG_STRING
,
&
opt_model
,
N_
(
"Specify model"
)},
{
"layouts"
,
'\0'
,
0
,
G_OPTION_ARG_STRING
,
&
opt_layouts
,
...
...
@@ -198,11 +202,21 @@ main (int argc, char **argv)
}
#endif
/* HAVE_CSPI */
if
(
opt_model
||
opt_layouts
||
opt_options
)
{
if
(
opt_keyboard
&&
(
opt_model
||
opt_layouts
||
opt_options
))
{
g_printerr
(
"Can't use --keyboard option with xklavier options
\n
"
);
exit
(
1
);
}
if
(
opt_keyboard
)
{
if
(
!
eekboard_client_load_keyboard_from_file
(
client
,
opt_keyboard
))
{
g_printerr
(
"Can't load keyboard
\n
"
);
exit
(
1
);
}
}
else
if
(
opt_model
||
opt_layouts
||
opt_options
)
{
if
(
!
eekboard_client_set_xkl_config
(
client
,
opt_model
,
opt_layouts
,
opt_options
))
{
opt_model
,
opt_layouts
,
opt_options
))
{
g_printerr
(
"Can't set xklavier config
\n
"
);
exit
(
1
);
}
...
...
src/client.c
View file @
e6d17fa4
...
...
@@ -106,7 +106,10 @@ static SPIBoolean keystroke_listener_cb
(
const
AccessibleKeystroke
*
stroke
,
void
*
user_data
);
#endif
/* HAVE_CSPI */
static
gboolean
set_keyboard
(
EekboardClient
*
client
,
static
gboolean
set_keyboard
(
EekboardClient
*
client
,
gboolean
show
,
EekLayout
*
layout
);
static
gboolean
set_xkl_keyboard
(
EekboardClient
*
client
,
gboolean
show
,
const
gchar
*
model
,
const
gchar
*
layouts
,
...
...
@@ -287,17 +290,17 @@ eekboard_client_set_xkl_config (EekboardClient *client,
const
gchar
*
options
)
{
#ifdef HAVE_CSPI
return
set_keyboard
(
client
,
client
->
focus_listener
?
FALSE
:
TRUE
,
model
,
layouts
,
options
);
return
set_
xkl_
keyboard
(
client
,
client
->
focus_listener
?
FALSE
:
TRUE
,
model
,
layouts
,
options
);
#else
return
set_keyboard
(
client
,
TRUE
,
model
,
layouts
,
options
);
return
set_
xkl_
keyboard
(
client
,
TRUE
,
model
,
layouts
,
options
);
#endif
}
...
...
@@ -338,10 +341,13 @@ eekboard_client_enable_xkl (EekboardClient *client)
xkl_engine_start_listen
(
client
->
xkl_engine
,
XKLL_TRACK_KEYBOARD_STATE
);
#ifdef HAVE_CSPI
return
set_keyboard
(
client
,
client
->
focus_listener
?
FALSE
:
TRUE
,
NULL
,
NULL
,
NULL
);
return
set_xkl_keyboard
(
client
,
client
->
focus_listener
?
FALSE
:
TRUE
,
NULL
,
NULL
,
NULL
);
#else
return
set_keyboard
(
client
,
TRUE
,
NULL
,
NULL
,
NULL
);
return
set_
xkl_
keyboard
(
client
,
TRUE
,
NULL
,
NULL
,
NULL
);
#endif
}
...
...
@@ -519,7 +525,7 @@ on_xkl_config_changed (XklEngine *xklengine,
EekboardClient
*
client
=
user_data
;
gboolean
retval
;
retval
=
set_keyboard
(
client
,
FALSE
,
NULL
,
NULL
,
NULL
);
retval
=
set_
xkl_
keyboard
(
client
,
FALSE
,
NULL
,
NULL
,
NULL
);
g_return_if_fail
(
retval
);
#ifdef HAVE_FAKEKEY
...
...
@@ -530,16 +536,40 @@ on_xkl_config_changed (XklEngine *xklengine,
static
gboolean
set_keyboard
(
EekboardClient
*
client
,
gboolean
show
,
const
gchar
*
model
,
const
gchar
*
layouts
,
const
gchar
*
options
)
gboolean
show
,
EekLayout
*
layout
)
{
EekLayout
*
layout
;
gchar
*
keyboard_name
;
static
gint
keyboard_serial
=
0
;
guint
keyboard_id
;
client
->
keyboard
=
eek_keyboard_new
(
layout
,
CSW
,
CSH
);
eek_keyboard_set_modifier_behavior
(
client
->
keyboard
,
EEK_MODIFIER_BEHAVIOR_LATCH
);
keyboard_name
=
g_strdup_printf
(
"keyboard%d"
,
keyboard_serial
++
);
eek_element_set_name
(
EEK_ELEMENT
(
client
->
keyboard
),
keyboard_name
);
g_free
(
keyboard_name
);
keyboard_id
=
eekboard_context_add_keyboard
(
client
->
context
,
client
->
keyboard
,
NULL
);
eekboard_context_set_keyboard
(
client
->
context
,
keyboard_id
,
NULL
);
if
(
show
)
eekboard_context_show_keyboard
(
client
->
context
,
NULL
);
return
TRUE
;
}
static
gboolean
set_xkl_keyboard
(
EekboardClient
*
client
,
gboolean
show
,
const
gchar
*
model
,
const
gchar
*
layouts
,
const
gchar
*
options
)
{
EekLayout
*
layout
;
gboolean
retval
;
if
(
client
->
keyboard
)
g_object_unref
(
client
->
keyboard
);
layout
=
eek_xkl_layout_new
();
...
...
@@ -583,22 +613,9 @@ set_keyboard (EekboardClient *client,
}
}
client
->
keyboard
=
eek_keyboard_new
(
layout
,
CSW
,
CSH
);
eek_keyboard_set_modifier_behavior
(
client
->
keyboard
,
EEK_MODIFIER_BEHAVIOR_LATCH
);
keyboard_name
=
g_strdup_printf
(
"keyboard%d"
,
keyboard_serial
++
);
eek_element_set_name
(
EEK_ELEMENT
(
client
->
keyboard
),
keyboard_name
);
g_free
(
keyboard_name
);
keyboard_id
=
eekboard_context_add_keyboard
(
client
->
context
,
client
->
keyboard
,
NULL
);
eekboard_context_set_keyboard
(
client
->
context
,
keyboard_id
,
NULL
);
if
(
show
)
eekboard_context_show_keyboard
(
client
->
context
,
NULL
);
return
TRUE
;
retval
=
set_keyboard
(
client
,
show
,
layout
);
g_object_unref
(
layout
);
return
retval
;
}
static
void
...
...
@@ -715,4 +732,31 @@ eekboard_client_disable_fakekey (EekboardClient *client)
g_signal_handler_disconnect
(
client
->
keyboard
,
client
->
key_released_handler
);
}
gboolean
eekboard_client_load_keyboard_from_file
(
EekboardClient
*
client
,
const
gchar
*
keyboard_file
)
{
GFile
*
file
;
GFileInputStream
*
input
;
GError
*
error
;
EekLayout
*
layout
;
EekKeyboard
*
keyboard
;
guint
keyboard_id
;
gboolean
retval
;
file
=
g_file_new_for_path
(
keyboard_file
);
error
=
NULL
;
input
=
g_file_read
(
file
,
NULL
,
&
error
);
if
(
input
==
NULL
)
return
FALSE
;
layout
=
eek_xml_layout_new
(
G_INPUT_STREAM
(
input
));
g_object_unref
(
input
);
retval
=
set_keyboard
(
client
,
TRUE
,
layout
);
g_object_unref
(
layout
);
return
retval
;
}
#endif
/* HAVE_FAKEKEY */
src/client.h
View file @
e6d17fa4
...
...
@@ -33,6 +33,9 @@ typedef struct _EekboardClient EekboardClient;
EekboardClient
*
eekboard_client_new
(
GDBusConnection
*
connection
);
gboolean
eekboard_client_load_keyboard_from_file
(
EekboardClient
*
client
,
const
gchar
*
file
);
gboolean
eekboard_client_set_xkl_config
(
EekboardClient
*
client
,
const
gchar
*
model
,
const
gchar
*
layouts
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment