From nobody Sat Jun 18 20:26:37 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AFE7C85BA75; Sat, 18 Jun 2022 20:26:41 +0000 (UTC) (envelope-from rpokala@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LQS9s4ZKzz54Bp; Sat, 18 Jun 2022 20:26:41 +0000 (UTC) (envelope-from rpokala@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655584001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a4vqkkijcdKSfJozyhSPokTWf3gnRxpQVeed7V12Rps=; b=ctJosyfHWpUbzxJbM77cM8zlZMTFiXVlXMuAzMXKEpB0jZZi3O7AwvzQG/D2khA6iN6Ikb nPPRuvCoez3oIy6UsUMO6cTB/HYmixz3KrRJYjEmD6iLtYo0XXSXQ/2CjVwKoYpU/bGrDJ eNA8Dx4LhAUNDAWu4NiejdSA9558oEP4vRi9rLhrn8/Re/5Jo/dCFn0KkYChm5L1eT/EQV yvLkRY7S2dT68odffg2SCGUH47mOqKVGvdqV0mqc2luzFR0zDmoH1cVlHiwwky6fsBgsO5 ud03maighpLAvHG5rXNJCWvUxbqorhCr19GfhzHE8oWhxLdeaxDSyeoXnZl0bQ== Received: from [192.168.1.10] (unknown [IPv6:2601:641:700:5284:b82c:3ae1:5a9f:bb50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: rpokala) by smtp.freebsd.org (Postfix) with ESMTPSA id F16DD13FB; Sat, 18 Jun 2022 20:26:40 +0000 (UTC) (envelope-from rpokala@freebsd.org) User-Agent: Microsoft-MacOutlook/16.62.22061100 Date: Sat, 18 Jun 2022 13:26:37 -0700 Subject: Re: 4014365e4219 - main - mixer: remove volume backwards compat, add % interpretation From: Ravi Pokala To: Kyle Evans , , , Message-ID: <7D9CA81D-1688-4B99-97ED-EB40A60EBF60@panasas.com> Thread-Topic: 4014365e4219 - main - mixer: remove volume backwards compat, add % interpretation References: <202206180353.25I3rkKc096344@gitrepo.freebsd.org> In-Reply-To: <202206180353.25I3rkKc096344@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org Mime-version: 1.0 Content-type: text/plain; charset="UTF-8" Content-transfer-encoding: quoted-printable ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655584001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a4vqkkijcdKSfJozyhSPokTWf3gnRxpQVeed7V12Rps=; b=bMKlr45blXbO08qOQQwAyDMINpW48UWvsdAT0KIAv/pn+1zPah+ALExbvGmT9d2eNhNneD p0nHYbEa3KzI4XmXyOoHqwt1rm83iPhW8w0BQPYnENamCbx4lw4GUvLqgQJ8kgxM5tXcfU R1CspCw7TlPk2mT0R7HnjkZsw8VbHipu41jJyCkpcHcpwN3kzpnSsYHWRFaEZZdOk6dT/u P4g1lt68IH+yXYVZljKWsa05o+ebawf4GEo1FoHXfDzGvxw6o8Krk7xMegCNWFMKczVbXc 9/jYn4Y8VrtcANqRmf4hbC6UuLO9DaGK8Wh0Fh7aoN2FsDhfvpDiQXBwUJqtZQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655584001; a=rsa-sha256; cv=none; b=fTI4Mhdsl1zaHX6LrXi77BEMNAgztvPk5Bgz0SLtl4JC2ULP6k+8+4uOQQnvuDqnqjDYyf HpYEy0TRojz8ufLoXUBlyhsqMTpO/j3JY9NTdeD8NvJTYg3kJIvfinOHL4TYO9PVV471Dj B0r3T8Ldt9PM6thCbroB8MFQsUuCIYX94Y1FQDhe50W766z3g8IZ+HuxKia77Tz3irgvTC 3UHOHmCYXu5iZLNRbptMNZlO/he876fScDzx80pvDZeetPJXwC6O3jp8Ot9BBNlDvsHZAU XwGq7jCUKO54PHN95yoWbFu59DPUmjzuLSsvrFUu2oBauz0yEQDVb397t3Zr7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N H Kyle, | +Note that relative percentages are still relative to 1.0, not to the cur= rent | +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. What you're describing are *absolute* percentages, not relative. Please rew= ord accordingly. Also, "thet" =3D> ("the" || "that"). Thanks, Ravi (rpokala@) =EF=BB=BF-----Original Message----- From: on behalf of Kyle Evans Date: 2022-06-17, Friday at 20:53 To: , , Subject: git: 4014365e4219 - main - mixer: remove volume backwards compat, = add % interpretation The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3D4014365e421991814703249d47= 48d6dcac6686b6 commit 4014365e421991814703249d4748d6dcac6686b6 Author: Kyle Evans AuthorDate: 2022-04-30 03:12:56 +0000 Commit: Kyle Evans CommitDate: 2022-06-18 03:50:58 +0000 mixer: remove volume backwards compat, add % interpretation The current situation is fairly confusing, where an integer is inte= rpreted as a percent until you slap a decimal on it and magically it become= s an absolute value. Let's have a flag day in 14.0 and remove this shim entirely. Setti= ng with percent can still be useful, so allow a trailing '%' to indicate as= such. As a side effect, we tighten down the format allowed in the volume = a little bit by ensuring there's no trailing garbage after the value once it= 's separated into left and right components. Reviewed by: christos, hselasky, pauamma_gundo.com (manpages) Relnotes: yes Differential Revision: https://reviews.freebsd.org/D35101 --- sbin/devd/apple.conf | 4 ++-- sbin/devd/asus.conf | 8 ++++---- share/man/man4/acpi_ibm.4 | 2 +- usr.bin/fortune/datfiles/freebsd-tips | 2 +- usr.bin/usbhidaction/usbhidaction.1 | 14 +++++++------- usr.sbin/mixer/mixer.8 | 19 ++++++++++++------- usr.sbin/mixer/mixer.c | 23 +++++++++++++++-------- 7 files changed, 42 insertions(+), 30 deletions(-) diff --git a/sbin/devd/apple.conf b/sbin/devd/apple.conf index 0729a9c86e7a..0a9143f7b5a5 100644 --- a/sbin/devd/apple.conf +++ b/sbin/devd/apple.conf @@ -52,7 +52,7 @@ notify 0 { match "subsystem" "keys"; match "type" "volume"; match "notify" "down"; - action "mixer vol.volume=3D-10"; + action "mixer vol.volume=3D-10%"; }; notify 0 { @@ -60,7 +60,7 @@ notify 0 { match "subsystem" "keys"; match "type" "volume"; match "notify" "up"; - action "mixer vol.volume=3D+10"; + action "mixer vol.volume=3D+10%"; }; # Eject key diff --git a/sbin/devd/asus.conf b/sbin/devd/asus.conf index eed369f6ca4d..0074e7a7c55f 100644 --- a/sbin/devd/asus.conf +++ b/sbin/devd/asus.conf @@ -14,14 +14,14 @@ notify 0 { match "system" "ACPI"; match "subsystem" "ASUS"; match "notify" "0x31"; - action "mixer vol.volume=3D-10"; + action "mixer vol.volume=3D-10%"; }; notify 0 { match "system" "ACPI"; match "subsystem" "ASUS"; match "notify" "0x30"; - action "mixer vol.volume=3D+10"; + action "mixer vol.volume=3D+10%"; }; # The next blocks enable volume hotkeys that can be found on the Asus = EeePC @@ -36,14 +36,14 @@ notify 0 { match "system" "ACPI"; match "subsystem" "ASUS-Eee"; match "notify" "0x14"; - action "mixer vol.volume=3D-10"; + action "mixer vol.volume=3D-10%"; }; notify 0 { match "system" "ACPI"; match "subsystem" "ASUS-Eee"; match "notify" "0x15"; - action "mixer vol.volume=3D+10"; + action "mixer vol.volume=3D+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 index 290c7d3b29c1..434a1a7cba2c 100644 --- a/share/man/man4/acpi_ibm.4 +++ b/share/man/man4/acpi_ibm.4 @@ -455,7 +455,7 @@ case ${NOTIFY} in fi if [ $LEVEL -eq 1 ]; then sysctl dev.acpi_ibm.0.mic_led=3D0 - mixer rec.volume=3D30 + mixer rec.volume=3D30% fi ;; *) diff --git a/usr.bin/fortune/datfiles/freebsd-tips b/usr.bin/fortune/da= tfiles/freebsd-tips index e8fa84e02489..930110a0c3fe 100644 --- a/usr.bin/fortune/datfiles/freebsd-tips +++ b/usr.bin/fortune/datfiles/freebsd-tips @@ -339,7 +339,7 @@ If you have sudo(8) installed and permissions to us= e it, type ``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 .volume=3D'. To get a list of w= hat +computer by typing 'mixer .volume=3D%'. 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 index f50af8fff1ad..54d114925714 100644 --- a/usr.bin/usbhidaction/usbhidaction.1 +++ b/usr.bin/usbhidaction/usbhidaction.1 @@ -139,11 +139,11 @@ The following configuration file can be used to c= ontrol a pair 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=3D+1 -Consumer:Volume_Decrement 1 0 mixer -f $1 vol.volume=3D-1 +Consumer:Volume_Increment 1 0 mixer -f $1 vol.volume=3D+1% +Consumer:Volume_Decrement 1 0 mixer -f $1 vol.volume=3D-1% Consumer:Mute 1 0 mixer -f $1 vol.mute=3D^ -Consumer:Channel_Top.Microsoft:Base_Up 1 0 mixer -f $1 bass.volume=3D+1 -Consumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass.volume=3D-= 1 +Consumer:Channel_Top.Microsoft:Base_Up 1 0 mixer -f $1 bass.volume=3D+1= % +Consumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass.volume=3D-= 1% .Ed .Pp A sample invocation using this configuration would be @@ -153,9 +153,9 @@ A sample invocation using this configuration would = be The following example controls the mixer volume using a Logitech Wingm= an. Notice the debounce of 1 for buttons and 5 for the slider. .Bd -literal -offset indent -Button:Button_1 1 1 mixer vol.volume=3D+10 -Button:Button_2 1 1 mixer vol.volume=3D-10 -Generic_Desktop:Z * 5 mixer vol.volume=3D`echo $V | awk '{print int($$1/= 255*100)}'` +Button:Button_1 1 1 mixer vol.volume=3D+10% +Button:Button_2 1 1 mixer vol.volume=3D-10% +Generic_Desktop:Z * 5 mixer vol.volume=3D`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 index 284750538f7e..9a76cbe41f65 100644 --- 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 @@ with one of the available devices): .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 ^ | + | - | =3D @@ -128,16 +128,21 @@ The optional and/or .Ar rvol values have to be specified. -The values have to be normalized 32-bit floats, from 0.0 to 1.0 inclus= ively. -If no -.Ql \&. -character is present, the value is treated like a percentage, for back= wards 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 t= he current settings by the amount specified. +Note that relative percentages are still relative to 1.0, not to the c= urrent +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 =3Dvalue . diff --git a/usr.sbin/mixer/mixer.c b/usr.sbin/mixer/mixer.c index c0a9ec25c6fa..e216efe3313c 100644 --- a/usr.sbin/mixer/mixer.c +++ b/usr.sbin/mixer/mixer.c @@ -341,7 +341,7 @@ mod_volume(struct mix_dev *d, void *p) 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 @@ mod_volume(struct mix_dev *d, void *p) lrel =3D rrel =3D 0; if (n > 0) { if (*lstr =3D=3D '+' || *lstr =3D=3D '-') - lrel =3D rrel =3D 1; - v.left =3D strtof(lstr, NULL); + lrel =3D 1; + v.left =3D strtof(lstr, &endp); + if (*endp !=3D '\0' && (*endp !=3D '%' || *(endp + 1) !=3D '\0')) { + warnx("invalid volume value: %s", lstr); + return (-1); + } - /* be backwards compatible */ - if (strstr(lstr, ".") =3D=3D NULL) + if (*endp =3D=3D '%') v.left /=3D 100.0f; } if (n > 1) { if (*rstr =3D=3D '+' || *rstr =3D=3D '-') rrel =3D 1; - v.right =3D strtof(rstr, NULL); + v.right =3D strtof(rstr, &endp); + if (*endp !=3D '\0' && (*endp !=3D '%' || *(endp + 1) !=3D '\0')) { + warnx("invalid volume value: %s", rstr); + return (-1); + } - /* be backwards compatible */ - if (strstr(rstr, ".") =3D=3D NULL) + if (*endp =3D=3D '%') v.right /=3D 100.0f; } switch (n) { case 1: v.right =3D v.left; /* FALLTHROUGH */ + rrel =3D lrel; case 2: if (lrel) v.left +=3D m->dev->vol.left;