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

FreeBSD Manual Pages


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

       lineakd - GUI configurable support for multimedia keyboards

       lineakd [options...]

       LinEAK,	Linux support for Easy Access and Internet Keyboards, features
       X11 support, windowmanager independence,	ability	to configure all  keys
       through GUI or .conf file, volume control and sound controls.

       lineakd	is  the	daemon that runs in the	background of an X session and
       listens to incoming events from multimedia buttons.

       The programs follow the usual GNU command line syntax,  with  long  op-
       tions  starting	with  two  dashes (`-').  A summary of options are in-
       cluded below.

       -l, --kbd-list
	      Show all supported keyboard types.

       -L, --plugin-list
	      Show all plugins and macros.

       -D, --directives-list
	      Show all of the default, implicit	configuration directives.

       -f FILE,	--conffile=FILE
	      Specify the .conf	file.

       -e FILE,	--deffile=FILE
	      Specify the .def file.

       -d DEVICE, --cdrom-dev=DEVICE
	      Specify the CDROM	device.

       -m DEVICE, --mixer-dev=DEVICE
	      Specify the mixer	device.

       -c TYPE,	--config=TYPE
	      Create a new lineakd.conf	file for keyboard TYPE	(warning:  old
	      one will be overwritten!).

       -x, --exit
	      Tell the daemon to exit.

       -r, --reload
	      Reload the configuration files.

       -z, --sleep
	      Stop the daemon from processing keyboard events.

       -k, --awaken
	      Resume processing	of keyboard events.

       -v, --verbose
	      Print verbose messages.

       -vv, --very-verbose
	      Print very verbose messages. Mostly for debugging	purposes.

       -h, --help
	      Show summary of options.

       if -f, -e, -d, or -m parameters are used	in conjunction with -c,	please
       make sure you specify those BEFORE -c !

       For those who want to setup their configuration quickly,	here  are  the

	 run 'lineakd -l' to see a list	of available keyboards.

	 run 'lineakd -c TYPE' to create a standard configuration file for the
       keyboard	with an	identifier of TYPE that	you found by  running  lineakd

	 The configuration file	will be	$HOME/.lineak/lineakd.conf

       Edit  the  config  file	to specify commands for	the keys. The commands
       will initially be empty.	This file can be modified to suit your	needs.
       Do  NOT,	 however,  add extra keys or keynames! You can only change the
       values of the keys that are already present! If you have	a key on  your
       keyboard	 that  is  not in the file, please post	it on the mailing list

       Lineak uses two types of	configuration files:  lineakkb.def  files  and
       lineakd.conf files.


	      lineakkb.def  files  contain  keyboard descriptions that map key
	      and button names,	to keycodes and	button codes  respectively.  A
	      lineakkb.def file	can be placed either in	a system directory, or
	      in a users home directory	(in the	 .lineak/  subdirectory).  The
	      lineakd  daemon  will  first  read the system lineakkb.def file,
	      usually at /etc/lineakkb.def and then  read  the	~/.lineak/lin-
	      eakkb.def	 file. It will attempt to reconcile the	entries, using
	      the local	entries	to override the	system entries.

	      Here is an example of a keyboard definition from a lineakkb.def

		 brandname = "Logitech"
		 modelname = "Cordless Desktop Pro"

		    Sleep		  = 223
		    Internet		  = 178
		    Mail		  = 236

		    Thumb		  = 2

	      [END LTCDP]

	      The structure is important. Adding a new keyboard	is as easy  as
	      determining  the special keys that you keyboard has, using some-
	      thing like xev, and writing your own definition file. Note  that
	      the daemon will only register keys that you also have defined in
	      your lineakd.conf	file.

       lineakd.conf files can live either in a system  directory,  or  in  the
       users  home  directory under the	.lineak	subdirectory. lineakd will at-
       tempt to	load a users config file before	looking	for a system wide con-
       figuration file.

       Lineakd	supports  various  configuration file directives. Plugins also
       can specify their own directives. The standard directives that are sup-
       ported follow with their	defaults:

       KeyboardType =

       CdromDevice = /dev/cdrom

       MixerDevice = /dev/mixer

       Display_plugin =	internal

       Display_font = -adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-*-*

       Display_color = 0aff00

       Display_timeout = 3

       Display_pos = bottom

       Display_align = center

       Display_hoffset = 0

       Display_voffset = 50

       Display_soffset = 1

       keystate_capslock =

       keystate_numlock	=

       keystate_scrolllock =

       KeyboardType  is	 the  only mandatory defintion.	If KeyboardType	is not
       defined,	the daemon will	not function properly.

       The CdromDevice and MixerDevice settings	specify	the  device  files  to
       use.  These are only useful when	used in	conjunction with a plugin that
       requires	them. One such plugin is the defaultplugin.

       The Display_* directives	control	the functioning	of the on screen  dis-
	   Display_plugin  specifies  with of the installed display plugins to
       use. Currently the only OSD plugin is the xosd plugin.

	   Display_font	specifies which	font name to use  for  the  on	screen
       display.	Currently the xosd plugin requires font	names in X format.

	   Display_color  specifies  the  color	of the font. As	xosd currently
       requires	the color in a numeric format, that is the  default.  You  can
       use  something  like  kcolorchooser or the gimp to get color values for

	   Display_timeout specifies the amount	of time	the display should re-
       main  on	 screen.  After	this number of seconds the display will	be re-

	   Display_pos specifies the vertical position for the	OSD.  Possible
       values are bottom, middle and top.

	   Display_align specifies the horizontal position for the OSD.	Possi-
       ble values are left, center and right.

       The keystate_* directives control modifiers. By default,	 lineakd  does
       not  pay	 attention  to the modifiers NumLock, CapsLock and ScrollLock.
       Set these directives to "enable"	to use modifiers. (Note: as of	beta3,
       these  options  do  nothing. We automatically use modifiers if they are
       defined on a per	command	basis.)

       lineakd supports	toggle keys. A toggleable key is one that can  have  a
       various number of states	for each push of the key. For example, on many
       keyboards the Play and Pause keys are the same. When you	push  the  key
       once  it	 plays,	 the  next time	it pauses. The same thing goes for the
       Mute key. You must define a toggle key as key1|key2 in  the  definition
       (lineakkb.def)  file. We	can define a single action for this key	in the
       config file by specifying the keyname in	the form key1|key2 - this  ef-
       fectively  treats  the toggleable key as	a normal key. It tells lineakd
       that we don't want to use this a	a toggleable key,  maybe  because  the
       command	we are going to	bind to	it supports the	notion of toggling. We
       can also	specify	seperate actions for the Play and Pause	states by  as-
       signing 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 = /usr/bin/xmms -t

	       To treat	this as	a normal key, or, if I want seperate functions
       for the play and	pause states:

       Play = /usr/bin/xmms -p

       Pause = /usr/bin/xmms -u

       Note that there can be more than	two states for a toggleable  key.  For
       example key1|key2|key3 could be defined.

       lineakd	now supports a variable	number of modifiers to a key. However,
       this only applies to non-toggleable keys	so a key  such	as  Play|Pause
       will  not  work	with  modifiers	 if  you use it	as a toggleable	key by
       putting entries like this:

       Play = something

       Pause = something else

       In your config file. However, if	you use	the key	 as  a	non-toggleable
       key, i.e. like this:

       Play|Pause = something

       Then it becomes possible	to use modifiers.

       Currently we support the	following modifiers:
	       mod5 To use a modifier, we do something like this in the	config
	       Sleep+control = something
	       Sleep+alt = something different
	       Sleep+shift = something more different
	       Sleep = sleepiness

       Modifiers  to  buttons,	if  they are defined in	the lineakkb.def file,
       work the	same way.

       lineakd supports	custom on screen display messages through the configu-
       ration  file.  However,	some plugins may choose	to disregard custom on
       screen display messages if they feel it does not	apply.	Currently  you
       specify	the  on	 screen	 display  message  for a command by placing it
       within square brackets at the beginning of the line. E.g.
	       [On Screen Message] Go =	some command
	       [Another	Message] Home+alt = some command
	       [Boring Message]	Home = some command

       The lineakd daemon does not contain any internal	macros	or  actual  on
       screen  display	functionality.	This  functionality  is	implemented in
       plugins that are	loaded when the	lineakd	daemon	is  first  run.	 NOTE:
       Restarts	of the daemon with lineakd -r will not reload plugins, or load
       new plugins.

       The previous functionality that existed in versions of lineakd up uptin
       0.8  has	 been moved into two plugins: lineak_defaultplugin, which con-
       tains all of the	EAK_* macros and lineak_xosdplugin which contains  all
       of  the	XOSD on	screen display functionality. There is now also	a lin-
       eak_kdeplugin plugin that brings	with it	a total	of 23 macros  or  more
       for handling KDE	funtionality via dcop. Some of these macros themselves
       take arguments which expands their functionality.  See  the  respective
       plugin packages for more	information on MACRO usage.

       The  lineakd package now	installs two helper applications, send_to_key-
       board and evtest.

       evtest: Allows you to see the event layer events	your keyboard is  gen-
       erating.	 This  is  for	debugging to help you determine	if indeed your
       keyboard	is sending events, and which events it is sending. It uses the
       new event layer.

       send_to_keyboard	 (only for arm,	x86 and	x86_64): This is a simple pro-
       gram which, for now is just for the IBM keyboards.  It  allows  you  to
       send  actual  control codes to the keyboard device to enable or disable
       certain functions. For example, some of the IBM keyboards require:
	 send_to_keyboard ea 17

       in order	to enable the extra keys. This helper application is  actually
       used from lineakd. Within your lineakkb.def file	you can	specify	a con-
       figuration option after the keyboard and	model name to  initialize  the
       keyboard	 with.	As  requirements for this sort of thing	increases I'll
       enable the handling of different	options. So far	we only	look for  INI-


	 brandname = "IBM"
	 modelname = "Rapid Access Keyboard"
	 RAWCOMMAND[INITIALIZE]	 = "ea 71"   # <--- lineakd will at this point
       fork and	execute: `send_to_keyboard ea 17`
	   WWW		    = 178
	   WorldBook	    = 151
	   Option	    = 176
	   Help		    = 166
	   Standby	    = 165
	   AudioMute	    = 146
	   AudioStop	    = 164
	   AudioPlay|Pause  = 153
	   Back		    = 163
	   Forward	    = 161
	   AudioLowerVolume = 158
	   AudioRaiseVolume = 160
	   Custom1	    = 174

       [END IBMRA7993]

       Linux 2.6 can cause changes in how the keycodes	are  interpreted  from
       the 2.4 version of the kernel. In some cases, keys that use to work, no
       longer work at all. If this happens to you try the following:

       1) Run xev and see if X reports any keycodes for	the keys that are  not
       working.	 If  there  are	keycodes being produced, you'll	have to	update
       the lineakkb.def	file (usually in /etc) with the	correct	 keycodes  for
       your keyboard.

       2)  If  xev  does not report any	keycodes for one or more of your keys,
       then try	looking	in /var/log/messages. If you have  error  messages  in
       that  file  from	atkbd.c	about unknown scancodes	then try binding those
       scancodes to keycodes with the setkeycodes command as root. If you  are
       in  doubt  over	which  keycode to bind it to just use the keycode from
       your /etc/lineakkb.def file. If X then produces keycodes	for  that  key
       then  put  those	setkeycodes commands somewhere in your startup scripts
       (at the end of /etc/rc.sysinit for example) so that they	 run  at  boot
       time.  You'll  notice  that  X produces a different keycode for the key
       that what you set it as.	Follow the steps under the procedure  1	 above
       to get lineak to	recognize the new keycodes.

       3)  If  you  see	nothing	in your	/var/log/messages, and xev produces no
       keycodes, you can try running showkey -s	as root	and see	 if  the  key-
       presses	show any scancodes. If they do,	follow the setkeycodes part of
       procedure 2 above. If not, see 4.

       4) If still nothing happens, try	the evtest  command  included  in  the
       package.	 You'll	have to	run it as root,	but it can tell	you if it sees
       any events at all. If not, it is	likely that your keys  may  require  a
       low  level  command  to be sent to the keyboard (like in	the example of
       the IBM Rapid Access Keyboard  above.)  You  can	 check	this  website:  to  see if there
       is any further information.

       5) If none of the above work, send an email to  the  linux-usb  mailing
       list  (if  your	keyboard is USB) or to the atkbd.c maintainer and pray
       they do something about it. Otherwise your screwed. Take	your POS  key-
       board back to the store and get a supported one.	:(

       The EAK_SLEEP action has	no functionality yet.

       Due  to	the fact that not all IDE CD-ROM drives	provide	status info on
       the tray	position, the following	can occur:

	  If lineakd is	started	with the cdrom	tray  in  open	position,  the
       eject button has	to be pressed twice the	first time to close it.

	  If  you opened the cdrom tray	with the eject button and let the tray
       close automatically after a while (hardware timer),  the	 eject	button
       has to be pressed twice to open it again.

	      Keyboard definitions file.

	      Personal configuration file.

	      Personal keyboard	configuration file.

       lineakconfig(1),	klineakconfig(1), lineak_defaultplugin(1), lineak_xos-
       dplugin(1), lineak_kdeplugins(1).

       lineakd was written by Sheldon Lee-Wen  <>  and  Mark
       Smulders	<>.

				 July 27, 2003			    LINEAKD(1)


Want to link to this manual page? Use this URL:

home | help