Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XCWCP(1)		    General Commands Manual		      XCWCP(1)

NAME
       xcwcp - X Window-based Morse tutor program

SYNOPSIS
       xcwcp	[-s --system=SYSTEM]	[-d --device=DEVICE]	[-w --wpm=WPM]
       [-t --tone=HZ] [-v --volume=PERCENT] [-g	--gap=GAP] [-f,	--infile=FILE]
       [-F, --outifile=FILE] [-h --help] [-V --version]

       xcwcp installed on GNU/Linux systems understands	both  short  form  and
       long  form  command  line  options.  xcwcp installed on other operating
       systems may understand only the short form options.

       There are no mandatory options.

       Options may be predefined in the	 environment  variable	XCWCP_OPTIONS.
       If  defined,  these  options  are used first; command line options take
       precedence.

DESCRIPTION
       xcwcp is	a X Window-based interactive Morse  code  tutor	 program.   It
       lets  you choose	from a number of options for practice, including send-
       ing random characters, random words, and	characters from	the  keyboard.
       It  will	 also  receive	Morse code that	you send using the keyboard or
       mouse as	a Morse	keyer, and display the characters it sees.

   COMMAND LINE	OPTIONS
       xcwcp understands the following command line options.   The  long  form
       options may not be available in non-LINUX versions.

       -s, --system=SYSTEM
	      Specifies	the way	that xcwcp generates tones.  Valid values are:
	      console  for  tones  through the console speaker,	alsa for tones
	      generated	through	the system sound card using ALSA sound system,
	      oss for tones generated through  system  sound  card  using  OSS
	      sound  system,  soundcard	for tones generated through the	system
	      sound card, but without  explicit	 selection  of	sound  system.
	      These  values can	be shortened to	'c', 'a', 'o', or 's', respec-
	      tively. The default value	is 'oss'.

       -d, --device=DEVICE
	      Specifies	the device file	to open	for generating a sound.	 xcwcp
	      will use default device if none is specified.  The  default  de-
	      vices  are: /dev/console for sound produced through console, de-
	      fault for	ALSA sound system, /dev/audio for  OSS	sound  system.
	      See also NOTES ON	USING A	SOUND CARD below.

       -w, --wpm=WPM
	      Sets  the	 initial sending speed in words	per minute.  The value
	      must be between 4	and 60.	 The default value is 12 WPM.

       -t, --tone=HZ
	      Sets the initial sounder pitch in	Hz.  This value	 must  be  be-
	      tween  0	and 4,000.  A value of 0 selects silent	operation, and
	      can be used for timing checks or	other  testing.	  The  default
	      value is 800Hz,

       -v, --volume=PERCENT
	      Sets  the	 initial sending volume, as a percentage of full scale
	      volume.  The value must be between 0 and 100.  The default value
	      is 70 %.	Sound volumes work fully for  sound  card  tones,  but
	      xcwcp  cannot  control  the  volume  of  tones  from the console
	      speaker.	In this	case, a	volume of  zero	 is  silent,  and  all
	      other volume values are simply sounded.

       -g, --gap=GAP
	      Sets  the	 initial extra gap, in dot lengths, between characters
	      (the 'Farnsworth'	delay).	 It must be between 0 and 60.  The de-
	      fault is 0.

       -f, --infile=FILE
	      Specifies	a text file that xcwcp can read	to configure its prac-
	      tice text.  See CREATING CONFIGURATION FILES below.

       -F, --outfile=FILE
	      Specifies	a text file to which xcwcp should  write  its  current
	      practice text.

   USER	INTERFACE
       xcwcp  offers  GUI  controls  for  changing  the	speed, tone frequency,
       'Farnsworth' gap, and mode of the program.  All of the  major  controls
       are placed on the application toolbar.

       The  main GUI window is used to display the characters that xcwcp sends
       or receives.

       To find out more	about what a particular	 GUI  control  does,  use  the
       "What's this..."	icon (the '?' at the far right of the toolbar).

   RANDOM CHARACTERS AND WORDS
       xcwcp  sends  random characters in groups of five, with a space between
       each group.

       When sending random words, xcwcp	sends the complete word, followed by a
       space.  Because short words are easier to copy without writing, xcwcp's
       default dictionary contains only	three, four, and five-letter words  in
       its random words	list.

       xcwcp chooses at	random from a list of around 3000 words	in its default
       dictionary.   You can change this text using a configuration file, read
       at startup.  See	CREATING CONFIGURATION FILES below.

   RECEIVING MORSE
       xcwcp can receive Morse code, and display it in its  main  GUI  window.
       To  key	Morse code into	the program, select the	Receive	Keyed CW mode,
       and press the stop/start	button.	 Now, place the	mouse cursor over  the
       central	window	of  the	program.  By pressing the middle mouse button,
       you should be able to key Morse into the	program	as if the mouse	button
       was a straight Morse key.

       For better keying, you can use the left and right mouse buttons	as  if
       they were paddles on an Iambic keyer.  This will	send Morse code	at the
       exact rate set on the Speed control.

       You  can	also use the keyboard for keying.  In this case, any of	the Up
       or Down cursor keys, Space,  Enter,  or	Return	may  be	 used  as  the
       straight	key, and the Left and Right cursor keys	act as the two paddles
       of an Iambic keyer.

       By  default,  xcwcp will	try to follow the speed	of the Morse code that
       you send	to it.	It is possible to switch this tracking off,  in	 which
       case  the  program switches to receiving	only at	the exact speed	set on
       the Speed control.  However, fixed speed	receiving is very, very	 picky
       about  receiving	 only extremely	accurately timed Morse code, so	unless
       you are striving	for complete  perfection,  you	may  find  that	 speed
       tracking	is more	comfortable.

       The  speed  tracking in xcwcp can sometime be confused by very wide and
       abrupt changes in speed.	 If it is having difficulty finding the	 speed
       you  are	 sending at, you can use the File pulldown menu	to synchronize
       the receive speed to the	speed set on the Speed control.

       At any time, the	mode selection combowidget  can	 get  focus  by	 using
       Alt+M.	You  can  then use the space bar or the	up/down	keys to	change
       the mode.  The Tab key moves to the next	 widget,  so  you  can	change
       speed, etc.  Shift+Tab moves backwards.

   NOTES ON USING A SOUND CARD
       By  default,  xcwcp tries to open OSS device "/dev/audio" to access the
       system sound card.  This	is generally the correct device	 to  use,  but
       for  systems  with  special  requirements, or those with	multiple sound
       cards, the option -d or --device, combined with -s or --system  can  be
       used  to	specify	the device and audio system for	sound card access.  If
       the sound card device cannot be set up, xcwcp prints the	error message

	      cannot set up soundcard sound

       and exits.

       Sound card devices, when	opened through OSS sound system,  are  usually
       single-access  devices, so that when one	process	has opened the device,
       other processes are prevented from using	it. In such cases  xcwcp  will
       of course conflict with any other programs that expect exclusive	use of
       the  system sound card (for example, MP3	players).  If xcwcp finds that
       the sound card is already busy, it prints the error message

	      open /dev/audio: Device or resource busy

       and exits.

       The sound card device is	not used if xcwcp is only sending tones	on the
       console speaker.

   AUDIO OUTPUT	- DEFAULTS AND SELECTION
       xcwcp first tries to access sound card using PulseAudio	sound  system,
       using  default  device  name,  unless user specifies other audio	device
       with option -d or --device.

       xcwcp then tries	to access sound	card using OSS audio  system  and  de-
       fault OSS audio device name ('/dev/audio'), unless user specifies other
       audio device with option	-d or --device.

       If opening soundcard through OSS	fails, xcwcp tries to access the sound
       card  using ALSA	audio system, and default ALSA audio device name ('de-
       fault'),	unless user specifies other audio device  with	option	-d  or
       --device.

       If  opening  soundcard  through	ALSA also fails, xcwcp tries to	access
       system console buzzer using default buzzer device  '/dev/console',  un-
       less user specifies other audio device with option -d or	--device.

       It  is  very  common  that in order to access the console buzzer	device
       user has	to have	root privileges.  For that reason trying to open  con-
       sole  buzzer almost always fails.  This is not a	program's bug, this is
       a result	of operating system's restrictions.  Making xcwcp an suid  bi-
       nary bypasses this restriction.	The program does not fork() or exec(),
       so  making  it  suid should be relatively safe.	Note however that this
       practice	is discouraged for security reasons.

       As stated, user can tell	xcwcp which device to use, using -d  or	 --de-
       vice  option.  Which device files are suitable will depend on which op-
       erating system is running, which	system user ID runs xcwcp,  and	 which
       user groups user	belongs	to.

   CREATING CONFIGURATION FILES
       xcwcp  contains a default set of	modes and practice text	that should be
       enough to begin with.  It can however read in a file  at	 startup  that
       reconfigures these to provide different character groupings, word sets,
       and other practice data.

       To  read	 a configuration file, use the -i or --infile command line op-
       tion.  The file should introduce	each xcwcp mode	with a section	header
       in '[' ... ']' characters, followed by the practice text	for that mode,
       with elements separated by whitespace.  Lines starting with a semicolon
       or hash are treated as comments.	 For example

	      ;	Simple example mode
	      [	A to Z ]
	      A	B C D E	F G H I	J K L M	N O P Q	R S T U	V W X Y	Z

       xcwcp  will generate five character groups for modes whose elements are
       all single characters, and treat	other modes as	having	elements  that
       are  complete  words.   As a starting point for customized modes, xcwcp
       will write its default configuration to a file  if  given  the  undocu-
       mented -# option, for example "xcwcp -# /tmp/xcwcp.ini".

NOTES
       xcwcp  is  an  X	 Window	rewrite	of cwcp.  Both programs	borrow heavily
       from the	the DOS	Morse code tutor CP222C.EXE, by	VU2ZAP.

       The characters echoed in	the main GUI window may	be  ASCII  equivalents
       of Morse	procedural signals; see	the cw(7,LOCAL)	man page for details.

   HINTS ON LEARNING MORSE CODE
       Here  are a few hints and tips that may help with the process of	learn-
       ing Morse code.

       Firstly,	do NOT think of	the elements as	 dots  and  dashes.   Instead,
       think  of  them	as  dits and dahs (so 'A' is di-dah).  If you think of
       them in this way, the process of	translating sound into characters will
       be learned much more easily.

       Do not learn the	characters from	a table.  Learn	them by	 watching  the
       groups  appear  on  the screen, and listening to	the sounds produced as
       each is sent.  In the very initial stages, it may be beneficial if  you
       can  find  a person to take you through the first stages	of recognising
       characters.

       Do not waste your time learning Morse code at 5 WPM.  Set the speed  to
       12  or 15 WPM, but use extra spacing (the Gap window) to	reduce the ef-
       fective speed to	much lower - around four or five WPM effective	speed.
       This way, you will learn	the rhythm of the characters as	they are sent,
       but still have plenty of	time between characters.  As you practice, de-
       crease the gap to zero.

       Learn in	stages.	 Start by learning the EISH5 group, then progress down
       through the menu	as each	group is mastered.  The	groups contain charac-
       ters  which  are	 in  some  way related,	either by sound, or by type of
       character.

       Once you	have completed all the groups EISH5 to ,?.;)/ (or 23789	if you
       do not want to learn procedural signals yet), use  the  full  character
       set options, and	the words and CW words options,	to sharpen your	skill.
       If  you	have  difficulties  with particular characters,	return to that
       group and practice again	with a smaller character set.

       Resist the temptation to	try to learn or	improve	your speed by  copying
       off-air.	  You  will  not  know what speed you are working at, and much
       hand-sent Morse is not perfectly	formed.	 What  you  can	 gain  off-air
       though  is a general 'resilience', a tolerance for Morse	code where the
       timing of individual elements, or spacing between characters and	words,
       is not 100% accurate.

       If working to attain a particular speed for  a  test,  always  set  the
       speed  slightly higher.	For example, if	aiming for 12 WPM, set the tu-
       tor speed to 14 or 15 WPM.  This	way, when you drop back	to 12 WPM  you
       will  feel much more relaxed about copying.  Be aware that xcwcp	is not
       necessarily going to send at exactly the	speed you set, due to  limita-
       tions in	what can be done with UNIX timers.  It often sends at a	slower
       speed  than  you	set, so	be very	careful	with this if you have a	target
       speed that you need to reach.

       Use the program to make cassette	tapes that you can take	with you in  a
       walkman	or  in	the  car, for long journeys.  You do not have to write
       down everything you hear	to practice Morse code.	 Simply	 listening  to
       the  shapes  of	characters over	a period will help to train your brain
       into effortless recognition.  In	 fact,	slavishly  writing  everything
       down  becomes a barrier at speeds of 15-20 WPM and above, so if you can
       begin to	copy without  writing  each  character	down,  you  will  find
       progress	 much  easier  above  these speeds.  But do not	over-use these
       tapes, otherwise	you will quickly memorise them.	 Re-record  them  with
       new contents at very regular intervals.

       Try  to	spend  at  least 15-30 minutes each day	practicing.  Much less
       than this will make progress glacially slow.   But  significantly  more
       than  an	 hour or so may	just result in you becoming tired, but not im-
       proving.	 Recognise when	it is time to stop for the day.

       Do not worry if you reach a speed 'plateau'.  This is common,  and  you
       will soon pass it with a	little perseverance.

       At  higher  speeds, CW operators	tend to	recognise the 'shape' of whole
       words, rather than the individual characters within the words.  The  CW
       words  menu  option  can	 be  used to help to practice and develop this
       skill.

       Neither the mouse buttons nor the keyboard are ideal for	use a keys  or
       keyer paddles, for sending practice.  Try to use	a proper key for send-
       ing  where  possible.  It is hard even for experienced operators	to get
       good keying using the mouse or keyboard.	 Of  the  two,	the  mouse  is
       probably	the better option, though, in a	pinch.

ERRORS AND OMISSIONS
       The  calibration	 option	 is a bit ropy.	 It simply sends PARIS repeat-
       edly, and relies	on you to time the sending and then work  out  if  any
       adjustment  to the speed	is really necessary.  Automatic	calibration by
       making measurements over	a given	period would be	a lot better.

SEE ALSO
       Man pages for cw(7,LOCAL), libcw(3,LOCAL), cw(1,LOCAL), cwgen(1,LOCAL),
       and xcwcp(1,LOCAL).

xcwcp ver. 3.5.1	       CW Tutor	Package			      XCWCP(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=xcwcp&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help