From 9254692511c38e82e1c617006f9f121f5e6446a8 Mon Sep 17 00:00:00 2001 From: doman Date: Thu, 10 Feb 2022 16:45:10 +0100 Subject: [PATCH] 1.4.1 - unclutter backspace --- README.md | 4 ++++ fasttyper/__main__.py | 13 ++++++++++--- fasttyper/listener.py | 11 +++++++++-- setup.cfg | 2 +- setup.py | 2 +- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fcac1bd..c0806cf 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,10 @@ You can use another similar projects set of words as well, for example to create To exit you can either finish test, use `KeyboardInterrupt` (CTRL+C) or tap **tab** then **enter**. After you finish test, there will be summary printed, use enter to exit from it. +# When backspace does wierd shiet + +Some terminal emulators send different values for key presses of backspace and ctrl+backspace. To fix it, simply add `b` flag to `python3 -m fasttyper`. + ## Example scripts ```sh diff --git a/fasttyper/__main__.py b/fasttyper/__main__.py index d1652cc..8250bd3 100644 --- a/fasttyper/__main__.py +++ b/fasttyper/__main__.py @@ -19,7 +19,7 @@ import argparse import json -def initialize(configmap, rbuffer): +def initialize(configmap, rbuffer, backspace_debug): config = Config(configmap) reference_buffer = Buffer(rbuffer) @@ -32,7 +32,7 @@ def initialize(configmap, rbuffer): reference_text = ReferenceText(config, text_box) stats_component = StatsComponent(config) - listener = Listener() + listener = Listener(backspace_debug) application = Application(listener, user_buffer, reference_buffer, config) interface = Interface( @@ -67,6 +67,13 @@ def main(): help="configuration file", default="~/.config/fasttyper/config.json", ) + parser.add_argument( + "--unclutter-backspace", + "-b", + action="store_true", + help="unclutter backspace, when it raises ctrl+backspace instead", + default=False, + ) args = parser.parse_args() if is_tty: @@ -86,7 +93,7 @@ def main(): except FileNotFoundError: configmap = {} - initialize(configmap, rbuffer) + initialize(configmap, rbuffer, args.unclutter_backspace) if __name__ == "__main__": diff --git a/fasttyper/listener.py b/fasttyper/listener.py index 45e8b74..323b979 100644 --- a/fasttyper/listener.py +++ b/fasttyper/listener.py @@ -12,8 +12,9 @@ class Action(enum.Enum): class Listener: - def __init__(self): + def __init__(self, backspace_debug=False): self.tabbed = False + self.backspace_debug = backspace_debug def handle_key(self, key): action = Action.invalid @@ -22,12 +23,18 @@ class Listener: self.tabbed = True elif key == "\n" and self.tabbed: raise StoppingSignal(silent=True) + elif self.backspace_debug and key == chr(8): + action = Action.del_word + self.tabbed = False + elif key == 263 and self.backspace_debug: + action = Action.del_char + self.tabbed = False elif key == 263: action = Action.del_word self.tabbed = False elif isinstance(key, int): self.tabbed = False - elif key == chr(127): + elif key in chr(127): action = Action.del_char self.tabbed = False elif key == " ": diff --git a/setup.cfg b/setup.cfg index 54b39fa..1cd8fec 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.4.0 +current_version = 1.4.1 [wheel] universal = 1 diff --git a/setup.py b/setup.py index 8cd65af..942e97f 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh: setup( name="fasttyper", - version="1.4.0", + version="1.4.1", author="Piotr Domanski", author_email="pi.domanski@gmail.com", description="Minimalistic typing exercise",