$Aumix: aumix/ChangeLog,v 1.30 2002/11/25 01:31:29 trevor Exp $

1993-10-23 - version 0.1

1993-11-28 - version 0.2
- doesn't assume existence of any device (volume, bass, etc)
- some minor bug fixes
- some bug fixes to work correctly with SB Pro
- should now work correctly when multiple copies are run simultaneously

1996-08-23 - version 1.0
- added command-line interface

1996-09-02 - version 1.1
- fewer colors and no border to simplify full-screen interface
- knobs are highlighted as you move to them, then brighten and
  leave a trail behind when you adjust them
- horizontal knobs drawn with same characters as vertical ones
- vertical controls spaced more closely so they fit in 80 columns
- use of "<" and ">" for cursor motion, and "q" to quit program
- use of tab, "+" and "-" keys shown on help line
- added "h" option for command line

1996-09-07 - version 1.2
- two banks of horizontal controls, no special treatment of
  volume, bass, and treble (layout idea borrowed from CAM), so
  labels don't have to be jammed together
- record/play indicators now show the letters "R" and "P"
  rather than just a red or green square, so they should be
  more self-explanatory and more monochrome-friendly
- added use of "[" and "]" keys to set controls to 0% or 100%

1996-09-13 - version 1.3
- added gpm mouse support by incorporating code from rmev.c by
  Alessandro Rubini (packaged with gpm)
- added Quit button for use with mouse
- changed color of controls from white to cyan/green so the gpm
  cursor would be more visible
- added keys "Q" and ctrl-D to quit from program
- removed use of two different graphic characters to show controls in use
  or not in use

1996-12-02 - version 1.4
- added -b, -t, -s, and -m options (Kenn Humborg and Dan Fandrich)
- moved printf statements after the ioctl call, since this makes more
  sense if the ioctl fails (Kenn Humborg)
- changed layout to allow for balance controls, and added them (Trevor Johnson)
- eliminated "level" array: levels are now read by ioctl so changes by other
  processes system-wide will be properly reflected (Trevor Johnson)
- conditional compilation: GPM now optional, and interactive mode can be
  disabled entirely (Trevor Johnson)

1996-12-06 - version 1.5
- "q" options for command line to print settings without changing (Jeff Spirko)
- command-line section modularized for compactness (Trevor Johnson)
- widened controls in interactive mode for greater precision in setting and
  reading (Trevor Johnson)
- balance controls get redrawn after levels adjusted (Trevor Johnson)
- added command-line options for imix, PCM2, reclev, igain, ogain, line1,
  line2 and line3 (Trevor Johnson)

1996-12-15 - version 1.6
- ability to save settings to a file and load them in again
- option to use a restricted character set in interactive mode, when IBM
  graphic characters are not available
- support for second mixer
- changed meaning of "<" and ">" keys (now same as Tab or Enter)
- "," and "." function synonymously with "<" and ">" so users need not shift
  when using US keyboard
- prettified device names removed, to save space and to allow for future
  changes to the sound driver
- added labels for banks of level and balance controls
- record/play information updated more often
- record/play information gets printed on query

1996-12-17 - version 1.6.1
- fixed problem with conditional compilation

1997-05-30 - version 1.7
- more efficient code for handling options (Jeff Spirko)
- in full-screen mode, balance/level legend no longer so dim (Harley Silver)
- try to load settings from alternate file if ~/.aumixrc can't be opened (Trevor
  Johnson)
- continue gracefully if settings file refers to nonexistent devices (Trevor
  Johnson)
- don't set balance controls to center when adjusting levels from the
  keyboard (work is still needed here) (Trevor Johnson)

1997-09-24
- use ACS_ macros for special characters (Rainer Canavan)
- don't use A_ALTCHARSET (Rainer Canavan)
- build with GNU autoconf (from example by Alessandro Rubini)
- use fputs() in Usage() (Trevor Johnson)
- use bold attribute less (Trevor Johnson)
- don't leave cursor on balance controls when adjusting levels (Trevor Johnson)

1997-09-28
- reorganize documentation to be more GNUish (Trevor Johnson)
- use automake (Trevor Johnson)
- change layout for new sound driver (Trevor Johnson)
- change LoadSettings for new sound driver (Trevor Johnson)

1997-10-07
- About menu item for diagnostic info (Trevor Johnson)
- Keys menu item to save space on main screen (Trevor Johnson)
- position cursor better for xterm (Trevor Johnson)
- change routines for loading and saving settings, for new sound driver (Trevor
  Johnson)
- don't use ACS_ macros, just use ASCII characters (Trevor Johnson)

1997-10-11
- added muting function (Trevor Johnson)
- move cursor back by a space when setting record/play, levels or balance
  (Trevor Johnson)

1997-10-12 - version 1.8
- update man page and README (Trevor Johnson)

1997-12-27
- small fixes to muting function (Trevor Johnson)
- declare optarg so as to compile cleanly with gcc -ansi -pedantic (Trevor
  Johnson)
- restore getch() as an alternative to Gpm_Getch() and add some #ifdef GPM
  statements (Trevor Johnson)
- now compiles cleanly under FreeBSD 2.2.5
- print usage info along with "error opening /dev/mixer" message (Trevor
  Johnson)
- added version[] and copyright[] arrays for the "what" utility (Trevor Johnson)
- removed AboutBox() until it has more useful info to display (Trevor Johnson)

1997-12-28
- only display the mixer channels that really exist (Trevor Johnson)
- fixed a bug where invalid mixer channels could be passed from MouseHandler()
  and AdjustBalance() would try to adjust them (Trevor Johnson)
- volume now gets updated when adjusting balance with the mouse (Trevor Johnson)
- split DrawLevel() out of AdjustLevel() (Trevor Johnson)
- show left and right levels with "L" and "R" -- looks a bit busy (Trevor
  Johnson)
- removed DrawHandles() (Trevor Johnson)
- started work on making level controls wider and balance controls narrower
  (Trevor Johnson)
- automatically refresh display of channels another program has changed (Trevor
  Johnson)

1998-01-26
- code contributed by Alessandro Rubini to simulate ncurses' halfdelay mode
  with Gpm_Getch() (Alessandro Rubini)
- fixed two problems in muting function (one caused by new
  RefreshNewSettings()) (Trevor Johnson)

1998-02-04
- tidied up MouseHandler() (Trevor Johnson)
- moved ncurses and gpm routines to separate header files (Trevor Johnson)

1998-07-12 - version 1.9
- got the separate files to compile (Trevor Johnson)

1998-07-19 - version 1.9.1
- fixed problem with "aumix -q" not giving output (Jim Diamond)
- fixed problem in adjusting levels (Holger Kiel)
- removed the hack for keeping controls from getting stuck (Trevor Johnson)
- tidied up comments in gpm-xterm.h (Trevor Johnson)
- updated AUTHORS file (Trevor Johnson)
- fixed problem with -L option not initializing mixer (Trevor Johnson)

1998-07-19 - version 1.9.2
- removed Redraw function (Trevor Johnson)
- widened level controls (Trevor Johnson)
- KeysBox fixed, but only when using gpm (Trevor Johnson)

1998-07-20 - version 1.9.3
- corrected problem in moptindx that was causing wrong channels to be adjusted
  when using command-line options (Philip Chong)
- write out words in usage text instead of abbreviating (Trevor Johnson)
- minor updates to man page (Trevor Johnson)

1998-07-26 - version 1.9.4
- removed some extra characters from version[] (Trevor Johnson)
- changed LoadSettings() so it can read comma- or semicolon-delimited rc files
  (G. Brubaker)
- fixed bug where mixer wasn't initialized when running with the -S option only
  (G. Brubaker)

1998-08-05 - version 1.10
- in KeysBox(), use getch() when not compiling with gpm (Jonathan H. Aseltine)
- add #ifdef GPM to aumix_gpm.c (Jonathan H. Aseltine)
- "L" and "R" markings in different color than "O" in interactive screen (Trevor
  Johnson)
- new configure.in largely generated by autoscan--shouldn't stumble on systems
  which have curses.h but not ncurses.h (Trevor Johnson)
- changed #ifdef GPM and #ifdef NCURSES to #if HAVE_LIBGPM and
  #if HAVE_LIBNCURSES (Trevor Johnson)
- remove colors from KeysBox() (Trevor Johnson)
- added "R" and "P" options for toggling record/play from command line (Trevor
  Johnson)

1998-08-11 - version 1.11
- don't show usage on errors (Trevor Johnson)
- kludged Makefile.in for people who don't have automake (Trevor Johnson)
- LoadSettings(), SaveSettings(), InitMixer() and SetShowNoninter() changed
  from void to int, with return value used for error messages (G. Brubaker)
- printing of error messages moved from InitMixer() to new ExitIfError() (G.
  Brubaker)
- InitMixer() renamed to InitializeMixer() (Trevor Johnson)
- new MixerStatus() function (G. Brubaker)
- new ReadWriteMixer() function (G. Brubaker)
- new OpenDefaultFile() function (G. Brubaker)
- minor addition to KeysBox() display (Trevor Johnson)

1998-08-11
- internationalization (Arkadiusz Mi¶kiewicz)
- text for the Polish language (Arkadiusz Mi¶kiewicz)

1998-08-22 - version 1.12
- calling refresh() without initializing screen gives segfault--fixed (Bill
  Nottingham)
- change getopt() string to avoid "option requires an argument -- S" error
  (David Reviejo)
- remove some special cases from InitializeMixer() (Trevor Johnson)

1998-08-25
- rewrote internationalization (Arkadiusz Mi¶kiewicz)
- fixed -d option (Arkadiusz Mi¶kiewicz)
- print usage when called as "aumix -" or "aumix nonsense" (Arkadiusz
  Mi¶kiewicz)

1998-08-26
- further fixes to -d option (was still giving segfault) (Arkadiusz
  Mi¶kiewicz)
- Inter() rewritten as ReadInteractiveKeys() (Arkadiusz Mi¶kiewicz)
- fixed ReadInteractiveKeys() when called as "aumix -some_good_options -I"
  (Arkadiusz Mi¶kiewicz)

1998-08-30
- updated BUGS, TODO, and README (Arkadiusz Mi¶kiewicz)
- fixed problem with KeysBox() returning without waiting when gpm support is
  compiled in but program is run remotely (Arkadiusz Mi¶kiewicz)
- unmuting "hardware mute" in ALSA driver support (Arkadiusz Mi¶kiewicz)
- checking if alsa-lib is available automatically (Arkadiusz Mi¶kiewicz)
- gettext detection via configure script (Arkadiusz Mi¶kiewicz)
- added --without-gpm and --without-ncurses options to configure script
  (Arkadiusz Mi¶kiewicz)
- modifications for compiling without NLS and without ALSA (Arkadiusz
  Mi¶kiewicz)
- don't list -I option in usage screen when compiled without ncurses
  (Arkadiusz Mi¶kiewicz)

1998-09-02
- use alsa-lib >= 0.1.0 (Arkadiusz Mi¶kiewicz)

1998-09-05 - version 1.13
- tidy up a few typos (Trevor Johnson)
- don't compile ReadWriteMixer() because it's not being used yet. (Trevor
  Johnson)

1998-09-10
- added German translation (Johnny Teveßen)
- use if rather than switch in ExitIfError() (Johnny Teveßen)
- added EXIT_SUCCESS and EXIT_FAILURE macros (Johnny Teveßen)
- reorganized, with new doc, intl, and src directories (Johnny Teveßen)
- revamped configuration system so "make dist" and versioning work (Johnny
  Teveßen)
- corrected compilation warnings (Johnny Teveßen)

1998-10-04 - version 1.14
- added Makefile.manual for systems on which the automatic configuration
  system doesn't work (Trevor Johnson)
- only #include <getopt.h> on Linux systems (Trevor Johnson)

1999-01-07 - version 1.14.1
- added Brazilian Portuguese (pt_BR) translation (Arnaldo Carvalho de Melo)
- added Spanish (es) translation (Pablo Ruiz Garcia)

1999-01-30 - version 1.15
- tweaked to compile under NetBSD 1.3.3 with Makefile.manual (Trevor Johnson)
- added ability to increment or decrement levels from command line
  (Pablo Ruiz Garcia)
- added Russian (ru) and Ukrainian (ua) translations (Michael Vasilenko/Grisha
  Vasiliev)
- fixed "option requires an argument" bug (Trevor Johnson)

1999-02-05 - version 1.16
- added -f option to specify file for saving and loading settings (Michal Svec)
- added aumix.spec file for Red Hat Linux (Michal Svec)

1999-02-06 - version 1.17
- added signal handler so periodic updates (in case another process adjusts
  the mixer) work (Trevor Johnson)

1999-02-19 - version 1.18
- fixed .po files broken by added text about new options (Trevor Johnson)
- added ability to increment or decrement levels by a specified amount from
  the command line (Pablo Ruiz Garcia)
- cast PACKAGE to char * for textdomain() and bindtextdomain() (Pablo Ruiz
  Garcia)

1999-02-20 - version 1.18.1
- renamed SignalHandler() to AumixSignalHandler() to avoid namespace conflict
  that could happen on Linux with libc 5 (Eric Wanner)
- reset signal after its handler has been called (Eric Wanner)
- in RefreshNewSettings(), move cursor out of way so it looks better in an
  xterm (Trevor Johnson)

1999-02-23 - version 1.18.2
- updates to Russian and Ukrainian .po files (Michael Vasilenko/Grisha Vasiliev)
- Russian and Ukrainian translations in the .spec file (Michael Vasilenko/Grisha
  Vasiliev)
- remove unnecessary cast to int of signal handler (Ernesto Hernández-Novich)

1999-05-04 - version 1.18.3
- removed duplicate lines from po/POTFILES to avoid compilation error (Trevor
  Johnson)
- added MAXLEVEL macro to replace magic numbers 49, 50 and 100 (Trevor Johnson)
- added installation instructions for Red Hat Linux (Trevor Johnson)

1999-05-20 - version 1.18.4
- in configure.in, change "==" to "=" (Pablo Ruiz Garcia)
- in src/aumix_curses.c, sleep for 50 microseconds to disguise the Debian
  "potato" busy-waiting problem (Trevor Johnson)
- add cast to char * on line 87 of src/aumix.c to please egcs (Trevor Johnson)
- in ExitIfError use printf() rather than perror() so we don't print "Success"
  in error messages (Trevor Johnson)
- in OpenDefaultFile(), don't close mixer_fd (fixes problem with
  trying to load in non-existent settings file in interactive mode) (Trevor
  Johnson)

1999-05-31 - version 1.19
- renamed Alsa_Anty_Mute() to Alsa_Unmute() (Trevor Johnson)
- cosmetic touches to Makefile.manual (Trevor Johnson)
- added "only" (solo) and "un-only" features (Trevor Johnson)
- busy-waiting bug--misused timeout()--fixed properly (Trevor Johnson)
- in aumix.h, include <string.h> instead of <strings.h> (Trevor Johnson)
- removed unused fd_set in Inter() (Trevor Johnson)

1999-06-05 - version 1.20
- with timeout(-1), mouse does not work, so use timeout(1000) instead (Valery
  Kornienkov)
- add global current_dev to keep track of current device (Trevor Johnson)
- add Undo (to undo all muting) to menu (Trevor Johnson)
- fixed bug where command-line option to increase or decrease levels by a given
  amount would change them by one more unit than requested:  for example "aumix
  -m+0" would increase microphone level by one (Trevor Johnson)
- during inactivity, move the cursor out of the way of the menu (Trevor Johnson)

1999-06-08 - version 1.21
- added option to load color schemes from files (Trevor Johnson)
- fixed bug in ExitIfError for errors in the range 2 to 11 (Trevor Johnson)

1999-06-10 - version 1.22
- digits 1 to 9 set level at 10% to 90% (Trevor Johnson)

1999-06-19 - version 1.22.1
- renamed aumix_gpm.c to aumix-gpm.c and similarly with aumix_curses.c and
  aumix_curses.h so they will be easier to type and easier to read when
  underlined (Trevor Johnson)
- add return values back to MouseHandler() (Trevor Johnson)
- set CFLAGS in Makefile.manual (Trevor Johnson)
- in aumix-curses.c, #include <ctype.h> for tolower() (Trevor Johnson)
- use = rather than == for assignment on that same line with tolower (Trevor
  Johnson)
- in MixerStatus() and InitializeMixer() use macros rather than numbers for
  return values (Trevor Johnson)
- use EFINDDEVICE instead of ENODEV to avoid namespace conflict (Trevor Johnson)
- in ExitIfError(), avoid "Success" error messages (Trevor Johnson)

1999-10-04 - version 1.23
- more renamings:  aumix-gpm.c to gpm.c, aumix-curses.c to curses.c,
  aumix-curses.h to curses.h, aumix.c to common.c, aumix.h to common.h, and
  schemes/ to data/ (Trevor Johnson)
- new interactive.c and interactive.h files (Trevor Johnson)
- added aumix.xpm icon (Caldera Systems)
- in configure.in, check for string.h instead of strings.h and only check once
  (Trevor Johnson)
- don't treat it as an error when ioctls return values that are neither 0 nor
  -1 (Robert Siemer)
- added .indent.pro:  we stylin'! (Trevor Johnson)
- updated and prettified man page (Trevor Johnson)
- changes to src/Makefile.in for FreeBSD--how to put them in Makefile.am? (Chris
  Piazza)
- untested attempt at compatibility with OpenBSD, based on looking at the
  patches to xmix and xmmix in the ports collection (Trevor Johnson)

1999-10-06 - version 1.23.1
- declare copyright and version strings as const static char to avoid a warning
  (Paul Slootman)
- in common.c, #include "interactive.h" (Paul Slootman)
- add one of the FreeBSD changes to src/Makefile.am (Trevor Johnson)

1999-10-26 - version 1.24
- rewrote InitColors to allow "-" to represent black as the background or white
  as the foreground (Paul Slootman)
- added miniature icon (Paul Slootman)
- added xaumix script for running aumix in a terminal emulator under X (Paul
  Slootman)
- have xaumix use "which" utility rather than checking hard-coded /usr/X11 path
  (Trevor Johnson)
- have xaumix check for "konsole" terminal emulator (Trevor Johnson)

1999-10-31 - version 1.25
- find soundcard.h on BSDI (Trevor Johnson)
- disable ALSA hardware muting, since it seems to have been removed from
  current ALSA drivers (Trevor Johnson)
- when in ncurses mode, paint spaces at right of screen, to fill gaps by
  selection arrow and level controls (Trevor Johnson)
- added Galician (gl_ES) translation (Jesús Bravo Álvarez)
- added src/interactive.c to po/POTFILES (Jesús Bravo Álvarez)

1999-11-01 - version 1.25.1
- in po/Makefile.in.in, add --keyword=LOCAL_TEXT for .pot target (Jesús Bravo
  Álvarez)
- in xaumix, don't use hard-coded path to aumix (Trevor Johnson)
- in xaumix, use double quotes so tests will work (Christian Weisgerber)
- in aclocal.m4, added stuff from GIMP (Owen Taylor)
- paint spaces at left of screen too (Trevor Johnson)
- mention -C option in Usage() summary when compiled with ncurses (Trevor
  Johnson)

1999-11-03 - version 1.26
- updated Polish (pl) translation (Piotr Czerwiñski)
- in de, es, pt_BR, ru and ua translations, corrected names of rc files (Trevor
  Johnson)
- in header files, replace some preprocessor directives with constants (Trevor
  Johnson)
- in InitScreenCurses(), use loop instead of cookie cutter to print menu (Trevor
   Johnson)
- replace magic numbers with R_P_WIDTH, LEVEL_WIDTH, ARROW_WIDTH, LABEL_WIDTH,
  and BALANCE_WIDTH constants (Trevor Johnson)
- added src/interactive.c to po/POTFILES.in (Jesús Bravo Álvarez)
- adjust width of level track at startup, according to number of columns
  available (Trevor Johnson)
- paint whole screen, except last line, with spaces (Trevor Johnson)

1999-11-09 - version 1.27
- added gettext_noop (Piotr Czerwiñski)
- updated Polish translation again (Piotr Czerwiñski)
- renamed INCREMENT to level_increment, BALANCE_INCREMENT to balance_increment,
  LEVEL_WIDTH to level_width, and BALANCE_WIDTH to balance_width (Trevor
  Johnson)
- adjust width of balance tracks according to number of columns available
  (Trevor Johnson)
- when left and right levels are the same, don't go through the motions of
  trying to display "L" and "R" on level tracks (Paul Slootman)
- use mnemonics for return values (Trevor Johnson)
- read mixer before toggling record, for compatibility with ALSA 0.3.0 (Dominik
  Stadler)
- cosmetic changes to comments in gpm-xterm.h (Trevor Johnson)

1999-11-13 - version 1.27.1
- really updated Polish translation (maintainer forgot to make change in
  version 1.27) (Piotr Czerwiñski)
- updated Galician translation (Jesús Bravo Álvarez)
- updated Spanish translation (Jesús Bravo Álvarez)
- rename po/gl_ES.po to po/gl.po (Jesús Bravo Álvarez)
- in doc/aumix.1, merge MAINTAINER section into BUGS (Trevor Johnson)
- translate "amount" as "cantidad" and "mix monitor" as "monitor del mezclador"
  in po/es.po (Trevor Johnson)
- attempt to update po/de.po, using Babel Fish (Trevor Johnson)
- attempt to update po/ru.po, po/ua.po, and po/pt_BR.po, leaving text from
  recent changes untranslated (Trevor Johnson)
- in po/gl.po, line up spaces in menu (Trevor Johnson)
- find soundcard.h on Solaris (untested) (Trevor Johnson)

1999-11-19 - version 1.27.2
- change code for Ukrainian locale from ua to uk (Pablo Saratxaga)
- in xaumix, comment out konsole, since it needs different options than xterm
  and it gives an error message (Trevor Johnson)
- in xaumix, add comment about gnome-terminal (Trevor Johnson)
- reimplement "which" in xaumix because standalone "which" utility can
  give different output than shell built-in, and "type -p" substitute gives
  different output in ksh versus bash (Trevor Johnson)
- in xaumix, make sure IFS contains a tab, not spaces (Christian Weisgerber)
- in xaumix, remove unneeded double quotes around IFS stuff (Christian
  Weisgerber)
- in xaumix, don't use "which" to find aumix (Roland Rosenfeld)

1999-11-23 - version 1.27.3
- refresh screen when user presses control-L (Christian Weisgerber)
- use ncurses mv* functions (Trevor Johnson)
- change declaration of copyright and version strings again (Trevor Johnson)
- in LoadSettings(), don't do RefreshAllSettings() because it can cause a
  segfault (Trevor Johnson)

1999-11-24 - version 1.27.4
- in common.h, include <sys/time.h> once instead of twice (Trevor Johnson)
- use "static int" instead of "const static int" (Trevor Johnson)
- move gpm initialization from main() in common.c to StartGPM() in gpm.c (Trevor
  Johnson)
- in KeysBoxCurses, change ncurses timeout to -1, to wait indefinitely for
  input (Trevor Johnson)
- disable gpm while in KeysBoxCurses (Trevor Johnson)
- put ReadWriteMixer() in #if 0 again (Trevor Johnson)
- in main(), replace 0 with EXIT_SUCCESS as exit value (Trevor Johnson)
- in KeysBoxCurses, use w_panel rather than w_keys (Trevor Johnson)
- in MouseHandler(), use local mouse_dev instead of current_dev, to avoid
  segfault in Inter() (Trevor Johnson)
- in MouseHandler(), use event->x instead of "temp" variable (Trevor Johnson)
- make levelbalmode global so we can draw the level/balance arrow from
  KeysBoxCurses() (Trevor Johnson)
- add HighlightLabelCurses() to highlight label when returning from KeysBox()
  (Trevor Johnson)
- in InitScreenCurses(), use wbkgdset() rather than painting spaces to set
  background color (Trevor Johnson)
- in README, add URL for archives of mailing list (Trevor Johnson)

1999-11-27 - version 1.28
- change src/Makefile.am so /usr/local/lib/libintl can be found on FreeBSD
  (Christian Weisgerber)
- add gpm-xterm.c, ersatz gpm client for non-Linux xterm-only mouse support
  (Alessandro Rubini)
- remove most instances of "#if HAVE_LIBGPM", since, when we have ncurses,
  we always have either gpm or gpm-xterm (Christian Weisgerber)
- fix comment in curses.c (^L is NP, not NL) (Christian Weisgerber)
- enable use of mouse to leave from KeysBox() (Christian Weisgerber)
- use anonymous enums for errors and color pairs (Trevor Johnson)
- in  Inter(), use balance_increment rather than level_increment with
  AdjustBalance() (Christian Weisgerber)
- in Inter(), simplify handling of +/-/right/left (Christian Weisgerber)
- in Inter(), don't use atoi() on an unterminated string (Christian Weisgerber)
- in RedrawBalanceCurses(), use balance_increment instead of old hard-coded
  value (Christian Weisgerber)
- in InitScreenCurses(), center the labels of the level and balance tracks
  (Christian Weisgerber)
- in MouseHandler(), don't use hard-coded co-ordinates (Christian Weisgerber)
- in xaumix, set height of terminal to match the height needed by aumix
  (Christian Weisgerber)
- in xaumix, allow different title options for gnome-terminal and konsole, so
  they may be used (Trevor Johnson)
- in xaumix, use single quotes for GEOMETRY for gnome-terminal and konsole, to
  leave LINES unexpanded (Christian Weisgerber)
- in xaumix, check for files left by previous sessions of gnome-terminal and
  konsole as a clue about whether we should run those emulators (Trevor Johnson)
- in xaumix, only use 79 columns (Trevor Johnson)
- in xaumix, add aterm and Eterm (Trevor Johnson)
- in xaumix, don't show scrollbars for aterm, rxvt, or xterm (Trevor Johnson)
- disable use of escape key for quitting, because escape sequences can
  sometimes be broken up (maybe by Nagle's algorithm) and confused with it
  (Trevor Johnson)
- add dummy.c to simulate a sound driver when one isn't present in the
  kernel (Christian Weisgerber)

1999-11-30 - version 1.29
- in xaumix, test for panel or kpanel processes to see whether user is running
  GNOME or KDE (Trevor Johnson)
- in xaumix, don't use "a" option to ps, so we only see current user's
  processes (Christian Weisgerber)
- in common.c, don't use parentheses for return values (Trevor Johnson)
- in aumix.spec, change "./configure --prefix=/usr --without-alsa" to
  "%configure --without-alsa" (Christian Weisgerber)
- in StartGPM, don't grab mouse events that have a modifier key set (Christian
  Weisgerber)
- add WriteLevel(), ReadLevel(), WriteRecSrc() and ReadRecSrc() to do most
  ioctls (Trevor Johnson)
- in configure.in, check for both curses.h and ncurses.h so our own curses.h
  can use the system's curses.h (Trevor Johnson)
- in configure.in, check for awk and some other things suggested by autoscan,
  and remove some tests it didn't suggest (Trevor Johnson)
- shuffle into our own curses.h a few things that pertain to ncurses and gpm
  (Trevor Johnson)
- in curses.c, add support for use_default_colors, and change the default
  colors to work better with this (Trevor Johnson)
- add ncurses mouse support, so mouse will work in an xterm on Linux (Christian
  Weisgerber)
- in gpm.c, move most mouse handling from MouseHandler() into new DoMouse()
  (Christian Weisgerber)
- remove unused function GpmHalfdelay() (Christian Weisgerber)
- enable ncurses mouse support in StartGPM() (Christian Weisgerber)
- rename StartGPM to StartMouse() (Christian Weisgerber)
- rename gpm.c to mouse.c (Christian Weisgerber)
- in curses.h, add prototype for DoMouse() (Christian Weisgerber)
- in Inter(), handle KEY_MOUSE, get event, and call DoMouse() (Christian
  Weisgerber)
- in curses.c, don't use w_panel, but just draw on stdscr, to avoid bug in
  ncurses (Trevor Johnson)
- in curses.c, add preliminary support for resizing screen (Trevor Johnson)
- in configure.in, check for getmouse() and use_default_colors() in ncurses
  library; define HAVE_GETMOUSE and HAVE_USEDEFAULT if present (Trevor Johnson)

1999-12-06 - version 1.30
- in xaumix, use test -z (Trevor Johnson)
- in aumix.1, mention implication of -I option by -C (Trevor Johnson)
- in curses.c, add PlaceCursor() to move cursor to right of "aumix" (Trevor
  Johnson)
- use curs_set(0) to make cursor invisible, on terminals which have that
  capability (Christian Weisgerber)
- remove empty src/gpm.c (Christian Weisgerber)
- in xaumix, use xprop rather than ps to detect GNOME and KDE (Christian
  Weisgerber)
- in xaumix, check for GNOME_SM_PROXY and "Unnamed Desktop" to find GNOME and
  KDE (Trevor Johnson)
- in xaumix, check whether $DISPLAY is set and if not, don't run an emulator
  (Christian Weisgerber)
- in xaumix, no "x" needed with test -z (Christian Weisgerber)
- in xaumix, if no $XTERM, send error message to stderr (Christian Weisgerber)
- in InitCurses(), add meta(stdscr, TRUE) because it is not default everywhere
  and mouse position is truncated to 7 bits otherwise (Christian Weisgerber)
- in gpm-xterm.c, make mdata unsigned char to avoid misreporting of coordinates
  as negative (Christian Weisgerber)
- have autoconf generate a test program to check for _use_keypad in WINDOW
  structure (Christian Weisgerber)
- in curses.h, add CTRL() macro to map 'X' to ^X (Christian Weisgerber)
- in Inter(), use CTRL() for control keys in switch statement (Christian
  Weisgerber)
- move CTRL() checks to end of switch cascade (Christian Weisgerber)
- check whether CTRL is already defined, and leave it alone if it is (Christian
  Weisgerber)
- return ^D to its former exit function (Christian Weisgerber)
- in StartMouse(), add function pointer Wgetch to indirects wgetch calls to
  one of Sysm_Wgetch, Gpm_Wgetch, or wgetch (Christian Weisgerber)
- add #define Getch(), to prettify (*Wgetch)() call (Christian Weisgerber)
- replace Gpm_Getch() with Getch() (Christian Weisgerber)
- in StartMouse(), initialize Wgetch to Gpm_Wgetch or plain wgetch (Christian
  Weisgerber)
- in Inter(), join two consecutive switch(key) statements (Christian Weisgerber)
- in curses.c, use HighlightLabelCurses() in more places (Christian Weisgerber)
- in Inter(), do HighlightLabelCurses() so label is in right color when ^L
  is used (Christian Weisgerber)
- update gl.po and es.po (Jesús Bravo Álvarez)
- in gpm-xterm.c, fix select() loop (Christian Weisgerber)
- in configure.in, move checks for headers before ncurses checks (Christian
  Weisgerber)
- in StartMouse(), get character cell width and height, since FreeBSD sysmouse
  coordinates are in pixels (Christian Weisgerber)
- have sysmouse send us SIGUSR2 for mouse state changes, and if successful,
  register signal handler and our wgetch() replacement (Christian Weisgerber)
- add SysmouseHandler(), signal handler for SIGUSR2 which retrieves mouse
  coordinates and converts pixels to character cell units (Christian Weisgerber)
- in mouse.c, add Sysm_Wgetch(), derived from Gpm_Wgetch() (Christian
  Weisgerber)
- add autoconf test for sysmouse (Christian Weisgerber)
- center balance when second mouse button is pressed over balance track
  (Christian Weisgerber)
- make DoMouse() take an argument specifying buttons (Christian Weisgerber)
- have mouse coordinates start from (0, 0) instead of (1, 1) (Christian
  Weisgerber)
- create mouse.h, mostly from bits of curses.h (Christian Weisgerber)
- added acconfig.h (Trevor Johnson)
- added AM_CONFIG_HEADER(config.h) to configure.in and ran aclocal to pull the
  macro into aclocal.m4 (Trevor Johnson)
- added xaumix man page (Paul Slootman)
- added --enable-own-labels option to configure script, to permit translation
  of dev_label array (Trevor Johnson)
- made include/ and moved headers from src/ into it, to avoid automake
  misfeature (Trevor Johnson)
- in gpm-xterm.h, #define SELECT_TIME (Christian Weisgerber)
- fix some prototyping problems (Christian Weisgerber)

1999-12-19 - version 1.30.1
- in src/Makefile.am, specify DEFS to override automake's defaults (Tom Tromey)
- move headers back to src/ (Trevor Johnson)
- update pl.po (Piotr Czerwiñski)
- update ru.po (Michael Vasilenko/Grisha Vasiliev)
- fix bug where mouse could toggle nonexistent record/play (Christian
  Weisgerber)
- in SysmouseHandler(), work around cosmetic bug in syscons.c on FreeBSD
  3.3/3.4 (Trevor Johnson)
- on NetBSD and OpenBSD, use _oss_ioctl (Christian Weisgerber)
- find libcurses on OpenBSD (Trevor Johnson)
- fix test for libcurses (Christian Weisgerber)
- use unsigned long as type for second argument of dummy_ioctl, for
  compatibility with OpenBSD/alpha (Christian Weisgerber)
- fix typo in src/gpm-xterm.h (Christian Weisgerber)
- prettify printf formatting in src/gpm-xterm.h (Christian Weisgerber)
- in PlaceCursor(), use A_NORMAL to lessen compiler bug on OpenBSD/sparc (Trevor
  Johnson)
- in AumixSignalHandler(), redraw level/balance indicator after resizing
  window (Christian Weisgerber)
- in xaumix, don't leave blank line when calculating size of terminal, because
  it is no longer needed (Christian Weisgerber)
- fix bug where record/play could be toggled for a nonexistent channel, using
  the mouse (Christian Weisgerber)
- in common.h, add prototype for dummy_ioctl (Christian Weisgerber)
- in configure --help text, don't capitalize the first letter, in order to
  match configure's built-in descriptions (Christian Weisgerber)
- in configure --help text, line up descriptions (Trevor Johnson)
- in InitCurses(), when running in an xterm, set DISPLAY if it isn't already
  set, to trick ncurses into processing mouse events (Christian Weisgerber)
- in configure.in, only test for _use_keypad, getmouse and use_default_colors
  when $CURSLIB is set (Christian Weisgerber)

1999-12-25 - version 2
- added GTK+ interface (P.H., Trevor Johnson)
- added code from gmixer to show the icon when window is iconized (Sergey
  Kiselev)
- in configure.in, added stuff from GIMP (Owen Taylor)
- removed debugging macro from aumix.1 (Christian Weisgerber)

2000-01-31 - version 2.1
- in acinclude.m4, add AM_PATH_GTK (Christian Weisgerber)
- in configure.in, uncomment test for GTK+ (Christian Weisgerber)
- in configure.in, move AC_SUBST(CURSLIB) (Paul Slootman)
- in common.c, don't try to open mixer device file if DUMMY_MIXER is defined
  (Trevor Johnson)
- in curses.c and gtk.c, add LOCAL_TEXT so --enable-own-labels works (Trevor
  Johnson)
- remove Makefile.manual (Trevor Johnson)
- add AumixSignalHandlerGTK to do updates for GTK+ interface (Trevor Johnson)
- fix unmuting in GTK+ interface (Trevor Johnson)
- add quit button to GTK+ interface (Trevor Johnson)
- add balance controls to GTK+ interface (Trevor Johnson)
- set height of GTK+ window according to number of mixing channels (Trevor
  Johnson)
- better syntax in aumix.1 (Christian Weisgerber)
- added patches for FreeBSD to packaging/FreeBSD/ (Trevor Johnson)
- added experimental OpenBSD port (Christian Weisgerber)
- updated and reorganized README and INSTALL (Trevor Johnson)

2000-03-07 - version 2.2
- fix gtk.c so it compiles when HAVE_GTK is false (Trevor Johnson)
- in gtk.c, use a table and labels rather than frames, so controls are smaller
  and all the same size (Trevor Johnson)
- when given options besides (but not including) -I, and DISPLAY environment
  variable is set, don't open GTK+ window (Aaron McDaid)
- if -C option is given, don't open GTK+ window (Aaron McDaid)
- in Usage(), show interactive options when compiled with HAVE_GTK, even if
  not with HAVE_CURSES (Trevor Johnson)
- in Alsa_Unmute(), try to clarify comment about library (Trevor Johnson)
- in gtk.c, add menus, using code from itemfactory.c example (Tony Gale, Ian
  Main)
- in gtk.c, move quit and muting functions to menus (Trevor Johnson)
- in gtk.c, add file loading and saving functions to menu (Trevor Johnson)
- update intl/ with files from GNU gettext 0.10.35 (credits in intl/ChangeLog)

2000-03-16 - version 2.3
- in gtk.c, add LoadDialog() and SaveDialog() to select settings files, using
  code from filesel.c example (Tony Gale, Ian Main)
- in gtk.c, add LOCAL_TEXT_NOOP to permit translation of menus (Trevor Johnson)
- in gtk.c, remove some unused widgets (Trevor Johnson)
- in gtk.c, remove buggy code for calculating size of window (Trevor Johnson)
- in common.c, add ShowWarning() to print error messages and continue (Trevor
  Johnson)
- in common.h, dummy.c, interactive.c and mouse.c, add comments to #endif
  directives (Trevor Johnson)
- where "../config.h" and "common.h" are both included, only include the latter
  and include "../config.h" in common.h (Trevor Johnson)
- add buttons with pixmaps to switch record/play from GTK+ window (Trevor
  Johnson)
- rename menu_items to menuitemsgtk to avoid confusion with menuitems (Trevor
  Johnson)

2000-03-23 - version 2.4
- add French (fr) translation (Guillaume Cottenceau)
- in InitScreenGTK(), use gtk_table_attach_defaults instead of gtk_table_attach
  for simplification and to avoid a compilation error (Trevor Johnson)
- in InitScreenGTK(), use casts to avoid compilation warnings (Trevor Johnson)
- in gtk.c, add SaveSettingsGTK() and LoadSettingsGTK() functions as wrappers
  for SaveSettingsGTK() and LoadSettingsGTK(), to avoid compilation warnings
  (Trevor Johnson)
- in AumixSignalHandlerGTK(), use gtk_signal_handler_block() and
  gtk_signal_handler_unblock() rather than gtk_signal_disconnect() and
  gtk_signal_connect() while we change settings of buttons and sliders (Trevor
  Johnson)
- make Usage() text match synopsis in man page (Trevor Johnson)
- move play.xpm and record.xpm to src/ to please automake (what about
  aumix.xpm?) (Trevor Johnson)
- in main() move #endif to allow compilation with neither ncurses nor GTK+
  (Venkatesh Krishnamurthi)
- in InitScreenGTK(), create channellabel labels in the same loop where they're
  attached to the table (Trevor Johnson)
- remove unused y variable from AdjustBalanceGTK (Trevor Johnson)
- in InitScreenGTK(), add "L" and "R" markings for balance controls, and
  "0" and "100" markings for level controls (Trevor Johnson)
- in InitScreenGTK(), use gtk_scale_set_value_pos() to move labels to the left
  side of level controls and right side of balance controls, to save pixels
  (Trevor Johnson)
- in common.c, add CountChannels() to count mixing channels (Trevor Johnson)
- partial updates to all translations (Trevor Johnson)
- make correction to de.po (Christian Weisgerber)
- rewrite menus without GtkItemFactory, so they can really be translated (Trevor
  Johnson)

2000-03-28 - version 2.5
- in gtk.c, add "View" menu to hide unused channels (Trevor Johnson)
- in gtk.c, use gtk_signal_connect_object() rather than gtk_signal_connect(),
  so device numbers may be passed to callback functions (Trevor Johnson)
- in gtk.c, remove aumix_destroy() and just use gtk_widget_destroy() (Trevor
  Johnson)
- update Polish translation (Piotr Czerwiñski)

2000-04-12 - version 2.6
- in xaumix, give "-C ansi" option for emulators that didn't get "-C xterm" so
  aumix will start in ncurses mode when compiled with GTK+ (Trevor Johnson)
- in INSTALL, give better instructions for FreeBSD and NetBSD (Trevor Johnson)
- remove contents of packaging/FreeBSD (Trevor Johnson)
- remove unused AumixSigwinchHandler() (Trevor Johnson)
- in curses.h, remove stray comma from enum (Trevor Johnson)
- in gpm-xterm.h declare Gpm_Wgetch() with its parameter (Trevor Johnson)
- in interactive.h, declare InitScreen() with a "void" parameter (Trevor
  Johnson)
- in curses.c, declare InitScreenCurses() with a "void" parameter (Trevor
  Johnson)
- in InitScreenGTK, make fileaccelkeys an array of ints rather than pointers to
  chars (translation of these is still broken) (Trevor Johnson)
- in ExitIfError() and ShowWarning(), use LOCAL_TEXT_NOOP rather than
  LOCAL_TEXT (Trevor Johnson)
- make AumixSignalHandler() the only signal handler and have it call
  WakeUpCurses() and WakeUpGTK() (Trevor Johnson)
- fix type of AumixSignalHandler() (Christian Weisgerber)
- in StartMouse(), cast conn.eventMask to unsigned short (Christian Weisgerber)
- update de.po (Dominik Stadler)
- in gtk.h, make callback functions gint rather than gint * (Trevor Johnson)
- new four-color aumix.xpm, 32 X 32 pixels (Trevor Johnson)
- removed aumix-mini.xpm (Trevor Johnson)
- in InitScreenGTK() make i a long int to avoid warning on 64-bit architectures
  when we pretend it's a pointer for gtk_signal_connect_object (Trevor Johnson)
- add "View" and "wait" to all .po files (Trevor Johnson)
- in LoadSettings(), add "wait" keyword to permit scripted pauses (Trevor
  Johnson)
- update aumix.1 to mention "wait" feature (Trevor Johnson)
- update xaumix.1 to mention GTK+ interface (Trevor Johnson)
- combine ShowWarning() and ExitIfError() into ErrorExitWarn (Trevor Johnson)
- move prototypes from common.c to common.h (Trevor Johnson)
- rename i18n_initialize to I18nInitialize (Trevor Johnson)
- rename Alsa_Unmute to AlsaUnmute (Trevor Johnson)
- made data/fadein.set and data/fadeout.set to show use of wait feature (Trevor
  Johnson)
- send error messages, including usage text when an error has occurred, to
  stderr (Christian Weisgerber)
- further updates to de.po (Christian Weisgerber)
- in LoadSettings, use fgets() to read in lines of text from the file, then
  parse them with sscanf(), so "wait" lines need only two fields (Trevor
  Johnson)
- use CountChannels() in HighlightLabelCurses() (Trevor Johnson)
- partial update to es.po (Trevor Johnson)
- in aumix.spec, don't run automake or autoconf (Christian Weisgerber)

2000-06-27 - version 2.6.1
- remove some "fuzzy" lines from de.po and ru.po (Trevor Johnson)
- fix AumixSignalHandler for compilation without GTK+ (Venkatesh Krishnamurthi)
- fix AumixSignalHandler for compilation without ncurses (Bill Nottingham,
  Christian Weisgerber)
- fix overflow in InitColors() when argument to -C option is too long (Trevor
  Johnson)
- fix overflow in OpenDefaultFile() when HOME is too long and -L option is
  given (Trevor Johnson)
- replace DATADIRNAME with DATADIR and fix it (Christian Weisgerber)
- fix packing list in aumix.spec (Christian Weisgerber)
- update English description in spec file to mention X interface (Trevor
  Johnson)
- in INSTALL, update ncurses site, simplify RPM instructions, and remove
  references to GNU make (Trevor Johnson)
- in InitScreenCurses(), add menu_sizes and make label_width variable
  (replace fixed LABEL_WIDTH) so widths of menu and labels can accommodate
  different languages (Trevor Johnson)
- use the po/Makefile.in.in from rpm 3.0.4 for less dependence on GNU make
  (Christian Weisgerber, Ulrich Drepper)
- remove OpenBSD port (Trevor Johnson)
- make GTK+ accelerator keys translatable (Trevor Johnson)
- make dummy mixer show first 25 devices, for checking translations (Trevor
  Johnson)
- remove gratuitous subshells from configure tests (Christian Weisgerber)
- introduce automake conditionals GTK and CURSES (Christian Weisgerber)
- install xaumix, xaumix.1, and color schemes only if building with curses
  (Christian Weisgerber)
- make mention of "-C" and "-I" options in usage text agree with actual
  availability (Christian Weisgerber)

2000-07-13 - version 2.7
- add partial Japanese message catalog (ja.po) (Trevor Johnson, Masanori Hanawa,
  and Takagi Junji)
- add partial Swedish message catalog (sv.po) (Trevor Johnson, Magnus Reftel,
  Anders Widell, Christer Gustavsson, and Karl Backström)
- in I18nInitialize(), use LC_ALL rather than LC_MESSAGES to permit selection
  of character sets (needed for Japanese) (Trevor Johnson)
- in INSTALL, correct instructions for NetBSD, separate them from OpenBSD,
  and merge "Kernel" and "Linux" sections (Trevor Johnson)
- fix misspelling in xaumix.1 (Christian Weisgerber)
- update aumix.1:  only one xpm (Christian Weisgerber)
- in InitScreenGTK(), wrap fileacceltext strings in LOCAL_TEXT_NOOP to permit
  translation (Trevor Johnson)

2002-03-18
- add Menu, Balance, and Numbers to the View menu in the GTK+ interface (Trevor
  Johnson)
- update Galician and Spanish translations (Jesús Bravo Álvarez)
- add partial Simplified Chinese translation (GB2312-1980 encoding) (Wang Jian)

2002-03-19
- add src/mute, a shell script which mutes and un-mutes (Ben Ford)
- add Dutch translation (Jelmer Vernooij)

2002-03-20
- update Ukrainian translation (Olexander Kunytsa)

2002-03-23
- use strdup() in ReadInteractiveKeys()--fixes possible security bug (Paul
  Slootman)
- use strdup() in main() and use g_strdup() in FileOKLoad() and FileOKSave()
  (Trevor Johnson)

2002-03-24
- revise Swedish translation (Mikael Hedin)
- add Swedish to MENUSIZES and LABELSIZES, and add comments explaining how to
  use those arrays (Trevor Johnson)

2002-03-28
- use ii and jj in loops instead of i and j, as suggested in Roedy Green's "How
  To Write Unmaintainable Code" (Trevor Johnson)
- replace Japanese translation with the one from Turbolinux (Takeshi Aihana)
- remove extra ".Ql" macro from man page (Eric S. Raymond)
- add licensing and copyright notices to most source files (Trevor Johnson)
- update the address of the Free Software Foundation (Trevor Johnson)

2002-04-01
- re-enable console mouse support on FreeBSD 5.0-CURRENT without
  <machine/console.h> (Christian Weisgerber)
- quote arguments with internal whitespace, for new autoconf (Nalin Dahyabhai)

2002-04-20
- in common.h, avoid incorrect inclusion of getopt.h (Christian Weisgerber)

2002-04-24
- in configure.in, check directly for ossaudio library (Christian Weisgerber)

2002-04-27
- in acconfig.h, remove duplicates and defines automatically created by
  autoheader (Christian Weisgerber)
- in common.h, remove SOUND_IOCTL macro for NetBSD and OpenBSD, the purpose of
  which has been forgotten (Christian Weisgerber)
- use autoconf to find soundcard.h (Christian Weisgerber)

2002-04-29
- update Brazilian Portuguese translation (Cyro Mendes de Moraes Neto and
  Osvaldo Santana Neto)

2002-05-01
- account for channels which can be used for recording yet have no adjustable
  levels (Martin J. Hiller)

2002-05-05
- added Greek translation of some of the channel names (Sofia Pappatheodorou and
  Trevor Johnson)

2002-09-07
- add CheckAndOpen():  error out if user tries to load settings from a directory
  instead of a file (Bas Zoetekouw)

- in configure.in, add a description as the third argument to all invocations of
  AC_DEFINE(); remove the corresponding entries from config.h.in because
  autoheader can now create them (Christian Weisgerber)
- remove AC_DEFINE()s for USE_INCLUDED_LIBINTL and USE_NLS, which were only used
  as output variables (Christian Weisgerber)

2002-10-23
- in OpenDefaultFile(), avoid buffer overflows by correcting off-by-one and
  off-by-two errors in tests for length of filename (Ivan Tonizza)
- in ToggleMuting(), silence a warning from gcc 3.2.1 (Trevor Johnson)
- in InitColors(), fix the same kind of off-by-one buffer overflow as
  discovered by Ivan Tonizza in OpenDefaultFile() (Trevor Johnson)
- use PATH_MAX when allocating buffers, to avoid inconsistency with tests in
  OpenDefaultFile() and InitColors() (Trevor Johnson)

2002-10-27
- Debian bug 158536:  in InitScreenGTK(), invert the state of the "Mute All"
  button, so it is correct instead of always incorrect (Roland Stigge)

2002-10-29
- fix alignment in "configure --help" output (Trevor Johnson)
- enable use of GTK+ 2.0, while retaining support for GTK+ 1.2 (Trevor Johnson)

2002-11-24
- add more machine-translated Greek text from <URL:http://www.worldlingo.com>
  (Trevor Johnson)

2002-11-25 - aumix 2.8
- apply forgotten GTK+ 2.0 patches to INSTALL and configure.in files (Trevor
  Johnson)
