Page MenuHomeFreeBSD

D35101.diff
No OneTemporary

D35101.diff

diff --git a/sbin/devd/apple.conf b/sbin/devd/apple.conf
--- a/sbin/devd/apple.conf
+++ b/sbin/devd/apple.conf
@@ -52,7 +52,7 @@
match "subsystem" "keys";
match "type" "volume";
match "notify" "down";
- action "mixer vol.volume=-10";
+ action "mixer vol.volume=-10%";
};
notify 0 {
@@ -60,7 +60,7 @@
match "subsystem" "keys";
match "type" "volume";
match "notify" "up";
- action "mixer vol.volume=+10";
+ action "mixer vol.volume=+10%";
};
# Eject key
diff --git a/sbin/devd/asus.conf b/sbin/devd/asus.conf
--- a/sbin/devd/asus.conf
+++ b/sbin/devd/asus.conf
@@ -14,14 +14,14 @@
match "system" "ACPI";
match "subsystem" "ASUS";
match "notify" "0x31";
- action "mixer vol.volume=-10";
+ action "mixer vol.volume=-10%";
};
notify 0 {
match "system" "ACPI";
match "subsystem" "ASUS";
match "notify" "0x30";
- action "mixer vol.volume=+10";
+ action "mixer vol.volume=+10%";
};
# The next blocks enable volume hotkeys that can be found on the Asus EeePC
@@ -36,14 +36,14 @@
match "system" "ACPI";
match "subsystem" "ASUS-Eee";
match "notify" "0x14";
- action "mixer vol.volume=-10";
+ action "mixer vol.volume=-10%";
};
notify 0 {
match "system" "ACPI";
match "subsystem" "ASUS-Eee";
match "notify" "0x15";
- action "mixer vol.volume=+10";
+ action "mixer vol.volume=+10%";
};
# Enable user hotkeys that can be found on the Asus EeePC
diff --git a/share/man/man4/acpi_ibm.4 b/share/man/man4/acpi_ibm.4
--- a/share/man/man4/acpi_ibm.4
+++ b/share/man/man4/acpi_ibm.4
@@ -455,7 +455,7 @@
fi
if [ $LEVEL -eq 1 ]; then
sysctl dev.acpi_ibm.0.mic_led=0
- mixer rec.volume=30
+ mixer rec.volume=30%
fi
;;
*)
diff --git a/usr.bin/fortune/datfiles/freebsd-tips b/usr.bin/fortune/datfiles/freebsd-tips
--- a/usr.bin/fortune/datfiles/freebsd-tips
+++ b/usr.bin/fortune/datfiles/freebsd-tips
@@ -339,7 +339,7 @@
``<ESC>w ! sudo tee %'' to force a write.
%
You can adjust the volume of various parts of the sound system in your
-computer by typing 'mixer <type>.volume=<volume>'. To get a list of what
+computer by typing 'mixer <type>.volume=<volume>%'. To get a list of what
you can adjust, just type 'mixer'.
%
You can automatically download and install binary packages by doing
diff --git a/usr.bin/usbhidaction/usbhidaction.1 b/usr.bin/usbhidaction/usbhidaction.1
--- a/usr.bin/usbhidaction/usbhidaction.1
+++ b/usr.bin/usbhidaction/usbhidaction.1
@@ -139,11 +139,11 @@
of Philips USB speakers with the HID controls on the speakers.
.Bd -literal -offset indent
# Configuration for various Philips USB speakers
-Consumer:Volume_Increment 1 0 mixer -f $1 vol.volume=+1
-Consumer:Volume_Decrement 1 0 mixer -f $1 vol.volume=-1
+Consumer:Volume_Increment 1 0 mixer -f $1 vol.volume=+1%
+Consumer:Volume_Decrement 1 0 mixer -f $1 vol.volume=-1%
Consumer:Mute 1 0 mixer -f $1 vol.mute=^
-Consumer:Channel_Top.Microsoft:Base_Up 1 0 mixer -f $1 bass.volume=+1
-Consumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass.volume=-1
+Consumer:Channel_Top.Microsoft:Base_Up 1 0 mixer -f $1 bass.volume=+1%
+Consumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass.volume=-1%
.Ed
.Pp
A sample invocation using this configuration would be
@@ -153,9 +153,9 @@
The following example controls the mixer volume using a Logitech Wingman.
Notice the debounce of 1 for buttons and 5 for the slider.
.Bd -literal -offset indent
-Button:Button_1 1 1 mixer vol.volume=+10
-Button:Button_2 1 1 mixer vol.volume=-10
-Generic_Desktop:Z * 5 mixer vol.volume=`echo $V | awk '{print int($$1/255*100)}'`
+Button:Button_1 1 1 mixer vol.volume=+10%
+Button:Button_2 1 1 mixer vol.volume=-10%
+Generic_Desktop:Z * 5 mixer vol.volume=`echo $V | awk '{printf("%.02f", $$1/255)}'`
.Ed
.Sh SEE ALSO
.Xr usbhidctl 1 ,
diff --git a/usr.sbin/mixer/mixer.8 b/usr.sbin/mixer/mixer.8
--- a/usr.sbin/mixer/mixer.8
+++ b/usr.sbin/mixer/mixer.8
@@ -21,7 +21,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 20, 2022
+.Dd April 29, 2022
.Dt MIXER 8
.Os
.Sh NAME
@@ -112,8 +112,8 @@
.It Sy Name Ta Sy Value
.It Ar dev Cm .volume Ta Xo
.Ar vol |
-.Oo Cm \&+ | Cm \&- Oc Ar lvol
-.Oo Cm \&: Oo Cm \&+ | Cm \&- Oc Ar rvol Oc
+.Oo Cm \&+ | Cm \&- Oc Ar lvol Oo % Oc
+.Oo Cm \&: Oo Cm \&+ | Cm \&- Oc Ar rvol Oo % Oc Oc
.Xc
.It Ar dev Cm .mute Ta Cm 0 | 1 | ^
.It Ar dev Cm .recsrc Ta Cm ^ | + | - | =
@@ -128,16 +128,21 @@
and/or
.Ar rvol
values have to be specified.
-The values have to be normalized 32-bit floats, from 0.0 to 1.0 inclusively.
-If no
-.Ql \&.
-character is present, the value is treated like a percentage, for backwards compatibility.
+The values should typically be decimal numbers between 0 and 1 with at most 2
+digits after the decimal point.
+A trailing percent sign indicates that the value should be treated as a
+percentage of 1.0, rather than an absolute value.
+Thus, 70% means the same as 0.7.
If the left or right volume values are prefixed with
.Cm +
or
.Cm - ,
the value following will be used as a relative adjustment, modifying the
current settings by the amount specified.
+Note that relative percentages are still relative to 1.0, not to the current
+value.
+If the volume is currently 0.40 and an adjustment of +20% is specified, then
+thet final volume will be set to 0.60.
.Pp
Volume can also be set using the shorthand
.Ar dev Ns Cm =value .
diff --git a/usr.sbin/mixer/mixer.c b/usr.sbin/mixer/mixer.c
--- a/usr.sbin/mixer/mixer.c
+++ b/usr.sbin/mixer/mixer.c
@@ -341,7 +341,7 @@
mix_ctl_t *cp;
mix_volume_t v;
const char *val;
- char lstr[8], rstr[8];
+ char *endp, lstr[8], rstr[8];
float lprev, rprev, lrel, rrel;
int n;
@@ -356,25 +356,32 @@
lrel = rrel = 0;
if (n > 0) {
if (*lstr == '+' || *lstr == '-')
- lrel = rrel = 1;
- v.left = strtof(lstr, NULL);
+ lrel = 1;
+ v.left = strtof(lstr, &endp);
+ if (*endp != '\0' && (*endp != '%' || *(endp + 1) != '\0')) {
+ warnx("invalid volume value: %s", lstr);
+ return (-1);
+ }
- /* be backwards compatible */
- if (strstr(lstr, ".") == NULL)
+ if (*endp == '%')
v.left /= 100.0f;
}
if (n > 1) {
if (*rstr == '+' || *rstr == '-')
rrel = 1;
- v.right = strtof(rstr, NULL);
+ v.right = strtof(rstr, &endp);
+ if (*endp != '\0' && (*endp != '%' || *(endp + 1) != '\0')) {
+ warnx("invalid volume value: %s", rstr);
+ return (-1);
+ }
- /* be backwards compatible */
- if (strstr(rstr, ".") == NULL)
+ if (*endp == '%')
v.right /= 100.0f;
}
switch (n) {
case 1:
v.right = v.left; /* FALLTHROUGH */
+ rrel = lrel;
case 2:
if (lrel)
v.left += m->dev->vol.left;

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 17, 4:08 PM (21 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15840415
Default Alt Text
D35101.diff (6 KB)

Event Timeline