I have a Logitech keyboard with all those nice buttons (volume, mute...) which I decided to finally put to use (I have been having this keyboard for more than two years) today morning. The exact model name is "Cordless desktop optical" or simply "Y-RK49".
At one point I used lineak which is great and if you want something as simple as possible go with it. Following setup should be more fun though, at least it was for me.
I use moc player (with ALSA) for playing my ogg and mp3 files and gentoo as distribution.
If you have another keyboard model it should work too. Run xev command in terminal and press those special buttons. If xev logs its output you should be safe.
First, install xbindkeys. In gentoo it's as simple as:
$ emerge xbindkeys
We need configuration file so download the example from xbindkeys homepage:
$ cd $ wget http://hocwp.free.fr/xbindkeys/xbindkeysrc_d $ mv xbindkeysrc_d .xbindkeysrc
In your favorite editor comment out everything.
Let your editor open with .xbindkeysrc file and open another terminal. Here we will get key codes and copy&paste them into .xbindkeysrc. So run:
$ xbindkeys --key
Now press key for which you desire to increment Volume for example. Mine shows this:
"NoCommand" m:0x10 + c:176 Mod2 + NoSymbol
So I put into .xbindkeysrc:
# volume + "amixer sset Master 3+" m:0x10 + c:176 Mod2 + NoSymbol
amixer is ALSA utility which allows you to control your mixer settings. If you use OSS there are plenty of mixers available too, for example aumix.
This way fill your .xbindkeysrc file. Mine is here:
# media "aterm -geometry 80x50 -bg black -fg white -e mocp &" m:0x10 + c:129 Mod2 + NoSymbol # ctrl + media "/home/robo/bin/show_mocp_on_osd.sh" m:0x14 + c:129 Control+Mod2 + NoSymbol # play/pause "mocp --toggle-pause" m:0x10 + c:162 Mod2 + NoSymbol # mute "amixer sset Master toggle" m:0x10 + c:160 Mod2 + NoSymbol # volume - "amixer sset Master 3-;/home/robo/bin/show_volume_bar.sh" m:0x10 + c:174 Mod2 + NoSymbol # volume + "amixer sset Master 3+;/home/robo/bin/show_volume_bar.sh" m:0x10 + c:176 Mod2 + NoSymbol # ctrl + volume - "amixer sset Master 1-;/home/robo/bin/show_volume_bar.sh" m:0x14 + c:174 Mod2 + NoSymbol # ctrl + volume + "amixer sset Master 1+;/home/robo/bin/show_volume_bar.sh" m:0x14 + c:176 Mod2 + NoSymbol # favorites "mocp --next" m:0x10 + c:230 Mod2 + NoSymbol # e-mail "aterm -geometry 100x50 -bg black -fg white -e mutt" m:0x10 + c:236 Mod2 + NoSymbol # www "opera&" m:0x10 + c:130 Mod2 + NoSymbol
Now the basic setup should be working.
I'll stop talking (I'm already scared off of my English) and will just paste the script show_volume_bar.sh:
#!/bin/bash COLOR=red SHADOW=0 # slider or percentage BARMODE=slider VOLUME=`amixer get Master | grep Front.Left\: | \ sed -e s/" Front Left: Playback [0-9]* \["// | sed -e s/"\%.*"//` osd_cat --offset=10 --indent=10 --color=$COLOR --shadow=$SHADOW \ --barmode=$BARMODE --percentage=$VOLUME --delay=1
Save this script somewhere and add it to your .xbindkeysrc like I did in above listing. Here is screenshot.
script show_mocp_on_osd.sh:
#!/bin/bash FONT=-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-* COLOR=red SHADOW=0 TOTALSEC=`mocp --info | egrep "TotalSec\:" | sed 's/TotalSec\:\ //'` CURRENTSEC=`mocp --info | egrep "CurrentSec\:" | \ sed 's/CurrentSec\:\ //'` PERCENT=`echo "$CURRENTSEC*100/$TOTALSEC" | bc` mocp --info | \ egrep "^Artist\:|^SongTitle\:|^Album\:" | \ osd_cat --offset=10 --indent=10 --color=$COLOR --font=$FONT \ --shadow=$SHADOW & osd_cat --offset=120 --indent=10 --color=$COLOR --font=$FONT \ --shadow=$SHADOW --barmode=percentage --percentage=$PERCENT
This script first displays Artist, Song Title, Album items and progress bar below which displays how much of a song has been played so far. Another screenshot.
A lot of people on the Net were inspiration so this is my Thank you! Enjoy your setup and don't hesitate to write me email or let comment down here.