31 sierpnia, 2008
Klawisze multimedialne i Scroll_Lock..
Napisane w: Linux, Oprogramowanie, Skrypty (1)
Opiszę tutaj moją konfigurację niezależną od WM/DE. Można to sobie dowolnie zmodyfikować.
Scroll_Lock: Należy do pliku '~/.xmodmaprc' dopisać taką linijkę:
add mod3 = Scroll_Lock
Nazwy klawiszy multimedialnych: Programem xev uruchomionym na konsoli należy sprawdzić 'keycode' przycisków (te białe okienko musi być aktywne, wyniki na konsoli).
Później wrzucić keykode do '~/.xmodmaprc' wraz z nową nazwą. Ja mam tak:
keycode 160 = XF86AudioMute keycode 174 = XF86AudioLowerVolume keycode 176 = XF86AudioRaiseVolume keycode 162 = XF86AudioPause keycode 144 = XF86AudioPrev keycode 153 = XF86AudioNext
Wydaje mi się, że keycode są w każdej klawiaturze takie same, klawiatury różnią się tylko ilością przycisków, oto niektóre z nich:
keycode 234 = XF86Back keycode 233 = XF86Forward keycode 232 = XF86Stop keycode 231 = XF86Refresh keycode 229 = XF86Search keycode 230 = XF86Favorites keycode 178 = XF86HomePage keycode 236 = XF86Mail keycode 164 = XF86AudioStop
Akcje klawiszy: Program xbindkeys posłuży do podczepienia pod klawisze dowolnych poleceń. Można to oczywiście też zrobić w swoim WM ale oczywiście to tylko dodatkowa robota, za każdą zmianą trzeba przypisywać od nowa, a tu "raz ciach i koniec".
#Ustaw klawisz jako rozpoznawalny modyfikator dla xbindkeys #keystate_numlock = enable #keystate_capslock = enable keystate_scrolllock= enable # # /-----------------------\ # | Klawisze | Nazwa | # |-------------|---------| # | CTRL | Control | # | Shift | Shift | # | ALT (Lewy) | Alt | # | ALT (Prawy) | Mod5 | # | WIN | Mod4 | # | Scroll Lock | Mod3 | # | Num Lock | Mod2 | # \-----------------------/ # # Multimedialne na mojej klawiaturze: # XF86AudioLowerVolume, XF86AudioRaiseVolume, XF86AudioMute, # XF86AudioPause, XF86AudioPrev, XF86AudioNext # --------------------------------------------------------- # "Tutaj polecenie. " # XF86AudioLowerVolume + Control # Jeśli nie chcesz to olej plus i wszystko po prawej..
Gotowe skrypty bash: Dwa mojego autorstwa skrypciki na licencji GPL3:
#!/bin/bash
# Klient MPD
shownotify() {
notify-send "${sinf[1]}" "${sinf[0]}"
}
xselcopy() {
echo "${sinf[0]}"|xsel
}
for i in $@; do
if [ "$i" = "-s" ]; then
shift
opts[0]="shownotify"
elif [ "$i" = "-c" ]; then
shift
opts[1]="xselcopy"
fi
done
eval $(echo "sinf=(\\"; mpc $@|sed '1,2!d; s/\(^.*$\)/"\1"/g; s/$/ \\/g'; echo ")")
for i in ${opts[*]}; do $i; done
# Sposób użycia:
# nazwa_tego_skryptu [-s] [-c] [mpc_opts]
#
# Opcje:
# -c Kopiuje tytuł do schowka
# -s Wyświetla chmurkę z nazwą piosenki i postępem#!/bin/bash
# sterowanie głośnością.. (trochę stary skrypt ;))
volmove="4" # procentowy przeskok
MUTEFILE="/tmp/xbindkeys.mute.tmp" # zapisuje poziom przez wyciszeniem
OSDFILE="/tmp/xbindkeys.osd.tmp" # zapisuje pid skryptu
OSDSLEEP=(3 3) # ('czas do chmurki' 'czas jej wyświetlania')
MIXER="Master Playback Volume" # nazwa kontrolera, patrz amixer controls
if [ -f $OSDFILE ]; then
kill `cat $OSDFILE`
rm $OSDFILE
fi
printvol() {
if [ ! -f $OSDFILE ]; then
echo $$ > $OSDFILE
sleep ${OSDSLEEP[0]}s
rm $OSDFILE
notify-send -t ${OSDSLEEP[1]}000 $"$1"
fi
}
GETVOL() {
amixer cget name="$MIXER"|sed '/:[[:space:]]values=/!d; s/.*values=\(.*\)/\1/g'
}
SETVOL() {
amixer cset name="$MIXER" $1|sed '/:[[:space:]]values=/!d; s/.*values=\(.*\)/\1/g'
}
function mute {
if [ "$(GETVOL)" = "0" ]; then
if [ -e "$MUTEFILE" ]; then
local -i VOL
VOL="$(SETVOL $(cat $MUTEFILE))"
printvol "Anulowanie wyciszenia: ${VOL}%"
rm $MUTEFILE
fi
else
GETVOL > $MUTEFILE
SETVOL 0
printvol "Wyciszenie.."
fi
}
function vol {
local -i VOL
VOL="$(SETVOL $[$(GETVOL)${1}volmove])"
printvol "Sila dzwieku: ${VOL}%"
}
if [ "$1" = "+" ]; then vol +
elif [ "$1" = "-" ]; then vol -
elif [ "$1" = "mute" ]; then mute
fi
# Sposób użycia:
# nazwa_tego_skryptu [[-] albo [+] albo [mute]]Edytowany: 10 grudnia 2008