Sunday, September 10, 2006

Linux on a Compaq Presario V2000

GNU/Linux (Ubuntu 5.10) on a Compaq Presario V2000

How to make the volume keys work

Objective: Map the volume keys (Volume up/down/mute) to amixer (command-line mixer for ALSA soundcard driver).

Find the keycode of the three keys using xev. After executing xev as an ordinary user in the terminal, it creates a window and then asks the X server to send it events whenever anything happens to the window (such as it being moved, resized, typed in, clicked in, etc.).

Example: after pressing the keyboard key m, you will be see the following report:

KeyPress event, serial 27, synthetic NO, window 0x2800001,
root 0x48, subw 0x0, time 10163530, (97,69), root:(929,430),
state 0x0, ''keycode 58 (keysym 0x6d, m)'', same_screen YES,
XLookupString gives 1 bytes: (6d) "m"

KeyRelease event, serial 27, synthetic NO, window 0x2800001,
root 0x48, subw 0x0, time 10163645, (97,69), root:(929,430),
state 0x0, ''keycode 58 (keysym 0x6d, m)'', same_screen YES,
XLookupString gives 1 bytes: (6d) "m"


These two events are the pressing and de-pressing of key m. The keycode is 58 and it is symbolically mapped to character/string m.

Try pressing the three keys (volume up/down/mute), you will most likely get the following keycodes:

* 174 - volume down
* 176 - volume up
* 160 - mute

with no symbolic mapping. To map these keycodes, create the file in your home folder ~/.Xmodmap with the following mapping:

keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 160 = XF86AudioMute


Use your window manager's (e.g. Gnome metacity, mine is Xfce) key shortcut manager. This allows you to map a keyboard shortcut to a command.

Example: (applicable only in Xfce)

Settings > Xfce 4 Settings Manager > Window Manager > Keyboard (tab)

Under command shortcuts, click none to add a command, then simulate the key (i.e. pressing the volume up/down/mute key)

The commands to adjust the mixer (using amixer) are the following:

* /usr/bin/amixer sset Master toggle - toggle mute
* /usr/bin/amixer sset Master 1- unmute - decrease vol
* /usr/bin/amixer sset Master 1+ unmute - increase vol

Master is the (grand) master mixer control.

Hope that helps.

Contact

If you have questions, post them at Ubuntu Forums, then leave a comment.

Resources
* Linux (Ubuntu 5.10) on a Compaq V2000
* Ubuntu GNU/Linux on the HP Compaq nw8240

No comments: