{"id":17723779,"url":"https://github.com/ncw/cwtool","last_synced_at":"2025-03-31T13:42:56.355Z","repository":{"id":140294293,"uuid":"593565775","full_name":"ncw/cwtool","owner":"ncw","description":"Morse Code / CW testing and tools","archived":false,"fork":false,"pushed_at":"2023-05-19T12:03:54.000Z","size":1541,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T22:47:19.524Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ncw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-26T10:27:25.000Z","updated_at":"2023-05-19T11:35:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"7313664a-0e67-4ad2-a934-8e7a4f4d81bc","html_url":"https://github.com/ncw/cwtool","commit_stats":null,"previous_names":["ncw/cwtool"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncw%2Fcwtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncw%2Fcwtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncw%2Fcwtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncw%2Fcwtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ncw","download_url":"https://codeload.github.com/ncw/cwtool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246475934,"owners_count":20783758,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-25T15:44:00.834Z","updated_at":"2025-03-31T13:42:56.322Z","avatar_url":"https://github.com/ncw.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cwtool for Morse code learning by M5NCW\n\n`cwtool` is a command line program to help you learn and practice Morse code.\n\nMorse code is often known as Carrier Wave or CW hence the name\n`cwtool` - a tool for generating CW.\n\nIt has 4 main modes which are described below:\n\n- [cwtool keymorse](#cwtool-keymorse) - play keystrokes from all applications as Morse code (Linux only)\n- [cwtool ncwtester](#cwtool-ncwtester) - measure your reaction times when decoding Morse code\n- [cwtool play](#cwtool-play) - play Morse code from the command line or a file\n- [cwtool rss](#cwtool-rss) - turn an RSS feed into Morse code\n\n## Installation\n\n`cwtool` is a self contained binary. It needs no installation. Just\ndownload it and run it.\n\nDownload the relevant binary from\n\n- https://github.com/ncw/cwtool/releases\n\nOr alternatively if you have Go installed use\n\n- `go get github.com/ncw/cwtool`\n\nand this will build the binary in `$GOPATH/bin`.\n\nOr if you want to hack on the source code, use `git` to clone the\nrepository then `go build` to build the code from within that\ndirectory.\n\n## License\n\nThis is free software under the terms of MIT the license (check the [LICENSE](LICENSE) file).\n\n## Contact and support\n\nThe project website is at:\n\nhttps://github.com/ncw/cwtool\n\nThere you can file bug reports, ask for help or contribute patches.\n\n## Authors\n\n- Nick Craig-Wood M5NCW nick@craig-wood.com\n\n# Command docs\n\nHere is the full documentation for each command of the cwtool.\n\n\u003c!-- auto generated from here on --\u003e\n\n## cwtool\n\nShow help for cwtool commands.\n\n### Synopsis\n\n\nCwtool provides a suite of Morse code tools.\n\n\n### Options\n\n```\n  -h, --help      help for cwtool\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool completion](#cwtool-completion)\t - Generate the autocompletion script for the specified shell\n* [cwtool keymorse](#cwtool-keymorse)\t - Snoop on all keypresses and turn into Morse code\n* [cwtool ncwtester](#cwtool-ncwtester)\t - See how your Morse receiving is going\n* [cwtool play](#cwtool-play)\t - Play Morse code from the command line or file\n* [cwtool rss](#cwtool-rss)\t - Fetch RSS and turn into Morse code\n\n\n## cwtool completion\n\nGenerate the autocompletion script for the specified shell\n\n### Synopsis\n\nGenerate the autocompletion script for cwtool for the specified shell.\nSee each sub-command's help for details on how to use the generated script.\n\n\n### Options\n\n```\n  -h, --help   help for completion\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool](#cwtool)\t - Show help for cwtool commands.\n* [cwtool completion bash](#cwtool-completion-bash)\t - Generate the autocompletion script for bash\n* [cwtool completion fish](#cwtool-completion-fish)\t - Generate the autocompletion script for fish\n* [cwtool completion powershell](#cwtool-completion-powershell)\t - Generate the autocompletion script for powershell\n* [cwtool completion zsh](#cwtool-completion-zsh)\t - Generate the autocompletion script for zsh\n\n\n## cwtool keymorse\n\nSnoop on all keypresses and turn into Morse code\n\n### Synopsis\n\n\n\nThis command listens to all key presses from all applications and\nturns them into Morse code.\n\nIt only runs on Linux at the moment.\n\nIt is intended as an aid for learning Morse code, or possibly an\nassistive aid.\n\n**NB** it will echo sensitive things such as passwords as Morse code\nso beware if using in a public setting.\n\nSince it snoops key presses from all applications, it requires root\nprivileges. It will use `sudo` to start a key listener subprocess as\nroot so expect a `sudo` prompt. It will not work unless `sudo` is\ninstalled.\n\nIt will listen to all keyboards it finds (technically input devices\nwith an `A` button!).\n\nUse `--wpm` to set the words per minute of the Morse code generated.\n\nFor example to play all keypresses at 30 WPM\n\n    cwtool keymorse --wpm 30\n\n\n\n```\ncwtool keymorse [flags]\n```\n\n### Options\n\n```\n  -c, --channels int       channels to generate (default 1)\n      --farnsworth float   Increase character spacing to match this WPM\n      --frequency float    HZ of Morse (default 600)\n  -h, --help               help for keymorse\n      --out string         WAV file for output instead of speaker\n  -s, --samplerate int     sample rate in samples/s (default 8000)\n      --wpm float          WPM to send at (default 25)\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool](#cwtool)\t - Show help for cwtool commands.\n\n\n## cwtool ncwtester\n\nSee how your Morse receiving is going\n\n### Synopsis\n\n\nThis measures and keep track of your Morse code learning progress.\n\nIt sends Morse characters for you to receive and times how quickly you\nreceive each one.\n\nIt can send a group of characters and you can select which characters\nare sent.\n\nThe statistics show the 50%/75%/90% percentile timings.\n\nAfter a round it complete it will show the cumulative statistics.\n\nIt is configured with command line flags.\n\nAll stats are stored in the file specified by `--log` for analysis.\n\nSetting `--group` can send multiple characters at once - it waits for\nthem all to be received before carrying on.\n\n\n```\ncwtool ncwtester [flags]\n```\n\n### Options\n\n```\n  -c, --channels int       channels to generate (default 1)\n      --cutoff duration    If set, ignore stats older than this\n      --farnsworth float   Increase character spacing to match this WPM\n      --frequency float    HZ of Morse (default 600)\n      --group int          Send letters in groups this big (default 1)\n  -h, --help               help for ncwtester\n      --letters string     Letters to test (default \"abcdefghijklmnopqrstuvwxyz0123456789.=/,?\")\n      --log string         CSV file to log attempts (default \"ncwtesterstats.csv\")\n      --out string         WAV file for output instead of speaker\n  -s, --samplerate int     sample rate in samples/s (default 8000)\n      --wpm float          WPM to send at (default 25)\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool](#cwtool)\t - Show help for cwtool commands.\n\n\n## cwtool play\n\nPlay Morse code from the command line or file\n\n### Synopsis\n\n\n\nThis plays Morse code from the command line or from a file with the\n`--file` flag or from stdin with the `--stdin` flag.\n\n\n\n```\ncwtool play [flags]\n```\n\n### Options\n\n```\n  -c, --channels int       channels to generate (default 1)\n      --farnsworth float   Increase character spacing to match this WPM\n      --file string        File to play Morse from (optional)\n      --frequency float    HZ of Morse (default 600)\n  -h, --help               help for play\n      --out string         WAV file for output instead of speaker\n  -s, --samplerate int     sample rate in samples/s (default 8000)\n      --stdin              If set play Morse from stdin\n      --wpm float          WPM to send at (default 25)\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool](#cwtool)\t - Show help for cwtool commands.\n\n\n## cwtool rss\n\nFetch RSS and turn into Morse code\n\n### Synopsis\n\n\n\nThis fetches an RSS feed parses it and plays the items as Morse code.\n\nHere are some examples of RSS feeds which can be passed to the `--url`\nflag. These are easy to find - just search for the name of the\npublication + RSS.\n\n    http://feeds.bbci.co.uk/news/uk/rss.xml\n    http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml\n    http://rss.cnn.com/rss/cnn_topstories.rss\n    https://news.ycombinator.com/rss\n    http://feeds.wired.com/wired/index\n\nMost RSS, Atom and JSON feed types are supported.\n\nThe following info is played from the feed. `BT` is the Morse prosign.\n\n- Title `BT`\n- Description of feed `BT` (if `--description` is used)\n\nThen for each item\n\n- NR # `BT` (# is a number starting from 1 and incrementing)\n- Title of item `BT`\n- Description of item `BT` (if `--description` is used)\n\nThis plays the title of the RSS feed and then the titles of each item\nin the feed.\n\nUse `--description` to add the descriptions of each link in as well as\ntheir titles.\n\nFor example to play the BBC UK News to a file at 20 WPM but with 8 WPM\nFarnsworth spacing:\n\n    cwtool rss -v --url http://feeds.bbci.co.uk/news/uk/rss.xml --wpm 20 --farnsworth 8 --out bbc.wav\n\n\n\n```\ncwtool rss [flags]\n```\n\n### Options\n\n```\n  -c, --channels int       channels to generate (default 1)\n      --description        If set add the description too\n      --farnsworth float   Increase character spacing to match this WPM\n      --frequency float    HZ of Morse (default 600)\n  -h, --help               help for rss\n      --out string         WAV file for output instead of speaker\n  -s, --samplerate int     sample rate in samples/s (default 8000)\n      --url string         URL to fetch RSS from\n      --wpm float          WPM to send at (default 25)\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool](#cwtool)\t - Show help for cwtool commands.\n\n\n## cwtool completion bash\n\nGenerate the autocompletion script for bash\n\n### Synopsis\n\nGenerate the autocompletion script for the bash shell.\n\nThis script depends on the 'bash-completion' package.\nIf it is not installed already, you can install it via your OS's package manager.\n\nTo load completions in your current shell session:\n\n\tsource \u003c(cwtool completion bash)\n\nTo load completions for every new session, execute once:\n\n#### Linux:\n\n\tcwtool completion bash \u003e /etc/bash_completion.d/cwtool\n\n#### macOS:\n\n\tcwtool completion bash \u003e $(brew --prefix)/etc/bash_completion.d/cwtool\n\nYou will need to start a new shell for this setup to take effect.\n\n\n```\ncwtool completion bash\n```\n\n### Options\n\n```\n  -h, --help              help for bash\n      --no-descriptions   disable completion descriptions\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool completion](#cwtool-completion)\t - Generate the autocompletion script for the specified shell\n\n\n## cwtool completion fish\n\nGenerate the autocompletion script for fish\n\n### Synopsis\n\nGenerate the autocompletion script for the fish shell.\n\nTo load completions in your current shell session:\n\n\tcwtool completion fish | source\n\nTo load completions for every new session, execute once:\n\n\tcwtool completion fish \u003e ~/.config/fish/completions/cwtool.fish\n\nYou will need to start a new shell for this setup to take effect.\n\n\n```\ncwtool completion fish [flags]\n```\n\n### Options\n\n```\n  -h, --help              help for fish\n      --no-descriptions   disable completion descriptions\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool completion](#cwtool-completion)\t - Generate the autocompletion script for the specified shell\n\n\n## cwtool completion powershell\n\nGenerate the autocompletion script for powershell\n\n### Synopsis\n\nGenerate the autocompletion script for powershell.\n\nTo load completions in your current shell session:\n\n\tcwtool completion powershell | Out-String | Invoke-Expression\n\nTo load completions for every new session, add the output of the above command\nto your powershell profile.\n\n\n```\ncwtool completion powershell [flags]\n```\n\n### Options\n\n```\n  -h, --help              help for powershell\n      --no-descriptions   disable completion descriptions\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool completion](#cwtool-completion)\t - Generate the autocompletion script for the specified shell\n\n\n## cwtool completion zsh\n\nGenerate the autocompletion script for zsh\n\n### Synopsis\n\nGenerate the autocompletion script for the zsh shell.\n\nIf shell completion is not already enabled in your environment you will need\nto enable it.  You can execute the following once:\n\n\techo \"autoload -U compinit; compinit\" \u003e\u003e ~/.zshrc\n\nTo load completions in your current shell session:\n\n\tsource \u003c(cwtool completion zsh)\n\nTo load completions for every new session, execute once:\n\n#### Linux:\n\n\tcwtool completion zsh \u003e \"${fpath[1]}/_cwtool\"\n\n#### macOS:\n\n\tcwtool completion zsh \u003e $(brew --prefix)/share/zsh/site-functions/_cwtool\n\nYou will need to start a new shell for this setup to take effect.\n\n\n```\ncwtool completion zsh [flags]\n```\n\n### Options\n\n```\n  -h, --help              help for zsh\n      --no-descriptions   disable completion descriptions\n```\n\n### Options inherited from parent commands\n\n```\n  -v, --verbose   Verbose debugging\n```\n\n### SEE ALSO\n\n* [cwtool completion](#cwtool-completion)\t - Generate the autocompletion script for the specified shell\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncw%2Fcwtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fncw%2Fcwtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncw%2Fcwtool/lists"}