Add eekboard-inscript.
This commit is contained in:
@ -1 +1,8 @@
|
|||||||
|
bin_SCRIPTS = eekboard-inscript
|
||||||
|
keyboarddir = $(pkgdatadir)/keyboards
|
||||||
|
dist_keyboard_DATA = inscript2.xml
|
||||||
EXTRA_DIST = gen-inscript-keyboard.py
|
EXTRA_DIST = gen-inscript-keyboard.py
|
||||||
|
|
||||||
|
eekboard-inscript: eekboard-inscript.in
|
||||||
|
$(AM_V_GEN) sed 's!@EEKBOARD_INSCRIPT_PATH@!'$(pkgdatadir)/keyboards/inscript2.xml'!' < $< > $@
|
||||||
|
|
||||||
|
|||||||
107
examples/eekboard-inscript.in
Normal file
107
examples/eekboard-inscript.in
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
|
||||||
|
# Copyright (C) 2011 Red Hat, Inc.
|
||||||
|
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2 of
|
||||||
|
# the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
# This library is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
# 02110-1301 USA
|
||||||
|
|
||||||
|
import eekboard, virtkey
|
||||||
|
|
||||||
|
GROUPS = (
|
||||||
|
"as-inscript2",
|
||||||
|
"bn-inscript2",
|
||||||
|
"brx-inscript2-deva",
|
||||||
|
"doi-inscript2-deva",
|
||||||
|
"gu-inscript2",
|
||||||
|
"hi-inscript2",
|
||||||
|
"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 InscriptKeyboard(object):
|
||||||
|
def __init__(self, client_name, path):
|
||||||
|
self.__keyboard = eekboard.XmlKeyboard(path,
|
||||||
|
eekboard.MODIFIER_BEHAVIOR_LATCH)
|
||||||
|
self.__eekboard = eekboard.Eekboard()
|
||||||
|
self.__context = self.__eekboard.create_context(client_name)
|
||||||
|
keyboard_id = self.__context.add_keyboard(self.__keyboard)
|
||||||
|
self.__context.set_keyboard(keyboard_id)
|
||||||
|
self.__keyboard.connect('key-pressed', self.__key_pressed_cb)
|
||||||
|
self.__keyboard.connect('key-released', self.__key_released_cb)
|
||||||
|
self.__virtkey = virtkey.virtkey()
|
||||||
|
|
||||||
|
def enable(self):
|
||||||
|
self.__eekboard.push_context(self.__context)
|
||||||
|
|
||||||
|
def disable(self):
|
||||||
|
self.__eekboard.pop_context(self.__context)
|
||||||
|
|
||||||
|
def show(self):
|
||||||
|
self.__context.show_keyboard()
|
||||||
|
|
||||||
|
def set_group(self, group):
|
||||||
|
self.__context.set_group(group)
|
||||||
|
|
||||||
|
def __key_pressed_cb(self, keyboard, key):
|
||||||
|
symbol = key.get_symbol()
|
||||||
|
if isinstance(symbol, eekboard.Keysym):
|
||||||
|
xkeysym = symbol.get_xkeysym()
|
||||||
|
self.__virtkey.press_keysym(xkeysym)
|
||||||
|
|
||||||
|
def __key_released_cb(self, keyboard, key):
|
||||||
|
symbol = key.get_symbol()
|
||||||
|
if isinstance(symbol, eekboard.Keysym):
|
||||||
|
xkeysym = symbol.get_xkeysym()
|
||||||
|
self.__virtkey.release_keysym(xkeysym)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import gtk
|
||||||
|
from optparse import OptionParser
|
||||||
|
import sys
|
||||||
|
|
||||||
|
parser = OptionParser()
|
||||||
|
parser.add_option("-n", "--name=LANGCODE", dest="langcode",
|
||||||
|
help="Specify language code to LANGCODE",
|
||||||
|
metavar="LANGCODE")
|
||||||
|
(options, args) = parser.parse_args()
|
||||||
|
group = 0
|
||||||
|
if options.langcode:
|
||||||
|
group = None
|
||||||
|
for index, langcode in enumerate(GROUPS):
|
||||||
|
if langcode.startswith(options.langcode):
|
||||||
|
group = index
|
||||||
|
if group is None:
|
||||||
|
print >> sys.stderr, "Unknown langcode %s" % options.langcode
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
inscript = InscriptKeyboard("eekboard-inscript", "@EEKBOARD_INSCRIPT_PATH@")
|
||||||
|
inscript.set_group(group)
|
||||||
|
inscript.enable()
|
||||||
|
inscript.show()
|
||||||
|
gtk.main()
|
||||||
7070
examples/inscript2.xml
Normal file
7070
examples/inscript2.xml
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user