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