Giter VIP home page Giter VIP logo

zipchord's Introduction

ZipChord

ZipChord demo

ZipChord allows you to seamlessly combine regular typing with chording and shorthands. Chords let you type whole words by pressing a combination of keys simultaneously. That's what stenographers do and what makes them so fast.

You don't need to learn stenotyping though. Languages obey Zipf's law, so it takes only a few dozen chords to accelerate a huge amount of all your typing. For example, just 32 unique words make up 40% of the whole text of The Lord of the Rings. So even a small number of chords with simple key combinations can make your typing faster and more comfortable.

I could not find any software that supported keyboard shortcuts of more than two keys and regular typing at the same time, so I built ZipChord to make this type of typing possible.

Features

  • Chord recognition (also known as chorded entry or chording)
  • Shorthands that expands typed abbreviations to full words
  • Customizable user dictionaries for chords and shorthands
  • Real-time hints about available shortcuts in on-screen display or tooltips
  • Automated capitalization and smart spaces around shortcuts and punctuation
  • Configurable keyboard and language settings

Documentation

Official documentation is available under the Wiki tab.

Installation

Download zipchord-install-version.zip or the stand-alone zipchord-exe-version.zip from the latest release. See the Installation page for details.

Note that ZipChord currently only works on Windows because of its dependency on AutoHotKey.

Privacy

ZipChord adheres to strict privacy and security principles, and does not send or receive any data. See more privacy details in the Wiki.

How to Use ZipChord

Please see the Wiki pages for information including how to use ZipChord, documentation for the user interface, custom dictionaries, and more.

Feedback

If you have any questions, feedback, or suggestions, please write a note in the Discussions. You can also report a bug if you run across anything that seems broken or create a feature suggestion under Issues.

zipchord's People

Contributors

danc2050 avatar healingarcyt avatar psoukie avatar sinclairgurny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

zipchord's Issues

Smart capitalization doesn't work at the start of the text

Hey!
First, just want to quickly mention that I found your project since I am interested in stenography but was looking for something easier and more practical (for a normal user). This seems to be it and I am really excited for this project and I think I will be following your updates! :)
I have tried it out today, and I am already experimenting with different chords and also the sensitivity.

Issue:

That said, I have encountered a small problem - smart punctuation works somewhat unreliably. It doesn't capitalize chords at the start of text (if there's no dot before it), and sometimes adds a space before the word. I suppose this issue could be not easy to solve though since you would somehow need to check whether it's the start of the text field or something like that. However, I believe this is quite an important feature since capitalizing the chorded word manually instead is just too inconvenient.

P.S.

Anyway, so far this is the only issue that makes the experience a bit unreliable and inconvenient, but really it's not a problem. Mostly I just wanted to greet you, express my interest in the project and share my experience so far (which other than this issue is really nice!) (And I don't know how else to contact you, since I've never really used twitter)

Support settings from command line options

Allow user to start ZipChord with specific settings (chord dictionary, language, spacing etc.) from command line using command line options.
Also allow changing settings using the command line options while the app is running.

Timing and conditions to cast a chord

Describe the bug

  • Random failures with chords casting with no space before them or timing

  • Check the pic below, green lines when the script behavior is as expected, and red ones when not (chord=es) you can notice the first seven attempts are OK. I know, there is a space before in the first testes, but they were written below normal speed.

  • Besides this, the restrict "chords while typing" option works fine for a while, then -suddenly- cast the chord. For a while I mean, like 5 min is working fine (full testing typing) and then, a couple of minutes typing/or switch application, and then, shoot the chord! I set the detection delay at 65, and is fine for a while. Maybe something needs to be clear or resetead at the end of a loop or conditional. (just an idea)
    image

Useful Details

  • Which settings do you have selected in the ZipChord settings?
    image

  • If the output is wrong, what is the sequence of keys pressed, the dictionary entry, and what text appears on the screen?

"Chord only" mode issue for Smart Punctuatio.

Hello and thank you so much for developing this tool! I use it every day and really appreciate it.

As of 1.5.2, when Smart Punctuation is set to "chord only" mode, entering a punctuation character will also enter a backspace character if the cursor has been moved.

For example, if I type "foo bar", the resulting text is "foo bar". If I move my cursor back to the end of foo and type a period, the resulting text is "fo. bar".

As another exampl, if I type "Bob and Alice", go to another windo, come back, and enter a comma, the resulting text is "Bob and Alic,.

As a third example, if I type "Hello world", then type a bang, then a space, the resulting text is "Hello world! ". If I realize I also want to add a "?", I would try to do so by hitting backspace and then "?". I would expect the resulting text to be "Hello World!?" but it ends up actually being "Hello World?".

Don't trigger chord on continued "roll"

Avoid triggering chord detection in a continued roll of several keys. Currently, chord triggers when a first key is released (if the sensitivity threshold was triggered). It is better to watch if another key won't be pressed afterwards. This will avoid some false triggers when a sequence of several keys all overlap. Example, typing "were":

W   xxxx
E     xxxx   xxx
R        xxx
-   ------------->
key         time

If the overlap of W and E is larger than the input sensitivity, and a chord for ew exists, the chord will be triggered when W is released. But because R then also overlaps a bit with E, we know it was not meant as a chord. This could allow better sensitivity for chords -- quicker chords with fewer mistakes.

Handling of #

Describe the bug
Authotkey interprets # as winkey therefore it cannot be used in the expanded text.

Chord behavior - Smart punctuation (using prefix tilde ~)

Hi there! hope you doing well!
I am using all chords with prefix mode, with the tilde ~, in order to insert my own space (meanwhile new version is released), but Smart Punctuation (chord option) is deleting last letter of the resultant word with a prefix config, e. g. dictionary file csl = casual~ is launching the right result casual -with ending space-, but if you add some punctuation (example, period <.>) script is retrieving: casua. The test is using the prefix configuration, but when just need the prefix itself is when this is happening.

I was thinking about the suggested option is just about adding this tilde symbol if some checkbox is selected at the config panel... Anyway, I hope helping you with this littler bug ๐Ÿ˜„

Open help with F1

Open documentation page at the relevant place when pressing F1 when a ZipChord window is open.

  • F1 functionality (needs switching as windows open and close, and checking for tab)
  • Small help icon in the corner of windows/tabs with a link

Depends on #80

Automatic check for updates

Add an automatic check for updates that will run periodically and notify if a newer version is available.

space at the end - suggestion

Wonderful wonderful wonderful work guys!
As a suggestion, when one is typing and chording is a custom to press the spacebar, maybe not for all people, but in the config window would be great to have a checkbox to "add or not" a space at the end of the desired string.

image

Restrict shortcuts after pressing Backspace

When deleting (part of) text using Backspace, do not allow chords (in restricted mode) and do not allow shorthands.

The reason is that the user might be editing a typo (and be resuming from the middle of a word), and not starting a new word.

A space bar or punctuation should be pressed first.

Ability to edit the last executed chord

Describe the solution or functionality you'd like
It would be nice to edit the last chord that was executed. Sometimes a certian chord triggers too many times and quick adjustments like this would be beneficial.

Table-friendly format of dictionaries

  • Allow the Tab-delimited dictionary entries to have optionally a comment in the third column.
  • If the first column is empty (line starts with Tab), treat as if shortcut was not defined

Ignore chords in the middle of a word

    thank you! It works pretty well! here is a little test: 

image

There is something could be an improvement, is about fast typing triggering a chord between the word is being typed. Maybe if the chord could be able to detect if there is an space before it, else is not a desired chord. For instance, I am typing the word centena but I have the chord ent=entonces so the script is triggering c entonces ena. Tell me if make sense to you, or maybe it happens to you as well.

This script is a great partner alongside keyboard and mouse customization!
very nice work! ๐Ÿค

Originally posted by @lmendez5 in #9 (comment)

Capitalization doesn't work after a manual space

Automatic capitalization does not work without smart spaces "After punctuation" and after manually hitting space (also where a smart space is removed after pressing an addition manual space that gets (correctly) removed).

Default dictionaries do not support extended characters

Issue: cannot output extended characters defined in expanded text.

Solution: Switch default ZipChord dictionaries to UTF-8 with BOM encoding in order to correctly support Unicode characters. Add a note to start of dictionaries (and to documentation) to say that dictionaries need to be saved as UTF-8 with BOM for extended characters to work correctly.

Workaround in the meantime: manually re-save the dictionary file as "UTF-8 with BOM"

"Shift" behavior refactoring

Currently, "Shift" combinations are treated differently. This makes it impossible to use Shift in parallel with a chord to make it uppercase manually, and it makes for a not very nice code.
Need to refactor the code to funnel Shift keys the same way, which also requires a rewrite for the punctuation, which is currently quite hacky and English-only. (See #16)

Error: "'" is not a valid key name

Hi @psoukie, I was looking for a chording solution for a long time until I found this gem!
Unfortunately, I'm getting the following error right from the start:
image

Have you ever encountered that or any idea how to handle it?
One thing worth mentioning, is that I use a special keyboard layout (BONE, a derivation of NEO), created using KbdEdit. Could this have sth. to do with it?

Btw, have you seen the CharaChorder devices? They do the same thing on a hardware level.

Customizable punctuation and capitalization (international)

Currently, the auto-capitalization is quite hacky, and English-focused only.
First, it makes narrow, language-specific assumptions about punctuation, and it capitalizes only basic Latin letters.
Need to update to support other languages, and make the punctuation rules customizable.

Abort facility not found

I have downloaded what I think is the latest version but I am not a Github expert so it may not be. What I have downloaded does not allow one to bail out if the dictionary being opened has many errors. Also, the errors may be obscure e.g. finding chords in the file which cannot be found when viewing the dictionary in a text editor (perhaps the chords have their characters in a different order). It is mentioned that if used with an NKRO keyboard Zipchord might be used to emulate steno. For this it would be necessary to load a dictionary, and to be able to find and fix errors in it.

Home-made dictionaries

If one tries to load a dictionary which has many chords that are anagrams of each other, error messages appear with no opportunity to abort the loading. One has to use the task manager to close Zipchord. Before restarting it is necessary to cut or delete the dictionary to stop Zipchord resuming the error messages.

Create default dictionaries only once

Default dictionary installation should be done only on the very first run so the default dictionaries do not get recreated later if the user deletes or renames them.

Non Chord autocomplete function

Hi, first, thank you for this amazing program!

My idea, I've been reading about Teeline shorthand and I think it could work well with Zipchord. In Teeline they shorten words by taking off vowels and extra consonants (xtr cnsnts) so if Zipchord had an autocomplete module it would speed up typing even more, I know there are programs that already do this but the one I'm using is slow to input the text which slows the typing plus I'd rather have an all-in-one program.

Thanks again!

Creating and switching "configurations"

A configuration should be a bundle of settings for chord detection and output together with chord dictionary and locale settings (keyboard layout and punctuation rules) that can be saved and switched between them.

Custom language keyboard layouts

I have updated the script to allow definition of custom keys within the dictionary file.
To use it, put a "custom_keys" and then a Tab (as usual) and a list of all the characters that can be typed (without Shift or any modifier keys) somewhere in the dictionary file.

For example, in English QWERTY (already included by default), it could be as follows, separated with TAB:

custom_keys	qwertyuiop[]asdfghjkl;'zxcvbnm,./

Originally posted by @psoukie in #9 (comment)

Shorthands Implementation

This issue tracks implementation of #47

Needed Features

  • Recognize and replace typed text shortcuts
  • UI support for selecting and editing the shorthands file
  • Chords and shorthands can be independently turned on and off
  • Enable auto-capitalization when using shorthands
  • Allow typing prefixes and suffixes with shorthands
  • Use OpeningSpace and create EndingSpace() to make behavior consistent with chords Not implemented because it did not make sense for shorthands
  • Observe output delay for shorthands
  • Add detection option for shorthands to fire without space or punctuation
  • Check for duplicate shorthands in a dictionary
  • #79
  • Build default shorthands dictionary from the most frequent 5,000 English words

In the future, it would be good to also:

  • Enable support for dead keys in shorthands. (It's still possible to create shorthands, just skip the dead keys in the shortcut definition.)
  • Allow (some?) punctuation in a shorthand shortcut for affixes

Shortcut Hints OSD Implementation

Tracks the progress on implementing #50

  • Programming logic (dictionaries with reverse lookup, settings and detection)
  • Build UI (OSD window and options for enabling)
  • Graphical representation of Shift and Space in the shortcuts
  • Improve hint visuals (fixed-width font, square-enclosed basic characters)
  • Modify so that dictionary.Add method adds the new shortcut to reverse dictionary
  • UI option to show hints for chords, shorthands, both, or nothing. It instead shows the ones that are enabled on Dictionaries tab

Chords not working

Describe the bug

  • A short description of the bug. some chords do not work
  • What happens, and what do you expect to happen instead? if i do the possible or give chord for example (psbl and gv) it just doesn't do the chord

Useful Details

  • Which settings do you have selected in the ZipChord settings? Default
  • If the output is wrong, what is the sequence of keys pressed, the dictionary entry, and what text appears on the screen? psbl, shorthands english, psbl

New UI for defining (and checking) chords and shorthands with a keyboard shortcut

Expand the existing functionality (defining chords for the selected text / copied into clipboard with held Ctrl+C) by creating a dialog box that allows editing of the expanded word or text as well as the shortcut; and saving it either into a chord or a shortcut dictionary.

It could also act as an editor to change the existing shortcut -- but that's trickier, and might deserve a separate issue if I cannot get it done in the first pass.

Localization Support

Enable localization of ZipChord's UI by creating a separate string file that allows adding translations, and UI that allows changing languages.

mirroring

I read something about mirroring to deal with different words having the same chord, but I have not been able to find it again. Has it been removed?

Exiting zipchord

If I restart the computer (Windows 10) Zipchord continues to provide chords, although there is no access to the menu or to the addition of chords. Zipchord does not appear in the task manager nor as an icon. How can one clear Zipchord from the computer?

Automatically infer keys for language settings from keyboard layouts

Currently, user has to manually create a list of all keys that are used in a given language keyboard layout. (When using keyboards with keys different from English US.)

This information could be extracted from Windows keyboard settings and used to populate the list of keys.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.