Add eekboard-inscript.
This commit is contained in:
@ -1 +1,8 @@
|
||||
EXTRA_DIST = gen-inscript-keyboard.py
|
||||
bin_SCRIPTS = eekboard-inscript
|
||||
keyboarddir = $(pkgdatadir)/keyboards
|
||||
dist_keyboard_DATA = inscript2.xml
|
||||
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