November 10 2003 Sheldon Lee-Wen
    Lineak 0.7.2 What??? another release in the same night? Yup. Fix a bug with keeping file handles open. Hopefully caught.
    Fix a bug with the kdevelop file, it is confused.
    Add many more keyboards. I'm caught up to August now!!! Yippee!

November 10 2003 Sheldon Lee-Wen
    Lineak 0.7.1
    Many bug fixes. :) Hopefully I've fixed once and for all the strange bug where not all of the keys worked,
    depending on the order in which they appear in your definitions file.

    The sound mixer control now uses the _PCM methods to control sound. Hopefully, this will fix setups with more
    than two speakers/channels.

    Lineak Development
    An update on the development branch. I have a plugin infrastructure working and am ready to wire it up, and
    develop a KDE plugin. If it works, this will become the main development branch.

September 13 2003 Sheldon Lee-Wen
	In CVS lineakd now has many bugs fixed. However, I have refactored the code
	to use a command class to hold commands and arguments instead of strings. Some
	of this refactoring and associated changes may have caused some regressions.

	However, for now, the config file does not require the definition of a cdrom or mixer device.
	These can defined in the macros.

	Macro definitions are as follows.
	For the EAK_MUTE macro. We have three forms that are acceptible.
	EAK_MUTE - This is the default and original macro form. In this form you require a directive in your config
		file such as:  MixerDevice = /dev/mixer in order for the macro to know which mixer device to adjust.
	EAK_MUTE(X) - Here X is a number. The number is a volume to mute to. Currently this needs revisiting. If the
		number is too low it will merely change the balance. I suggest a value around 10000. I will fix this
		later so that it's a relative value from the minimum. In this form you require a directive in your config
		file such as:  MixerDevice = /dev/mixer in order for the macro to know which mixer device to adjust.
	EAK_MUTE(X,device,X2,device2,X3,device3,...) - Here X is a volume to mute to, and device is a string name of a
		mixer device (e.g. "/dev/mixer" to mute to. As with the previous macro, you will have to experiment
		with a good value.

	For the EAK_VOLUP and EAK_VOLDOWN macros. Each have the following three forms.
	EAK_VOLUP or EAK_VOLDOWN - Increment or decrement the sound by the default amount. In this form you require a
		directive in your config file such as:  MixerDevice = /dev/mixer in order for the macro to know
		which mixer device to adjust.
	EAK_VOLUP(X) or EAK_VOLDOWN(X) - Increment or decrement the sound by X. This value is best used between 1 and 5, and the
		sound modification code scales the value, unlike the MUTE macro. In this form you require a directive in your
		config file such as:  MixerDevice = /dev/mixer in order for the macro to know which mixer device to adjust.
	EAK_VOLUP(X,device,X2,device2,X3,device3,...) or EAK_VOLDOWN(X,device,X2,device2,X3,device3,...) - Here X is the volume to
		adjust the following device by. Like the previous form of this macro, a value of 1-5 is best.

	For the EAK_EJECT macros. There are two forms.
	EAK_EJECT - This is the default macro. It will eject the device defined in your config file as:
		CdromDevice = /dev/cdrom
	EAK_EJECT(device1,device2,device3,...) - This macro form allows you to choose the device to eject. You can have a list of
		one or more devices separated by a comma.

	For the EAK_SLEEP macro. It currently does nothing. In the future I will probably look into it.
		
    	EAK_SCREEN_LOCK(X) Where X is either KDE, GNOME or XSCREENSAVER
    	The values GNOME or XSCREENSAVER do the same thing. They invoke the Xscreensaver program to lock the desktop.

August 19 2003 Sheldon Lee-Wen
    In CVS lineakd now has configuration file options for xosd.
    e.g.
    XOSD_font = -bitstream-charter-black-r-normal-*-*-240-*-*-p-*-iso8859-1
    XOSD_color = 45daff
    XOSD_timeout = 3
    XOSD_pos = bottom   ( possible values are: bottom, middle, top)
    XOSD_align = center  ( possible values are: left, center, right)
    XOSD_hoffset = 0
    XOSD_voffset = 50
    XOSD_soffset = 1

    Allow EAK_ macros to contain arguments. Currently, we only support one argument.
    E.g.
      VolumeUp = EAK_VOLUP(1)
      VolumeDown = EAK_VOLDOWN(-1)
    With the above defininitions, we only increment/decrement the volume by 1 each time.

    Some bugs have been fixed. We now use proc for finding out if we are the only lineakd process
    running. Some definition file fixes. There were contributed by the lineakd community.

    Proper detection of the compiler major version is done now by making use of compiler defined
     ___GNUC__ .

August 4 2003 Sheldon Lee-Wen
	Releasing lineakd-0.6. This release will break previous use
	config files. I've cleaned up all of the key names for use with xosd.
	xosd displays the name of the key pressed, not the command executed. I suppose I
	could configure that, but I'm not that ambitious.

	This is the last lineakd I'm releasing. The next major one will be klineakd and be
	KDE only. It will make use of dcop, and the KDE libs to function.

	Only bugs reports and patches will be accepted for lineakd from here on out.

March 2 2003 Sheldon Lee-Wen
	First alpha release of new codebase. XOSD v2 is fully 
	integrated now, as well as message passing.
	In order to get lineakd to reread it's config files, 
	don't HUP it, execute:
	lineakd -r      
	To stop the daemon, execute:
        lineakd -x

	We support toggle keys now. i.e. on the LTCDP the 
	play and pause key are the same. We define a toggle
	key as key1|key2 in the definition file. We can define 
	a single action for this key in the config file by
	specifying the keyname in the for key1|key2. We can
	also specify seperate actions for the play and pause 
	states by assigning actions to key1 and key2. eg. 
	On the LTCDP there is the key 'play|pause' In my
	config file I can specify either:
	
	play|pause     = "kstart --desktop 8 /usr/bin/xmms -t"

	Or, if I want seperate functions for the play and pause 
	states:

	play            = "kstart --desktop 8 /usr/bin/xmms -p"
	pause           = "kstart --desktop 8 /usr/bin/xmms -u"

	To compile with xosd, install xosd libs and configure with:
	./configure --with-xosd

	In the event that lineakd hangs (which it probably will 
	at some point), you have to kill all of the processes
	manually. You can do this by executing the following
	command:

	kill -9 `ps -ef | grep lineakd | grep -v grep | awk ' { print $2 }'`

	Then, after a hang or crash (or segfault, etc) you should
	clean up the shared message queue.

	Execute:
	
	ipcs -q

	To see any queues that are hanging around. You'll see something
	like this (but be relatively sure it's not part of another process,
	if unsure, look at which queues are there before you run lineakd,
	or just forget about this step):

	------ Message Queues --------
	key        msqid      owner      perms      used-bytes   messages
	0x0000050c 884736     sheldonl   640        0            0

	To get rid of the queue, type:

	ipcrm msg <msqid>

	so, for the example type:

	ipcrm msg 884736

	If you have a keyboard defined in lineakkb.def that has a toggle key
	like the one for the LTCDP keyboard, please update the file with the
	new key format and send it back to me.


        Thanks. Sheldon. <leewsb@hotmail.com>
	
