diff --git a/configure.ac b/configure.ac index c9d842d2..e86906c6 100644 --- a/configure.ac +++ b/configure.ac @@ -267,7 +267,6 @@ data/icons/scalable/Makefile data/themes/Makefile data/keyboards/Makefile examples/Makefile -examples/eekxml/Makefile examples/simple-client/Makefile eek/eek-${EEK_API_VERSION}.pc eek/eek-gtk-${EEK_API_VERSION}.pc diff --git a/examples/Makefile.am b/examples/Makefile.am index deb702a6..3165c622 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1 +1 @@ -SUBDIRS = eekxml simple-client +SUBDIRS = simple-client diff --git a/examples/eekxml/Makefile.am b/examples/eekxml/Makefile.am deleted file mode 100644 index 19271e8e..00000000 --- a/examples/eekxml/Makefile.am +++ /dev/null @@ -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)'!' $< > $@ diff --git a/examples/eekxml/eekxml.in b/examples/eekxml/eekxml.in deleted file mode 100644 index de160093..00000000 --- a/examples/eekxml/eekxml.in +++ /dev/null @@ -1,128 +0,0 @@ -#!@PYTHON@ -# -*- python -*- -# Copyright (C) 2011 Daiki Ueno -# 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 -# . - -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) diff --git a/examples/eekxml/mim2remap.el b/examples/eekxml/mim2remap.el deleted file mode 100644 index 4a74a7eb..00000000 --- a/examples/eekxml/mim2remap.el +++ /dev/null @@ -1,174 +0,0 @@ -;; mim2remap.el -- generate eekxml remap file from m17n MIM file -;; Copyright (C) 2011 Daiki Ueno -;; 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 -;; . - -;;; 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