Giter VIP home page Giter VIP logo

stenotutor's Introduction

Copyright 2013 Emanuele Caruso. See LICENSE.txt for details.

StenoTutor - Learn to stenotype

With StenoTutor you can learn to stenotype on your QWERTY keyboard, also thanks to Plover, an open source application which transforms your QWERTY keyboard in a stenograph, while still mantaining full control over your operating system.

StenoTutor is a free software available for GNU/Linux, Windows and Mac (not tested on Mac, please let me know if it works), and requires a recent Java runtime installed and Plover 2.4.x installed and running. It is coded in Processing IDE 2.x.

StenoTutor tries to be a smart trainer: words that takes you longer to type have more possibilites of showing up, so you will spend most of your time working on your weaknesses. It also allows to blacklist some words, in case you don't have a NKRO keyboard yet and you just want to see if you enjoy steno and how well you speed up, without being annoyed by words that your keyboard cannot actually type without rolling or arpeggiating chords.

Lessons have been initially copied from a similar project called Fly.

The StenoTutor application was initially developed and published by Emanuele Caruso.

Installation

  • Make sure the a recent version of Java is installed
  • Download the repository zip file in a directory of your choice.
  • Extract the folder corresponding to your system on your hard drive. For example, if you use Linux 32-bit, extract the folder named "application.linux32/". You can optionally rename the folder.
  • Optionally tweak data/session.properties to customize the lesson.
  • Run Plover (it must be version 2.4+). It must be running and enabled to properly capture its translated output.
  1. Linux - Make "StenoTutor" script executable, either on command line (chmod +x StenoTutor) or by right-clicking it and changing file permissions. Finally, run StenoTutor either from command line (./StenoTutor) or by double-clicking it.

  2. Windows 64 bit - Double-click StenoTutor.bat (if the window is too little, exiting and then running it again should work)

  3. Windows 32 bit - Double-click StenoTutor.exe (if the window is too little, quitting and then running it again should work)

  4. Mac - Follow readme.txt

Features

  • Smart word selection, slower-typed words show up more often.
  • Optional basic Word dictation via speech synthesis, can be enabled in data/session.properties.
  • Speech syntesis powered stats and new level announcements, can be disabled.
  • QWERTY/steno on-screen keyboard, with next chord highlighting (currently only monochrome and only shows first chord for words that require multiple strokes). You can disable on-screen keyboard, querty keys and next chord highlighting.
  • Blacklist specific words (press CONTROL to blacklist the current word), which is saved on disk at each new addition.
  • Pause/resume current lesson with TAB key. You can resume with any key or chord, and the stroke will be printed in the input buffer.
  • Display: next chord, next word, input buffer, input chord, current word last-x-average wpm, session wpm, level, timer, total unlocked words, worst word and worst word WPM.
  • Incremental word presentation: you can configure how many words to show at the beginning of the lession, how many to add at each level up, minimum average WPM to level up, minimum single word average WPM to level up, how many of the latest samples to use for word average WPM calculation and word start average WPM.
  • There is no leveling down, StenoTutor will always make sure that you mainly work on the words that currently put you into trouble, which are usually the new ones.
  • Custom lessons can be created in "data/lesson/" directory.
  • Session parameters can be customized in "data/session.properties".
  • Errors must be manually deleted by the student with '*' key. This allows StenoTutor to provide an experience more similar to real world typing.
  • Option to pre-compute and show multiple words at a time, to provide a typing experience similar to many online multiplayer typing games and more similar to real world typing. It is configurable. It defaults to multiple words per line.
  • Dynamically show next line words as they are created to allow for a better typing flow at the end of lines

Known Bugs

  • Next chord highlighting currently shows only first chord for words that require multiple strokes.
  • There is no check for the completion of the lesson dictionary, so there are no greetings yet and there may be errors too.

Planned Features and Future Enhancements

  • Color coded highlighting of next chord.
  • Change lesson format to something more convenient, eg: Plover dictionary format
  • Show alternative definitions from Plover dictionary and common words category dictionary as discussed here: https://groups.google.com/d/msg/ploversteno/XUZezyNPgM0/28wsJfqqLrUJ
  • Histogram mode as discussed here: https://groups.google.com/d/msg/ploversteno/pFTYmNDPYSs/bQk2Pe-2CJUJ
  • Alphabet/Chord training mode (also for punctuation, special keys, shorcuts)
  • Run StenoTutor commands from input buffer
  • GUI interface, eg: buttons and/or menus
  • Add a command to repeat current word with text-to-speech
  • Option to save session progress between different sessions
  • Sentence training mode
  • More options to show/hide the various info and features
  • Save session statistics in txt files
  • Accuracy recording, including average session accuracy, accuracy level up limits, average accuracy per word and a mixed speed/accuracy based word selection
  • Global high score system support (a promising free high-scores framework is [https://github.com/openkit])
  • Font colors and GUI colors configuration file
  • Show worst 5 words and their average WPM

How to build StenoTutor (for developers)

If you want to modify and rebuild StenoTutor, you just have to download and install the Processing IDE and extract the whole StenoTutor repository to your Documents/Processing folder (or you can get it with git) Then you will be able to open it in from Processing: File -> Sketchbook -> StenoTutor. Or you can find it with File -> Open. Ctrl-R -> play sketch (compiles and opens StenoTutor) Ctrl-E -> export application (updates application.xxx folders for the various OSs)

You can also probably use your favorite editor. For example, Processing plugins exist for Emacs and Sublime text editors. In the future, it may be needed or just convenient to refactor StenoTutor to a standard Java project (while still using Processing framework and libraries)

Changelog

Version 0.1.4

  • Fixed two bugs which caused OutOfMemory error
  • Text-to-speech sounds now never overlap, so they can be left all active

Version 0.1.3

  • Fixed backspace bug on GNU/Linux 64 bit at the start of the lesson

Version 0.1.2

  • Backspace now deletes a character when it's pressed rather than released
  • Characters are now detected on key press rather than key release

Version 0.1.1

  • Fixed #1

Version 0.1.0

  • Added on-screen keyboard with next chord highligthing. You can optionally disable on-screen keyboard, querty keys and next chord highlighting.
  • Added optional text-to-speech word dictation, can be enabled in data/session.properties. Default: disabled.
  • Dynamically show next line words as they are created to allow for a better typing flow at the end of lines
  • Lot of refactored code, now it's much more readable.

Version 0.0.5

  • Word blacklisting is now disabled if the lesson is paused, because that caused issues on word stats

Version 0.0.4

  • Fixed bug: did not correctly import some lesson files
  • Added lesson on long vowels provided by Daniel Langlois

Version 0.0.3

  • Added speech synthesis capability. Currently, new levels and session WPM are announced periodically. All this is fine tunable in session.properties.
  • Added pause/resume current lesson with TAB key. You can resume with any key or chord, and the stroke will be printed in the input buffer.
  • Input is now directly taken from Plover standard output.
  • Fixed bug: word backlisting was not working properly with multiple words per line.
  • Fixed bug: unlocked and total words count didn't take blacklist words into account.

Version 0.0.2

  • Show one target word at a time or fill the line and complete it. You can configure this in session.properties, property name session.isSingleWordBuffer

Version 0.0.1

  • Smart word selection, slower-typed words show up more often.
  • Blacklist specific words (press CONTROL to blacklist the current word), which is saved on disk at each new addition.
  • Display: next chord, next word, input buffer, input chord, current word last-x-average wpm, session wpm, level, timer, total unlocked words, worst word and worst word WPM.
  • Incremental word presentation: you can configure how many words to show at the beginning of the lession, how many to add at each level up, minimum average WPM to level up, minimum single word average WPM to level up, how many of the latest samples to use for word average WPM calculation and word start average WPM.
  • There is no leveling down, StenoTutor will always make sure that you mainly work on the words that currently put you into trouble, which are usually the new ones.
  • Custom lessons can be created in "data/lesson/" directory.
  • Session parameters can be customized in "data/session.properties".
  • Errors must be manually deleted by the student with '*' key. This allows StenoTutor to provide an experience more similar to real world typing.

stenotutor's People

Contributors

caru avatar danlanglois 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

stenotutor's Issues

Auto capitalization and 'Mr.'

A problem: first, StenoTutor offered me to type 'Mr.'. I did. Then I have to type 'them'. I type THEPL, but instead of 'them' I get 'Them'. At this point I'm stuck, because StenoTutor doesn't accept it as valid answer and I don't know how to prevent auto-capitalization...

Lesson format

Of course, I've mentioned the lesson format as an issue, but the simplest change here, I think, would be just to enable the use of phrases, in the 'les' files. I'm not particularly beholden to the idea of having separate 'les' and 'chd' files, as you know. But, just to enable the use of phrases, might be a matter of merely commenting out the use of a " " separator. Is that here?:

// Read and store words
try {
  Reader reader = new FileReader(lesDictionaryFilePath);
  lesReader = new BufferedReader(reader);
  while ((tempLine = lesReader.readLine()) != null) {
    if (tempLine.length() != 0 && tempLine.charAt(0) == '<' || tempLine.trim().length() == 0) continue;
    String[] newWords = tempLine.split(" ");   
    for (String word : newWords) {
      words.add(word);
    }
  }
} 

This is from Utils.pde. And, as it's reading the .les dictionary file, I imagine that this line could be commented out:

    String[] newWords = tempLine.split(" ");

If this works as expected, then it will break some of the .les files (under data / lessons), because each word/phrase entry would need to be one its own line. However, this is a straightforward editing task, and, indeed, I can accomplish it.

You may, I suppose, be planning a more radical change to the lesson format, so I'll touch base?

Also, I contributed 'longVowels.les', and 'longVowels.chd', and I now have four more progressively more advanced files to be added to 'longVowels' (so, really, eight, because there's a 'les', and a 'chd'). These files have 200 words each. I'm fiddling with using smaller file-sizes, though, even as small as 20 words. In any case, I'm continuing to add to my personal pile of instructional material, I anticipate that I'll wind up with much more, as I am mastering steno theory as I go.

"Mr" and "Mrs" items need a dot

The item "Mr" and the item "Mrs" come up in StenoTutor, but Plover writes these as "Mr." and "Mrs." (notice the dot afterwards). So, these do not work without some file editing.

Not working well on OS X anymore?

Even with the chmod +x, the OS X app fails instantly claiming it is "damaged" and should be thrown away. That seems to be Gatekeeper, and can be disabled/bypassed, but the app also just doesn't do anything on 10.9. There's a menu for StenoTutor, but no window is created and nothing ever happens. I don't have the tools to hand to try to rebuild this or otherwise investigate.

Having trouble with StenoTutor Windows 32-bit

I built a Win7 32-bit netbook expressly for using StenoTutor and ran into a problem. After loading the latest release of Java (v8 update 45) I tried running the program ("StenoTutor.exe") and got an error "C:\ProgramData\Oracle\Java\javapath\javaw.exe Unspecified Error" followed by a window with the text "Processing Error: Error calling ShellExecuteEx()".

StenoTutor runs fine on my Linux and Win7 64-bit machines -- I've tried uninstalling/reinstalling Java, no luck; I've run the .exe under admin rights, no good; I've started StenoTutor while located in the Java "bin" directory (in case it was some path error) but still the same error messages.

Any idea what might be wrong? Thanks! - Dave

Feature: Keep score

End the lesson after 1 minute and record the wpm. This way the user has a messure on how much he is improving. This is a very nice metric to keep motivated.

"Into" item hint is wrong

On the "into" item, the hint shows me that I must press "EUT", but this is incorrect. The steno for "into" is "TPHAO".

Not registering input

I am running windows 8 64 bit. StenoTutor opens fine for me (both the 32 and 64 bit versions). It also registers normal keystrokes correctly with plover open but stopped. However, once I start plover running it stops registering any input except, strangely enough, *. Plover works fine in other programs (text editor, browser, etc). Any ideas on what could be causing this?

Feature request: mode with onscreen keyboard showing only after mistake

The problem: onscreen keyboard is way too intrusive, it prevents me from memorizing keys. But if I turn it off sometimes I can't figure out chords. So, here is a feature request to show onscreen keyboard with chord positions only and only if the chord was wrong. Let the user figure out it first and show it only if a mistake was made.

Second, please, please, please add saving current session!!! It's incredibly annoying to start anew every time. Right now I'm considering installing another OS in VirtualBox to suspend running session and thus save it...

Stenotutor crashes when unlocking final words

using StenoTutor 0.1.4 on Windows7 64bit

Stenotutor crashes with IndexOutOfBoundException when unlocking final words and (i think) when words exist less than incrementWords.

Notably, beating vowels.les leads to crash when unlocking the final 2 words.

bug

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.