summaryrefslogtreecommitdiff
path: root/lulua
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2019-09-21 11:02:06 +0200
committerLars-Dominik Braun <lars@6xq.net>2019-09-21 11:02:06 +0200
commitcf0c56e14529a47f54daa62e2e6a9ab0e76c6d12 (patch)
tree1d006ad7758aef96dab2402465a9961125a33cf1 /lulua
parentbdaeaa553c949e4f544f96560ed64b63d18a47b2 (diff)
downloadlulua-cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12.tar.gz
lulua-cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12.tar.bz2
lulua-cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12.zip
Consolidate command line utils
Diffstat (limited to 'lulua')
-rw-r--r--lulua/layout.py20
-rw-r--r--lulua/plot.py16
-rw-r--r--lulua/stats.py33
3 files changed, 43 insertions, 26 deletions
diff --git a/lulua/layout.py b/lulua/layout.py
index 05a6083..5e021fe 100644
--- a/lulua/layout.py
+++ b/lulua/layout.py
@@ -18,7 +18,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-import sys, re, unicodedata, copy
+import sys, re, unicodedata, copy, argparse, logging
from enum import IntEnum, unique
from collections import defaultdict, namedtuple
from itertools import chain
@@ -343,9 +343,21 @@ class GenericLayout:
defaultLayouts = YamlLoader ('data/layouts', GenericLayout.deserialize)
-def importKlc ():
- with open (sys.argv[1], 'r', encoding='utf16') as fd:
- layers, layerSwitches = Layout.fromKlc (fd)
+def importKlc (args):
+ with open (args.input, 'r', encoding='utf16') as fd:
+ layers, layerSwitches = GenericLayout.fromKlc (fd)
data = {'name': None, 'layout': [{'layer': l, 'modifier': [list (x) for x in layerSwitches[i]]} for i, l in enumerate (layers)]}
yaml.dump (data, sys.stdout)
+def importFrom ():
+ parser = argparse.ArgumentParser(description='Import keyboard layouts.')
+ parser.add_argument('input', metavar='FILE', help='Input file')
+ subparsers = parser.add_subparsers()
+ sp = subparsers.add_parser('klc', help='Import from Microsoft Keyboard Layout creator')
+ sp.set_defaults (func=importKlc)
+
+ logging.basicConfig (level=logging.INFO)
+ args = parser.parse_args()
+
+ return args.func (args)
+
diff --git a/lulua/plot.py b/lulua/plot.py
index 2cd7759..2a7d678 100644
--- a/lulua/plot.py
+++ b/lulua/plot.py
@@ -128,19 +128,3 @@ def triadfreq (args):
return 0
-def plot ():
- plotKinds = {
- 'letterfreq': letterfreq,
- 'triadfreq': triadfreq,
- }
-
- parser = argparse.ArgumentParser (description='Plot stuff')
- parser.add_argument('-l', '--layout', metavar='LAYOUT', help='Keyboard layout name')
- parser.add_argument('kind', type=lambda x: plotKinds[x])
-
- args = parser.parse_args()
-
- logging.basicConfig (level=logging.INFO)
-
- return args.kind (args)
-
diff --git a/lulua/stats.py b/lulua/stats.py
index 3efa1c0..fc2b202 100644
--- a/lulua/stats.py
+++ b/lulua/stats.py
@@ -18,7 +18,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
-import sys, operator, pickle
+import sys, operator, pickle, argparse, logging
from operator import itemgetter
from itertools import chain, groupby, product
from collections import defaultdict
@@ -27,6 +27,7 @@ from .layout import *
from .keyboard import defaultKeyboards
from .writer import SkipEvent, Writer
from .carpalx import Carpalx, model01 as cmodel01
+from .plot import letterfreq, triadfreq
def updateDictOp (a, b, op):
""" Update dict a by adding items from b using op """
@@ -164,8 +165,8 @@ def unpickleAll (fd):
except EOFError:
break
-def combine ():
- keyboard = defaultKeyboards['ibmpc105']
+def combine (args):
+ keyboard = defaultKeyboards[args.keyboard]
layout = defaultLayouts['null'].specialize (keyboard)
w = Writer (layout)
combined = dict ((cls.name, cls(w)) for cls in allStats)
@@ -174,11 +175,11 @@ def combine ():
combined[s.name].update (r[s.name])
pickle.dump (combined, sys.stdout.buffer, pickle.HIGHEST_PROTOCOL)
-def pretty ():
+def pretty (args):
stats = pickle.load (sys.stdin.buffer)
- keyboard = defaultKeyboards['ibmpc105']
- layout = defaultLayouts[sys.argv[1]].specialize (keyboard)
+ keyboard = defaultKeyboards[args.keyboard]
+ layout = defaultLayouts[args.layout].specialize (keyboard)
writer = Writer (layout)
buttonPresses = sum (stats['simple'].buttons.values ())
@@ -220,3 +221,23 @@ def pretty ():
effort.addTriads (stats['triads'].triads)
print ('total effort (carpalx)', effort.effort)
+def main ():
+ parser = argparse.ArgumentParser(description='Process statistics files.')
+ parser.add_argument('-l', '--layout', metavar='LAYOUT', help='Keyboard layout name')
+ parser.add_argument('-k', '--keyboard', metavar='KEYBOARD',
+ default='ibmpc105', help='Physical keyboard name')
+ subparsers = parser.add_subparsers()
+ sp = subparsers.add_parser('pretty')
+ sp.set_defaults (func=pretty)
+ sp = subparsers.add_parser('combine')
+ sp.set_defaults (func=combine)
+ sp = subparsers.add_parser('letterfreq')
+ sp.set_defaults (func=letterfreq)
+ sp = subparsers.add_parser('triadfreq')
+ sp.set_defaults (func=triadfreq)
+
+ logging.basicConfig (level=logging.INFO)
+ args = parser.parse_args()
+
+ return args.func (args)
+