From ba11dcdf6014be025091d7f2a973a0ee797e1b1d Mon Sep 17 00:00:00 2001 From: Shuhei Iitsuka Date: Wed, 12 Sep 2018 15:44:04 +0900 Subject: [PATCH] Refresh CLI output by input. Change-Id: I3257d418e3af3d668d17d2c16e1bd7ec9d2b01ea --- mozc-nazoru/bin/nazoru-input | 20 ++++++++++++++------ mozc-nazoru/src/nazoru/core.py | 2 +- mozc-nazoru/src/nazoru/keyboard_recorder.py | 5 +++++ mozc-nazoru/src/nazoru/utils.py | 6 ++++++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/mozc-nazoru/bin/nazoru-input b/mozc-nazoru/bin/nazoru-input index 9fc0418..e2f6fef 100755 --- a/mozc-nazoru/bin/nazoru-input +++ b/mozc-nazoru/bin/nazoru-input @@ -31,8 +31,10 @@ LED_CHASSIS.off() import argparse import os +import unicodedata from nazoru import get_default_graph_path -from nazoru.core import create_keyboard_recorder, Bluetooth, NazoruPredictor +from nazoru.core import ( + create_keyboard_recorder, Bluetooth, NazoruPredictor, clear_screen) def main(): FLAGS = None @@ -60,7 +62,7 @@ def main(): LED_BLUE.blink(1) LED_CHASSIS.set_brightness(5) - print('Ready. Please input your scrrible.') + print('Ready. Please scrrible on your keyboard.') while True: data, command = recorder.record() if command is not None: @@ -86,13 +88,19 @@ def main(): LED_RED.off() LED_CHASSIS.set_brightness(5) - print('\n=== RESULTS ===') + clear_screen() + print('\n===== RESULTS =====') for item in result: - print(u'%s (%s): %.5f' % (item[0], item[1], item[2])) - print('===============\n') + if unicodedata.east_asian_width(item[0]) in {'W', 'F'}: + surface = item[0] + else: + surface = item[0] + ' ' + print(u'%s (%4s): %.5f' % (surface, item[1], item[2])) + print('===================\n') most_likely_result = result[0] - print(u'%s (%s)' % (most_likely_result[0], most_likely_result[1])) + print(u'prediction: %s (%s)' % ( + most_likely_result[0], most_likely_result[1])) bt_connection.send(most_likely_result[1]) if __name__ == '__main__': diff --git a/mozc-nazoru/src/nazoru/core.py b/mozc-nazoru/src/nazoru/core.py index dd4e55a..821c811 100644 --- a/mozc-nazoru/src/nazoru/core.py +++ b/mozc-nazoru/src/nazoru/core.py @@ -23,4 +23,4 @@ from .nazorunet import nazorunet from .nazorunet import Conv from .nazorunet import DepthSepConv from .predictor import NazoruPredictor - +from .utils import clear_screen diff --git a/mozc-nazoru/src/nazoru/keyboard_recorder.py b/mozc-nazoru/src/nazoru/keyboard_recorder.py index ea64aef..5be9d02 100644 --- a/mozc-nazoru/src/nazoru/keyboard_recorder.py +++ b/mozc-nazoru/src/nazoru/keyboard_recorder.py @@ -23,6 +23,7 @@ import os import struct import sys import termios +from .utils import clear_screen try: import evdev @@ -130,10 +131,12 @@ class KeyboardRecorderFromConsole(KeyboardRecorder): if not recording: recording = True start_time = datetime.datetime.now() + clear_screen() elapsed_time = now - start_time elapsed_ms = int(elapsed_time.total_seconds() * 1000) last_time = now data.append((key, elapsed_ms)) + sys.stdout.write('%s\r' % (' '.join(datum[0] for datum in data))) self.log(key, elapsed_ms) if last_time and (now - last_time).total_seconds() > wait_seconds: break @@ -260,6 +263,8 @@ class KeyboardRecorderFromEvdev(KeyboardRecorder): start_time = now elapsed_ms = int((now - start_time).total_seconds() * 1000) data.append((self.KEYS[event.code], elapsed_ms)) + clear_screen() + sys.stdout.write('%s\r' % (' '.join(datum[0] for datum in data))) return (data, None) InputSource = Enum('InputSource', 'EVDEV CONSOLE') diff --git a/mozc-nazoru/src/nazoru/utils.py b/mozc-nazoru/src/nazoru/utils.py index e7ec122..97a1b41 100644 --- a/mozc-nazoru/src/nazoru/utils.py +++ b/mozc-nazoru/src/nazoru/utils.py @@ -15,6 +15,7 @@ # limitations under the License. import time +import sys class Measure(): def __init__(self, tag): @@ -26,3 +27,8 @@ class Measure(): def __exit__(self, type, value, traceback): now = time.time() print('[{0}] {1} ms'.format(self._tag, (now - self._start)*1E3)) + +def clear_screen(): + sys.stdout.write('\033[2J') + sys.stdout.write('\033[H') + sys.stdout.flush()