Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dorota Czaplejewicz
squeekboard
Commits
5763ed20
Commit
5763ed20
authored
Mar 21, 2012
by
Daiki Ueno
Browse files
Remove eekxml.
parent
7eead1c1
Changes
5
Hide whitespace changes
Inline
Side-by-side
configure.ac
View file @
5763ed20
...
...
@@ -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
...
...
examples/Makefile.am
View file @
5763ed20
SUBDIRS
=
eekxml
simple-client
SUBDIRS
=
simple-client
examples/eekxml/Makefile.am
deleted
100644 → 0
View file @
7eead1c1
bin_SCRIPTS
=
eekxml
EXTRA_DIST
=
eekxml.in mim2remap.el
DISTCLEANFILES
=
eekxml
eekxml
:
eekxml.in
$(AM_V_GEN)
sed
'1s!@''PYTHON@!'
$(PYTHON)
'!'
$<
>
$@
examples/eekxml/eekxml.in
deleted
100644 → 0
View file @
7eead1c1
#!@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
)
examples/eekxml/mim2remap.el
deleted
100644 → 0
View file @
7eead1c1
;; 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
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment