KMilo


KMilo lets you use the special keys on some keyboards and laptops. Usually this includes volume keys and other features.

KMilo is a service of kded, the kde daemon. It is new to KDE 3.2.

Currently KMilo comes with plugins for powerbooks, vaios and generic keyboards with special keys.

KMilo Thinkpad

KMilo Thinkpad is a port of tpb http://www.nongnu.org/tpb/ to KMilo by Jonathan Riddell.

Source download: part of KDE 3.3 in CVS; for KDE 3.2: http://jriddell.org/programs/kmilo-thinkpad.tar.bz2

Screenshot: kmilo-thinkpad-screenshot.png

To install just use kdeutils (which includes kmilo) for KDE 3.2.x.

Developing for KMilo


To create a plugin for KMilo start with the Demo one in kdeutils/kmilo sources.

Edit Makefile.am in kdeutils/kmilo to compile the demo/ directory.

Fill in the methods in demo.cpp. It inherits from kmilod/monitor.h.
Do your initialisation in init(). poll() is called several times a second and is where you return that an action has happened, either return a Monitor::DisplayType value or just set the message explicitly with _interface->display() and a message will appear on the screen.

When returning a change in volume or brightness progress() will then be called which should return the new value of the volume or brightness.

Test it by killing kded: killall kded and running kded again from the command line.

Contact kde-devel with your new KMilo plugin.

KMilo TODO


A KControl Centre module to tell it which KMilo plugins to run
Add generic code for software volume control (currently same code is in Generic and Thinkpad)
Add more buttons to Monitor::DisplayType
More output skins, maybe
Make the default skin more pretty (add icons)
Stabalise API and install headers
Make it integrate nicely with KHotKeys and Kmix/Kmix applet

/ would be extremely nice not to depend on any external source but headers: you won't get packagers otherwise /
/ -- Michael Shigorin <mike@>, who wanted to package it for ALT Linux <altlinux.org> /

Good point, at the moment the kmilo headers are deliberatly not installed to allow a changing API but the hope is that it will be stable by KDE 3.3 or even during 3.2.

/ The integration with KHotKeys is extremely important in my opinion. It would be great if I didn't have to re-build kmilo just because I want to run a program when a certain hotkey is pressed... /
/ -- Andrea, 2004-05-01 /


KMilo Generic plugin


In the KDE CVS version there is also a generic plugin for all kayboards with volume up/down keys acknowledged by X/KDE by default. Just start the X program xev and press your laptop's vol up/down keys to check. If it prints out some meaningful information, you can use it to setup KDE to take care of these and connect them to RaiseVolume, etc.

If it does not work out of the box, your X keybindings have to set up. Usually, you do this in ~/.Xmodmap
Example:
keycode 129 = XF86AudioMedia
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 160 = XF86AudioMute
keycode 161 = XF86Calculator
keycode 162 = XF86AudioPause
keycode 164 = XF86AudioStop
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 223 = XF86Standby

This assigns e.g. keycode 160 to XF86AudioMute which triggers mute in the kmilo generic plugin. How to find out? start xev, move your mouse into the window and press the keys. .Xmodmap is read every time you start X. Use "xmodmap .Xmodmap" to test your configuration file.