Remove eekxml.
This commit is contained in:
		@ -267,7 +267,6 @@ data/icons/scalable/Makefile
 | 
				
			|||||||
data/themes/Makefile
 | 
					data/themes/Makefile
 | 
				
			||||||
data/keyboards/Makefile
 | 
					data/keyboards/Makefile
 | 
				
			||||||
examples/Makefile
 | 
					examples/Makefile
 | 
				
			||||||
examples/eekxml/Makefile
 | 
					 | 
				
			||||||
examples/simple-client/Makefile
 | 
					examples/simple-client/Makefile
 | 
				
			||||||
eek/eek-${EEK_API_VERSION}.pc
 | 
					eek/eek-${EEK_API_VERSION}.pc
 | 
				
			||||||
eek/eek-gtk-${EEK_API_VERSION}.pc
 | 
					eek/eek-gtk-${EEK_API_VERSION}.pc
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
SUBDIRS = eekxml simple-client
 | 
					SUBDIRS = simple-client
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
bin_SCRIPTS = eekxml
 | 
					 | 
				
			||||||
EXTRA_DIST = eekxml.in mim2remap.el
 | 
					 | 
				
			||||||
DISTCLEANFILES = eekxml
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eekxml: eekxml.in
 | 
					 | 
				
			||||||
	$(AM_V_GEN) sed '1s!@''PYTHON@!'$(PYTHON)'!' $< > $@
 | 
					 | 
				
			||||||
@ -1,128 +0,0 @@
 | 
				
			|||||||
#!@PYTHON@
 | 
					 | 
				
			||||||
# -*- python -*-
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
# Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This program 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
 | 
					 | 
				
			||||||
# General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with this program.  If not, see
 | 
					 | 
				
			||||||
# <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import argparse
 | 
					 | 
				
			||||||
import json
 | 
					 | 
				
			||||||
from gi.repository import GLib, Gtk, Eek, EekXkl, EekGtk, Gio
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DEFAULT_WIDTH = 640
 | 
					 | 
				
			||||||
DEFAULT_HEIGHT = 480
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# XXX: level3 shift is not supported yet in remap files
 | 
					 | 
				
			||||||
def remap(keyboard, mapping):
 | 
					 | 
				
			||||||
    def __each_key(element, data):
 | 
					 | 
				
			||||||
        matrix = element.get_symbol_matrix()
 | 
					 | 
				
			||||||
        for level in xrange(matrix.num_levels):
 | 
					 | 
				
			||||||
            symbol = matrix.get_symbol(0, level)
 | 
					 | 
				
			||||||
            if isinstance(symbol, Eek.Keysym):
 | 
					 | 
				
			||||||
                mapped = data.get(symbol.get_name(), None)
 | 
					 | 
				
			||||||
                if mapped:
 | 
					 | 
				
			||||||
                    if mapped.has_key('xkeysym'):
 | 
					 | 
				
			||||||
                        replace = Eek.Keysym.new(mapped['xkeysym'])
 | 
					 | 
				
			||||||
                    elif mapped.has_key('text'):
 | 
					 | 
				
			||||||
                        replace = Eek.Text.new(mapped['text'])
 | 
					 | 
				
			||||||
                    else:
 | 
					 | 
				
			||||||
                        replace = Eek.Symbol.new(mapped['name'])
 | 
					 | 
				
			||||||
                        replace.set_category(Eek.SymbolCategory.LETTER)
 | 
					 | 
				
			||||||
                    replace.set_name(symbol.get_name())
 | 
					 | 
				
			||||||
                    if mapped.has_key('label'):
 | 
					 | 
				
			||||||
                        replace.set_label(mapped['label'])
 | 
					 | 
				
			||||||
                    if mapped.has_key('category'):
 | 
					 | 
				
			||||||
                        cat = Eek.symbol_category_from_name(mapped['category'])
 | 
					 | 
				
			||||||
                        replace.set_category(cat)
 | 
					 | 
				
			||||||
                    matrix.set_symbol(0, level, replace)
 | 
					 | 
				
			||||||
    def __each_section(element, data):
 | 
					 | 
				
			||||||
        element.foreach_child(__each_key, data)
 | 
					 | 
				
			||||||
    keyboard.foreach_child(__each_section, mapping)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def create_keyboard(args):
 | 
					 | 
				
			||||||
    if args.file:
 | 
					 | 
				
			||||||
        _file = Gio.file_new_for_path(args.file)
 | 
					 | 
				
			||||||
        layout = Eek.XmlLayout.new(_file.read(None))
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        layout = EekXkl.Layout.new()
 | 
					 | 
				
			||||||
        if args.model:
 | 
					 | 
				
			||||||
            layout.set_model(args.model)
 | 
					 | 
				
			||||||
        if args.layout:
 | 
					 | 
				
			||||||
            layout.set_layouts(args.layout)
 | 
					 | 
				
			||||||
        if args.variant:
 | 
					 | 
				
			||||||
            layout.set_variants(args.variant)
 | 
					 | 
				
			||||||
        if args.option:
 | 
					 | 
				
			||||||
            layout.set_options(args.option)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    keyboard = Eek.Keyboard.new(layout, DEFAULT_WIDTH, DEFAULT_HEIGHT)
 | 
					 | 
				
			||||||
    if args.remap_file:
 | 
					 | 
				
			||||||
        with open(args.remap_file) as remap_file:
 | 
					 | 
				
			||||||
            mapping = json.load(remap_file)
 | 
					 | 
				
			||||||
            remap(keyboard, mapping)
 | 
					 | 
				
			||||||
    return keyboard
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
def show(args):
 | 
					 | 
				
			||||||
    keyboard = create_keyboard(args)
 | 
					 | 
				
			||||||
    keyboard.set_modifier_behavior(Eek.ModifierBehavior.LATCH)
 | 
					 | 
				
			||||||
    widget = EekGtk.Keyboard.new(keyboard)
 | 
					 | 
				
			||||||
    if args.theme:
 | 
					 | 
				
			||||||
        theme = Eek.Theme.new(args.theme, None, None)
 | 
					 | 
				
			||||||
        widget.set_theme(theme)
 | 
					 | 
				
			||||||
    window = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
 | 
					 | 
				
			||||||
    bounds = keyboard.get_bounds()
 | 
					 | 
				
			||||||
    window.set_default_size(bounds.width, bounds.height)
 | 
					 | 
				
			||||||
    window.connect('destroy', lambda *args: Gtk.main_quit())
 | 
					 | 
				
			||||||
    window.add(widget)
 | 
					 | 
				
			||||||
    window.show_all()
 | 
					 | 
				
			||||||
    Gtk.main()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def dump(args):
 | 
					 | 
				
			||||||
    keyboard = create_keyboard(args)
 | 
					 | 
				
			||||||
    output = GLib.String()
 | 
					 | 
				
			||||||
    keyboard.output(output, 0)
 | 
					 | 
				
			||||||
    print output.str
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add a simple function to print usage, for the 'help' command
 | 
					 | 
				
			||||||
def usage(args, parser):
 | 
					 | 
				
			||||||
    parser.print_help()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def parse_cmdline():
 | 
					 | 
				
			||||||
    parser = argparse.ArgumentParser(
 | 
					 | 
				
			||||||
        description='manipulate XML files used by eekboard')
 | 
					 | 
				
			||||||
    subparsers = parser.add_subparsers(help='sub-command help')
 | 
					 | 
				
			||||||
    parser_help = subparsers.add_parser('help', help = 'show usage')
 | 
					 | 
				
			||||||
    parser_help.set_defaults(command = lambda args: usage(args, parser=parser))
 | 
					 | 
				
			||||||
    parser_common = subparsers.add_parser('common', add_help=False)
 | 
					 | 
				
			||||||
    parser_common.add_argument('--model', help='specify XKB model')
 | 
					 | 
				
			||||||
    parser_common.add_argument('--layout', help='specify XKB layout')
 | 
					 | 
				
			||||||
    parser_common.add_argument('--variant', help='specify XKB variant')
 | 
					 | 
				
			||||||
    parser_common.add_argument('--option', help='specify XKB option')
 | 
					 | 
				
			||||||
    parser_common.add_argument('--file', help='specify XML layout file')
 | 
					 | 
				
			||||||
    parser_common.add_argument('--remap-file', help='remap keysyms with the file')
 | 
					 | 
				
			||||||
    parser_show = subparsers.add_parser('show',
 | 
					 | 
				
			||||||
                                        help='show help',
 | 
					 | 
				
			||||||
                                        parents=[parser_common])
 | 
					 | 
				
			||||||
    parser_show.add_argument('--theme', help='use the theme file')
 | 
					 | 
				
			||||||
    parser_show.add_argument('--group', help='switch to the given group')
 | 
					 | 
				
			||||||
    parser_show.set_defaults(command = show)
 | 
					 | 
				
			||||||
    parser_dump = subparsers.add_parser('dump',
 | 
					 | 
				
			||||||
                                        help='dump help',
 | 
					 | 
				
			||||||
                                        parents=[parser_common])
 | 
					 | 
				
			||||||
    parser_dump.set_defaults(command = dump)
 | 
					 | 
				
			||||||
    return parser.parse_args()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					 | 
				
			||||||
    args = parse_cmdline()
 | 
					 | 
				
			||||||
    args.command(args)
 | 
					 | 
				
			||||||
@ -1,174 +0,0 @@
 | 
				
			|||||||
;; mim2remap.el -- generate eekxml remap file from m17n MIM file
 | 
					 | 
				
			||||||
;; Copyright (C) 2011 Daiki Ueno <ueno@unixuser.org>
 | 
					 | 
				
			||||||
;; Copyright (C) 2011 Red Hat, Inc.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
;; it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
;; the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
;; (at your option) any later version.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; This program 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
 | 
					 | 
				
			||||||
;; General Public License for more details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
;; along with this program.  If not, see
 | 
					 | 
				
			||||||
;; <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;;; Commentary:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; emacs -Q -batch -l mim2remap.el -f batch-mim2remap \
 | 
					 | 
				
			||||||
;;	/usr/share/m17n/te-inscript.mim trans
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;;; Code:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(require 'json)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defconst mim2remap--char-to-keyname-alist
 | 
					 | 
				
			||||||
  '((32 . "space")
 | 
					 | 
				
			||||||
    (33 . "exclam")
 | 
					 | 
				
			||||||
    (34 . "quotedbl")
 | 
					 | 
				
			||||||
    (35 . "numbersign")
 | 
					 | 
				
			||||||
    (36 . "dollar")
 | 
					 | 
				
			||||||
    (37 . "percent")
 | 
					 | 
				
			||||||
    (38 . "ampersand")
 | 
					 | 
				
			||||||
    (39 . "apostrophe")
 | 
					 | 
				
			||||||
    (40 . "parenleft")
 | 
					 | 
				
			||||||
    (41 . "parenright")
 | 
					 | 
				
			||||||
    (42 . "asterisk")
 | 
					 | 
				
			||||||
    (43 . "plus")
 | 
					 | 
				
			||||||
    (44 . "comma")
 | 
					 | 
				
			||||||
    (45 . "minus")
 | 
					 | 
				
			||||||
    (46 . "period")
 | 
					 | 
				
			||||||
    (47 . "slash")
 | 
					 | 
				
			||||||
    (48 . "0")
 | 
					 | 
				
			||||||
    (49 . "1")
 | 
					 | 
				
			||||||
    (50 . "2")
 | 
					 | 
				
			||||||
    (51 . "3")
 | 
					 | 
				
			||||||
    (52 . "4")
 | 
					 | 
				
			||||||
    (53 . "5")
 | 
					 | 
				
			||||||
    (54 . "6")
 | 
					 | 
				
			||||||
    (55 . "7")
 | 
					 | 
				
			||||||
    (56 . "8")
 | 
					 | 
				
			||||||
    (57 . "9")
 | 
					 | 
				
			||||||
    (58 . "colon")
 | 
					 | 
				
			||||||
    (59 . "semicolon")
 | 
					 | 
				
			||||||
    (60 . "less")
 | 
					 | 
				
			||||||
    (61 . "equal")
 | 
					 | 
				
			||||||
    (62 . "greater")
 | 
					 | 
				
			||||||
    (63 . "question")
 | 
					 | 
				
			||||||
    (64 . "at")
 | 
					 | 
				
			||||||
    (65 . "A")
 | 
					 | 
				
			||||||
    (66 . "B")
 | 
					 | 
				
			||||||
    (67 . "C")
 | 
					 | 
				
			||||||
    (68 . "D")
 | 
					 | 
				
			||||||
    (69 . "E")
 | 
					 | 
				
			||||||
    (70 . "F")
 | 
					 | 
				
			||||||
    (71 . "G")
 | 
					 | 
				
			||||||
    (72 . "H")
 | 
					 | 
				
			||||||
    (73 . "I")
 | 
					 | 
				
			||||||
    (74 . "J")
 | 
					 | 
				
			||||||
    (75 . "K")
 | 
					 | 
				
			||||||
    (76 . "L")
 | 
					 | 
				
			||||||
    (77 . "M")
 | 
					 | 
				
			||||||
    (78 . "N")
 | 
					 | 
				
			||||||
    (79 . "O")
 | 
					 | 
				
			||||||
    (80 . "P")
 | 
					 | 
				
			||||||
    (81 . "Q")
 | 
					 | 
				
			||||||
    (82 . "R")
 | 
					 | 
				
			||||||
    (83 . "S")
 | 
					 | 
				
			||||||
    (84 . "T")
 | 
					 | 
				
			||||||
    (85 . "U")
 | 
					 | 
				
			||||||
    (86 . "V")
 | 
					 | 
				
			||||||
    (87 . "W")
 | 
					 | 
				
			||||||
    (88 . "X")
 | 
					 | 
				
			||||||
    (89 . "Y")
 | 
					 | 
				
			||||||
    (90 . "Z")
 | 
					 | 
				
			||||||
    (91 . "bracketleft")
 | 
					 | 
				
			||||||
    (92 . "backslash")
 | 
					 | 
				
			||||||
    (93 . "bracketright")
 | 
					 | 
				
			||||||
    (94 . "asciicircum")
 | 
					 | 
				
			||||||
    (95 . "underscore")
 | 
					 | 
				
			||||||
    (96 . "grave")
 | 
					 | 
				
			||||||
    (97 . "a")
 | 
					 | 
				
			||||||
    (98 . "b")
 | 
					 | 
				
			||||||
    (99 . "c")
 | 
					 | 
				
			||||||
    (100 . "d")
 | 
					 | 
				
			||||||
    (101 . "e")
 | 
					 | 
				
			||||||
    (102 . "f")
 | 
					 | 
				
			||||||
    (103 . "g")
 | 
					 | 
				
			||||||
    (104 . "h")
 | 
					 | 
				
			||||||
    (105 . "i")
 | 
					 | 
				
			||||||
    (106 . "j")
 | 
					 | 
				
			||||||
    (107 . "k")
 | 
					 | 
				
			||||||
    (108 . "l")
 | 
					 | 
				
			||||||
    (109 . "m")
 | 
					 | 
				
			||||||
    (110 . "n")
 | 
					 | 
				
			||||||
    (111 . "o")
 | 
					 | 
				
			||||||
    (112 . "p")
 | 
					 | 
				
			||||||
    (113 . "q")
 | 
					 | 
				
			||||||
    (114 . "r")
 | 
					 | 
				
			||||||
    (115 . "s")
 | 
					 | 
				
			||||||
    (116 . "t")
 | 
					 | 
				
			||||||
    (117 . "u")
 | 
					 | 
				
			||||||
    (118 . "v")
 | 
					 | 
				
			||||||
    (119 . "w")
 | 
					 | 
				
			||||||
    (120 . "x")
 | 
					 | 
				
			||||||
    (121 . "y")
 | 
					 | 
				
			||||||
    (122 . "z")
 | 
					 | 
				
			||||||
    (123 . "braceleft")
 | 
					 | 
				
			||||||
    (124 . "bar")
 | 
					 | 
				
			||||||
    (125 . "braceright")
 | 
					 | 
				
			||||||
    (126 . "asciitilde")))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun mim2remap--char-to-keyname (char)
 | 
					 | 
				
			||||||
  (let ((entry (assq char mim2remap--char-to-keyname-alist)))
 | 
					 | 
				
			||||||
    (if entry
 | 
					 | 
				
			||||||
	(cdr entry))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun mim2remap (file map)
 | 
					 | 
				
			||||||
  (with-current-buffer (find-file-noselect file)
 | 
					 | 
				
			||||||
    (let (sexp)
 | 
					 | 
				
			||||||
      (goto-char (point-min))
 | 
					 | 
				
			||||||
      (while (and (null sexp) (not (eobp)))
 | 
					 | 
				
			||||||
	(setq sexp (read (current-buffer)))
 | 
					 | 
				
			||||||
	(if (eq (car sexp) 'map)
 | 
					 | 
				
			||||||
	    (setq sexp (cdr sexp))
 | 
					 | 
				
			||||||
	  (setq sexp nil)))
 | 
					 | 
				
			||||||
      (if sexp
 | 
					 | 
				
			||||||
	  (setq sexp (assq map sexp)))
 | 
					 | 
				
			||||||
      (unless sexp
 | 
					 | 
				
			||||||
	(error "No map named %S in %s" map file))
 | 
					 | 
				
			||||||
      (json-encode
 | 
					 | 
				
			||||||
       (mapcar
 | 
					 | 
				
			||||||
	(lambda (entry)
 | 
					 | 
				
			||||||
	  (let ((from (car entry))
 | 
					 | 
				
			||||||
		(to (car (cdr entry))))
 | 
					 | 
				
			||||||
	    (cons (if (listp from)
 | 
					 | 
				
			||||||
		      (car from)
 | 
					 | 
				
			||||||
		    (or (mim2remap--char-to-keyname (aref from 0))
 | 
					 | 
				
			||||||
			(error "No keyname for %c" (aref from 0))))
 | 
					 | 
				
			||||||
		  (list (cons :text (if (characterp to)
 | 
					 | 
				
			||||||
					(char-to-string to)
 | 
					 | 
				
			||||||
				      (if (and (symbolp to)
 | 
					 | 
				
			||||||
					       (string-match
 | 
					 | 
				
			||||||
						"\\`0x\\([0-9A-Fa-f]+\\)"
 | 
					 | 
				
			||||||
						(symbol-name to)))
 | 
					 | 
				
			||||||
					  (char-to-string (string-to-number
 | 
					 | 
				
			||||||
							   (match-string
 | 
					 | 
				
			||||||
							    1
 | 
					 | 
				
			||||||
							    (symbol-name to))
 | 
					 | 
				
			||||||
							   16))
 | 
					 | 
				
			||||||
					to)))
 | 
					 | 
				
			||||||
			(cons :category 'letter)))))
 | 
					 | 
				
			||||||
	(cdr sexp))))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(defun batch-mim2remap ()
 | 
					 | 
				
			||||||
  (interactive)
 | 
					 | 
				
			||||||
  (let ((file (car command-line-args-left))
 | 
					 | 
				
			||||||
	(map (car (cdr command-line-args-left))))
 | 
					 | 
				
			||||||
    (princ (mim2remap file (intern map)))
 | 
					 | 
				
			||||||
    (setq command-line-args-left (nthcdr 2 command-line-args-left))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;;; mim2remap.el ends here
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user