Go back to main page

unixcw - about


unixcw is an umbrella project for a Linux library and for few Linux applications related to Morse code. The applications are:

  • cw - a CW sending 'engine' that reads characters from stdin, sounds them on either the sound card, or the console speaker, and echoes them to stdout.
  • cwgen - a simple random character generator that can be used as a feed for cw.
  • cwcp - a curses-based program that generates groups of characters from selected sets, words, and CW abbreviations randomly, and sounds them using libcw. It owes much to CP222.EXE, by VU2ZAP.
  • xcwcp - a CW tutor program for X Window environment. It offers the same random and keyboard sending as 'cwcp', and in addition can read CW that is sent to it using the keyboard or mouse as a keyer, making it useful for sending as well as receiving practice.

The heart of the package is 'libcw'. This is a library which, when built, offers the following basic CW services to a caller program:

  • Morse code character translation tables, and lookup functions
  • Morse code low-level timing calculations
  • A 'sidetone' generation and queueing system, using either the system sound card or the console speaker
  • Optional keying control for an external device, say a transmitter, or an oscillator
  • CW character and string send routines, tied in with the character lookup
  • CW receive routines, also tied in to the character lookup
  • Adaptive speed tracking of received CW
  • An iambic keyer, with both Curtis 8044 types A and B timing
  • Straight key emulation

The library uses signals and threads to create a background task in which to do the majority of its work, leaving the main program free to handle other tasks. Sound is produced on soundcard (through PulseAudio - the default, OSS, or ALSA), or on console buzzer.

libcw is written in C for easy portability and use.

libcw, cw, and cwgen require a C compiler. cwcp requires a C compiler and a Curses library. xcwcp requires a C++ compiler and Qt library (version 5).

Current version

Current version of unixcw is 3.5.1, which was released in February 2017. See News for information about recent changes.

Screen shots

See them here


unixcw is a free software, released under GNU General Public License v2.0.


Kamil Ignacak, acerion at wp dot pl.

Top of page
Go back to main page