decoration Wpisy na blogu decoration

decoration
decoration
08.08 2007
13:32

Xfce i klawiatura multimedialna

Standardowe białe kwadratowe klawiatury z czarnymi naklejkami już chyba dawno wyższy z mody. Dzisiejsze klawiatury komputerowe posiadają zazwyczaj kilkanaście dodatkowych przycisków, które mają za zadanie ułatwić użytkownikom życie. Większość z nich jednak nie wykorzystuje tych możliwości często nie wiedząc, jak aktywować te klawisze. Przedstawię tutaj jeden ze sposobów użycia ich w środowisku Xfce.


Aby umożliwić korzystanie z dodatkowych klawiszy funkcyjnych nie jest wymagane żadne dodatkowe oprogramowanie. Oczywiście wykorzystanie dodatkowych aplikacji pomoże w osiągnięciu pewnych efektów wizualnych, których jednak nie każdy będzie potrzebować.

 

Kod klawisza


W pierwszej kolejności musimy się dowiedzieć, jaki klawisz został wciśnięty przez użytkownika. Do tego celu poszczególnym akcjom, jakie będziemy chcieli obsłużyć musimy przypisać kod klawisza. Jednym ze sposobów uzyskania takiej informacji jest użycie programu xev. Po wpisaniu w konsoli tego polecenia otrzymamy okienko, nad którym przeprowadzamy testy. Wciskając odpowiednie klawisze, czy zestawy klawiszy, otrzymamy odnośnie ich informacje:

 

KeyRelease  event, serial 31,  synthetic NO,  window 0x3800001,
 root 0x5d,  subw 0x0, time 1103643055, (-139,-2), root:(412,316),
 state 0x0,  keycode 223 (keysym 0x0,  NoSymbol), same_screen YES,
XLookupString  gives 0  bytes:  
XFilterEvent  returns:  False


Z tych danych możemy odczytać, że kod naszego klawisza posiada przykładowo numer 223.

 

Przypisywanie symboli


Kolejnym krokiem jest przypisanie kodu klawisza, do jego symbolu na serwerze Xów. Aby zobaczyć listę wszystkich dodatkowych obsługiwanych symbolów wystarczy podejrzeć plik:

 

cat /usr/share/X11/XKeysymDB


Następnie dopisujemy kod klawisza oraz jego symbol do pliku .Xmodmap w katalogu domowym użytkownika:

 

echo "keycode 176 =  XF86AudioRaiseVolume" >> ~/.Xmodmap


Każdy dopisany kod klawisza powinien znaleźć się w osobnej linii. Następnie musimy zrestartować Xy.


Aby połączyć symbol naciskanego klawisza z Xfce przechodzimy do ustawień klawiatury w panelu Xfce a następnie do zakładki 'Skróty'. Po utworzeniu nowego schematu (na domyślnym nie można dodawać własnych skrótów) dodajemy nowe polecenie oraz przyciskamy wybrany klawisz, aby przypisać mu wybraną akcję.

 

 

Przykład obsługi głośności


Obsługa głośności za pomocą klawiatury jest jedyn z najpopularniejszych ustawień dodatkowych klawiszy szczególnie wśród użytkowników laptopów. Klawisze do obsługi głośności mają numery: 160, 174, 176. Dopisujemy więc do pliku ~/.Xmodmap wiersze:

 

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


Aby zmienić poziomy głośności wykorzystam program aumix (http://jpj.net/~trevor/aumix.html). Domyślnie wykorzystuje on urządzenie miksujące /dev/mixer, dlatego jeżeli jesteśmy użytkownikami systemu ALSA w jądrze trzeba wkompilować Device Drivers -> Sound -> Advanced Linux Sound Architecture -> OSS Mixer API. Dodatkowo, do wyświetlenia paska poziomu głośności na pulpicie użyję programu Xosd (https://sourceforge.net/projects/libxosd/). Po skompilowaniu obu programów najlepiej przygotować skrypt, który pozwoli łatwe przekazywanie parametrów wykonywanej operacji. W przypadku mojego skryptu wywołanie akcji wygląda następująco:

 

  • volume up - zwiększenie głośności o 5% (aumix -v+5)
  • volume down - zmniejszenie głośności o 5% (aumix -v-5)
  • volume mute - wyciszenie dźwięku, lub jego przywrócenie, jeśli jest wyciszony (aumix -v0 lub aumix -v???)


Takie właśnie polecenia wraz ze ścieżką do skryptu należy wpisać w skrótach klawiatury w Xfce. Do wyświetlenia prezentacji graficznej poziomu głośności użyjemy polecenia osd_cat w następującej formie:

 

osd_cat -c green -s 1 -d 1 -b  percentage
 -f "-Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-*-*"
 -A center -p  middle -P `aumix -q |  grep vol |  cut -c5-7` &


Efektem polecenia będzie zielony pasek procentowo wyświetlający poziom głośności:

 


Aby można było przywrócić poziom głośności po wyciszeniu musimy gdzieś go zapamiętać. W swoim skrypcie posłużyłem się plikiem tymczasowym w katalogu /tmp, ale równie dobrze można zapamiętać ten poziom w jakiejś zmiennej systemowej.


Poniżej kod skryptu, który można pobrać jako cały plik ze stopki artykułu.

 

#!/bin/sh

if [ $1 ]; then
  if [ $1 == "up" ]
  then
    aumix -v+5
  fi
  if [ $1 == "down" ]
  then
    aumix -v-5
  fi
  if [ $1 == "mute" ]
  then
     if [ `aumix -q | grep vol | cut -c5-7` == "0," ]
     then
       aumix -v`cat /tmp/sound_lvl`
     else
       aumix -q | grep vol | cut -c5-7 >> /tmp/sound_lvl
       aumix -v0 
     fi
  fi
 osd_cat -c green -s 1 -d 1 -b percentage 
  -f "-Misc-Fixed-Bold-R -Normal--18-120-100-100-C-90-*-*"
  -A center -p middle -P `aumix -q | grep vol | cut -c5-7` &

else
  echo "Usage:"
  echo "  volume up"
  echo "  volume down"
  echo "  volume mute"

fi

Dołączone pliki:



Dodaj komentarz:

Nick:
URL:
Komentarz:
Wynik dzialania z obrazka =

Powrót



Copyleft (C) tom000.info 2004-2010. Some rights reserved.