cwtool

command module
v0.0.0-...-19311e0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2023 License: MIT Imports: 4 Imported by: 0

README

cwtool for Morse code learning by M5NCW

cwtool is a command line program to help you learn and practice Morse code.

Morse code is often known as Carrier Wave or CW hence the name cwtool - a tool for generating CW.

It has 4 main modes which are described below:

  • cwtool keymorse - play keystrokes from all applications as Morse code (Linux only)
  • cwtool ncwtester - measure your reaction times when decoding Morse code
  • cwtool play - play Morse code from the command line or a file
  • cwtool rss - turn an RSS feed into Morse code

Installation

cwtool is a self contained binary. It needs no installation. Just download it and run it.

Download the relevant binary from

Or alternatively if you have Go installed use

  • go get github.com/ncw/cwtool

and this will build the binary in $GOPATH/bin.

Or if you want to hack on the source code, use git to clone the repository then go build to build the code from within that directory.

License

This is free software under the terms of MIT the license (check the LICENSE file).

Contact and support

The project website is at:

https://github.com/ncw/cwtool

There you can file bug reports, ask for help or contribute patches.

Authors

Command docs

Here is the full documentation for each command of the cwtool.

cwtool

Show help for cwtool commands.

Synopsis

Cwtool provides a suite of Morse code tools.

Options
  -h, --help      help for cwtool
  -v, --verbose   Verbose debugging
SEE ALSO

cwtool completion

Generate the autocompletion script for the specified shell

Synopsis

Generate the autocompletion script for cwtool for the specified shell. See each sub-command's help for details on how to use the generated script.

Options
  -h, --help   help for completion
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO

cwtool keymorse

Snoop on all keypresses and turn into Morse code

Synopsis

This command listens to all key presses from all applications and turns them into Morse code.

It only runs on Linux at the moment.

It is intended as an aid for learning Morse code, or possibly an assistive aid.

NB it will echo sensitive things such as passwords as Morse code so beware if using in a public setting.

Since it snoops key presses from all applications, it requires root privileges. It will use sudo to start a key listener subprocess as root so expect a sudo prompt. It will not work unless sudo is installed.

It will listen to all keyboards it finds (technically input devices with an A button!).

Use --wpm to set the words per minute of the Morse code generated.

For example to play all keypresses at 30 WPM

cwtool keymorse --wpm 30
cwtool keymorse [flags]
Options
  -c, --channels int       channels to generate (default 1)
      --farnsworth float   Increase character spacing to match this WPM
      --frequency float    HZ of Morse (default 600)
  -h, --help               help for keymorse
      --out string         WAV file for output instead of speaker
  -s, --samplerate int     sample rate in samples/s (default 8000)
      --wpm float          WPM to send at (default 25)
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO
  • cwtool - Show help for cwtool commands.

cwtool ncwtester

See how your Morse receiving is going

Synopsis

This measures and keep track of your Morse code learning progress.

It sends Morse characters for you to receive and times how quickly you receive each one.

It can send a group of characters and you can select which characters are sent.

The statistics show the 50%/75%/90% percentile timings.

After a round it complete it will show the cumulative statistics.

It is configured with command line flags.

All stats are stored in the file specified by --log for analysis.

Setting --group can send multiple characters at once - it waits for them all to be received before carrying on.

cwtool ncwtester [flags]
Options
  -c, --channels int       channels to generate (default 1)
      --cutoff duration    If set, ignore stats older than this
      --farnsworth float   Increase character spacing to match this WPM
      --frequency float    HZ of Morse (default 600)
      --group int          Send letters in groups this big (default 1)
  -h, --help               help for ncwtester
      --letters string     Letters to test (default "abcdefghijklmnopqrstuvwxyz0123456789.=/,?")
      --log string         CSV file to log attempts (default "ncwtesterstats.csv")
      --out string         WAV file for output instead of speaker
  -s, --samplerate int     sample rate in samples/s (default 8000)
      --wpm float          WPM to send at (default 25)
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO
  • cwtool - Show help for cwtool commands.

cwtool play

Play Morse code from the command line or file

Synopsis

This plays Morse code from the command line or from a file with the --file flag or from stdin with the --stdin flag.

cwtool play [flags]
Options
  -c, --channels int       channels to generate (default 1)
      --farnsworth float   Increase character spacing to match this WPM
      --file string        File to play Morse from (optional)
      --frequency float    HZ of Morse (default 600)
  -h, --help               help for play
      --out string         WAV file for output instead of speaker
  -s, --samplerate int     sample rate in samples/s (default 8000)
      --stdin              If set play Morse from stdin
      --wpm float          WPM to send at (default 25)
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO
  • cwtool - Show help for cwtool commands.

cwtool rss

Fetch RSS and turn into Morse code

Synopsis

This fetches an RSS feed parses it and plays the items as Morse code.

Here are some examples of RSS feeds which can be passed to the --url flag. These are easy to find - just search for the name of the publication + RSS.

http://feeds.bbci.co.uk/news/uk/rss.xml
http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml
http://rss.cnn.com/rss/cnn_topstories.rss
https://news.ycombinator.com/rss
http://feeds.wired.com/wired/index

Most RSS, Atom and JSON feed types are supported.

The following info is played from the feed. BT is the Morse prosign.

  • Title BT
  • Description of feed BT (if --description is used)

Then for each item

  • NR # BT (# is a number starting from 1 and incrementing)
  • Title of item BT
  • Description of item BT (if --description is used)

This plays the title of the RSS feed and then the titles of each item in the feed.

Use --description to add the descriptions of each link in as well as their titles.

For example to play the BBC UK News to a file at 20 WPM but with 8 WPM Farnsworth spacing:

cwtool rss -v --url http://feeds.bbci.co.uk/news/uk/rss.xml --wpm 20 --farnsworth 8 --out bbc.wav
cwtool rss [flags]
Options
  -c, --channels int       channels to generate (default 1)
      --description        If set add the description too
      --farnsworth float   Increase character spacing to match this WPM
      --frequency float    HZ of Morse (default 600)
  -h, --help               help for rss
      --out string         WAV file for output instead of speaker
  -s, --samplerate int     sample rate in samples/s (default 8000)
      --url string         URL to fetch RSS from
      --wpm float          WPM to send at (default 25)
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO
  • cwtool - Show help for cwtool commands.

cwtool completion bash

Generate the autocompletion script for bash

Synopsis

Generate the autocompletion script for the bash shell.

This script depends on the 'bash-completion' package. If it is not installed already, you can install it via your OS's package manager.

To load completions in your current shell session:

source <(cwtool completion bash)

To load completions for every new session, execute once:

Linux:
cwtool completion bash > /etc/bash_completion.d/cwtool
macOS:
cwtool completion bash > $(brew --prefix)/etc/bash_completion.d/cwtool

You will need to start a new shell for this setup to take effect.

cwtool completion bash
Options
  -h, --help              help for bash
      --no-descriptions   disable completion descriptions
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO

cwtool completion fish

Generate the autocompletion script for fish

Synopsis

Generate the autocompletion script for the fish shell.

To load completions in your current shell session:

cwtool completion fish | source

To load completions for every new session, execute once:

cwtool completion fish > ~/.config/fish/completions/cwtool.fish

You will need to start a new shell for this setup to take effect.

cwtool completion fish [flags]
Options
  -h, --help              help for fish
      --no-descriptions   disable completion descriptions
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO

cwtool completion powershell

Generate the autocompletion script for powershell

Synopsis

Generate the autocompletion script for powershell.

To load completions in your current shell session:

cwtool completion powershell | Out-String | Invoke-Expression

To load completions for every new session, add the output of the above command to your powershell profile.

cwtool completion powershell [flags]
Options
  -h, --help              help for powershell
      --no-descriptions   disable completion descriptions
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO

cwtool completion zsh

Generate the autocompletion script for zsh

Synopsis

Generate the autocompletion script for the zsh shell.

If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once:

echo "autoload -U compinit; compinit" >> ~/.zshrc

To load completions in your current shell session:

source <(cwtool completion zsh)

To load completions for every new session, execute once:

Linux:
cwtool completion zsh > "${fpath[1]}/_cwtool"
macOS:
cwtool completion zsh > $(brew --prefix)/share/zsh/site-functions/_cwtool

You will need to start a new shell for this setup to take effect.

cwtool completion zsh [flags]
Options
  -h, --help              help for zsh
      --no-descriptions   disable completion descriptions
Options inherited from parent commands
  -v, --verbose   Verbose debugging
SEE ALSO

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
all
cwflags
Package cwflags configures a CW player from the flags
Package cwflags configures a CW player from the flags
gendocs
Package gendocs provides the gendocs command.
Package gendocs provides the gendocs command.
keymorse
Input device event monitor.
Input device event monitor.
rss
Package cw describes the implementation of CW generators and players
Package cw describes the implementation of CW generators and players
Package cwgenerator implements a Morse code player to an io.Reader interface
Package cwgenerator implements a Morse code player to an io.Reader interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL