Навучыўся рабіць клавіятурныя ды мышыныя біндынгі і ўзналося такое пытанне: як жа кіраваць гучнасцю ALSA?
Мне хочацца кіраваць гучнасцю кольцам мышані (разам з якой-небудзь пімпай, напрыклад Windows).
Знайшоў нават праграму amixer, якой можна кіраваць гучнасцю, але яна не падтрымлівае інкрымент ды дыкрымент, а толькі пэўную лічбу ў адсотках.
Мабыць ёсць праграма, якая робіць нешта накшталт "volume +5%"?
Але я не знайшоў, таму прыйшлося пісаць скрыпт на Perl-е.
Код: Выделить всё
#!/usr/bin/perl
use strict;
my $what_todo = $ARGV[0]; # inc | dec | on_off
my $delta = 5; # in percent
my $control = 'PCM'; # volume control
my $current_volume = qx/amixer get $control/;
$current_volume =~ m/.*\[(\d*)%\] \[(on|off)\].*/;
$current_volume = $1;
my $current_state = $2;
my $new_volume;
if ($what_todo eq 'inc') {
$new_volume = $current_volume + $delta;
} elsif ($what_todo eq 'dec') {
if ($current_volume >= $delta) {
$new_volume = $current_volume - $delta;
} else {
$new_volume = 0;
}
} elsif ($what_todo eq 'on_off') {
if ($current_state eq 'off') {
$new_volume = 'on';
} elsif ($current_state eq 'on') {
$new_volume = 'off';
}
}
system ("amixer sset $control $new_volume%");
А біндынг у .xbindkeysrc такі:
Код: Выделить всё
# increase volume
"volume.pl inc"
m:0x50 + c:115 + b:4 (mouse)
Mod2+Mod4 + Super_L
# descrease volume
"volume.pl dec"
m:0x50 + c:115 + b:5 (mouse)
Mod2+Mod4 + Super_L
# turn on or off mute
"volume.pl on_off"
m:0x10 + c:110
Mod2 + Pause
Як з гэтым змагацца? Ці якія іншыя сродкі вырашэння гэтай праблемы існуюць?
Дзякуй!