                               ACME 2.0

This is ACME, a small tool for your laptops. It makes the small multimedia
buttons on these things actually do something. It currently only fully supports
Apple laptops (iBooks and Powerbooks), and should work on other systems as well.

Supported is:
- Volume keys (Mute, Volume Down, Volume Up)
- Brightness keys (kernel 2.4.18-rc2-benh minimum, PowerBooks only)
- Eject (just launches "eject")
- Power (asks to exit the current Gnome session)
- My Home (opens a file manager window in your home dir)
- Search (launches gnome-search tool)
- E-Mail (launches evolution or balsa)
- Sleep (uses apm to put to sleep)
- Screensaver (launches gnome's screensaver)
- Finance (launches gnucash)
- Help (launches yelp)
- Record (launches gnome-sound-recorder)
- WWW (launches an empty new browser)
- Calculator (launches gnome-calculator)
- Close Window, Shade Window
- Media (launches the default MP3 player)
- Groups (Browser to www.gnomedesktop.org)
- Play, Pause, Stop, Previous and Next, and Refresh (see News below)

Eject and Power need to be pressed for a longer time to take effect.
The automatic dimming of the screen when inactive was removed, as this
functionality is available in a less broken way in XFree 4.2.

This URL contains more information:
http://lists.debian.org/debian-powerpc/2002/debian-powerpc-200204/msg00615.html

Patch for XMMS compatibility:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=181871

New in version
--------------

2.0.3:
- Removed unneeded XSun/XFree86 checks in configure
- Show the action name for which a key pressed is the duplicate
- Don't run acme-properties when no keys are bound, don't quit either
- Launch acme when starting up the preferences
- Use the GNOME configuration for the mailer, help handler and web browser

2.0.2:
- Build fixes for non-XFree86 X11 installations

2.0.1:
- Plenty of translation updates, and a small fix for Anders that nobody else
  will care about ;)

2.0:
- Fix key names not getting translated in the preferences
- Work properly on multihead

1.99.13:
- Build fixes again

1.99.12:
- Build fixes

1.99.11:
- Added support for Play, Pause, Stop, Previous and Next buttons.
  developers should fetch the key with the following keysyms
  XF86XK_AudioPlay, XF86XK_AudioPause, XF86XK_AudioStop,
  XF86XK_AudioPrev, XF86XK_AudioNext
- Clear the keycode after we ungrab a key
- HIG-ish interface from elle.uca@genie.it
- Added support for Media, Groups and Refresh buttons

1.99.10:
- New application icon by Lapo Calamandrei
- Fix crashes with Gtk+ 2.1
- Show the tray icon again if the panel crashes
- Added support for the "Close Window" and "Shade Window" buttons

1.99.9:
- Add support for WWW, Calculator and Record
- Only use the fb-level stuff on Powerbooks and iBooks
- Better icons by Lapo Calamandrei
- Use key releases instead of key presses
- Add nifty icons before the description, as the "Enabled/Disabled"
  labels weren't very clear

1.99.8:
- launch the preferences if ACME is unconfigured
- make it possible to run ACME even without a (supported) soundcard
- Remove usage of keycode everywhere in the GUI
- Click anywhere on the line in the prefs to change a shortcut
- Some prefs fixes
- Added plenty of keys from Christian's keyboard (My Home, Search,
E-Mail, Sleep, Screensaver, Finance and Help keys)
- Fix key grabbing not to annoy a11y programs

1.99.7:
- make acme be unique per display instead of per user
- fixed a bug causing it to always use default values when grabbing
keys. (Mikael Hallendal)
- fix crash on exit
- default to OSS mixer even if ALSA is present.

1.99.6:
- use CLAMP when appropriate
- some build updates
- ALSA/OSS run-time detection
- acme should now be able to compile on all Unices
- fix the error dialog not popping up when the brightness couldn't be controlled

1.99.5:
- completely ported now with all deprecated calls removed
- fixed a bug with the custom eject command
- made disabled keys appear as having a "Disabled" keycode  in the prefs rather
  than "-1"
- made the prefs window non-resizable
- proper i18n setup

1.99.4:
- eject command is configurable for "power users", via gconf-editor (note that this won't be made configurable via the preferences GUI, if eject doesn't work for you, file a bug against it)
- added sound playing when the volume is changed (I recommend
  /System/Library/Sounds/Purr.aiff from your MacOS X partition)
- UI reviewed by Calum, cleanups, icon for the preferences window by Jimmac

1.99.3:
- added a "use_pcm" configuration for people that don't want to change the master volume
- made gconf really work now :)
- changed the dashes to underscores in the schema
- don't use libglade-convert anymore, glade-2 works well enough now
- added brightness button support, GUI for the eject button, and misc fixes
- much better behaviour and looks when acme is swapped out
- killed Acme global variable, better non-linux and non-ppc platform support,
  cleanups
- made acme exit if another version of it is already running
- translate .schemas file, added dummy en_GB translation
- changed the default volume step to 6%
- added a configuration GUI
- added button to launch acme in the configurator

1.99.1:
- removed some unused images
- made it compile (and work!) with everything but GDK_DISABLE_DEPRECATED
- added an icon for the brightness
- gconf-ied the whole thing

1.99.0:
- ported to gnome2
- fixed stupidity when running on_ac_power
- fixed problem with screen level
- cleaned up header
- added gob generated files to the distribution, no need for gob anymore
- build fixes to get glade files into the distribution
- remove use of keysym, and use keycodes directly
- fixed glade generation bug
- patch by Radek Doulik <rodo@ximian.com> to avoid flashing dialog
- make it really not flash, realise the widget before moving it
- don't dim the screen if ~/.acme.no.dim file exists
- use a GtkImage instead of a GnomeCanvasItem
- a single press on power button now does the job
- patch for better eject button behaviour by Radek Doulik <rodo@ximian.com>
- remove stuff for the automatic dimming, use XFree's
- remove necessity of gob2 when building from a tarball

1.0.3:
- fix the zombies
- move the window further down the screen, half-way at the bottom of it
- add uninstall to the Makefile
- use AnyModifier with XGrabKey so we grab the keys even when Alt, etc. are
  pressed.
- a couple of cleanups
- added a "repeat" to the eject key, so hitting it by accident will not open
  the CD tray anymore :)
- if screensaver is disabled, don't dim the screen
- autoconf support
- gobjectification of the volume and the backlight handling

1.0.2:
- make sure the volume doesn't "roll over"
- fix the version number
- added a dialog that informs about the permissions of /dev/mixer
- fixed the fact that keycodes didn't get bound to keysyms anymore
  (causing it not to work *at all*)

1.0:
- use oss calls directly instead of scripts
- catch the problem that would appear if acme was launched twice
- automatically restart if it gets killed, or for a new session

Requirements
------------

- the gnome2 libraries and gob2 (only if you intend to work on acme)

Installation
------------

1) ./configure
2) make
3) make install
4) Make sure you have read and write permissions on /dev/pmu and /dev/mixer
3) run acme

Voila !

FAQ
---

Q: I'm not seeing the popup window when I change the brightness, what's wrong ?
A: There are 2 things to check:
	1) at least a 2.4.18-rc2-benh kernel.
	2) that the permissions on /dev/fb0 and /dev/pmu make it readable and
	writable for the users that want to use acme.

Q: The keys on my <whatever> keyboard don't do anything, it's supposed to work.
A: 'insmod evdev' will maybe get the keys recognised.  You can also find more
about some special keyboards here:
http://www.win.tue.nl/~aeb/linux/kbd/scancodes-2.html

Q: Why doesn't my mailer show up when I press the "Mail" button ?
A: You need to add your mailer to the Services section of the Filetypes and
Programs preferences. See here for details:
http://www.gnome.org/learn/users-guide/latest/goscustdoc-7.html#goscustlookandfeel-30


Bugs
----

- Hitting the power button many times gets messy
- need to "just work" on PCs that don't have a Master volume
- need to use the evdev device on Linux when available
- acme-properties doesn't update the status/content of the table when gconf
  changes a value

Thanks
------

Thanks to Linas Vepstas <linas@linas.org> for writing idle-timer.c and saving
me a lot of time and reading (although I removed it ;)
Thanks to TigerT for mocking up the GUI of the volume dialog, and drawing the
nifty icons along with Garrett Le Sage.

License
-------

GNU General Public License for everything in this package.

Links
-----

OSS Mixer documentation:
http://www.opensound.com/pguide/mixer.html

ALSA 0.5.x Mixer documentation:
http://www.alsa-project.org/alsa-doc/alsa-lib-old/mixer.html

ALSA 0.9.x mixer "documentation":
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/alsa/alsa-utils/amixer/amixer.c
http://www.alsa-project.org/alsa-doc/alsa-lib/mixer_8c.html

