Add alt+d deafen keyboard shortcut.

This commit is contained in:
Storm Dragon
2026-09-05 21:53:57 -04:00
parent f21e7c9960
commit cf9746c8de
10 changed files with 124 additions and 7 deletions
+11
View File
@@ -264,6 +264,17 @@ func (u *User) SetSelfDeafened(muted bool) {
u.client.Conn.WriteProto(&packet)
}
// SetSelfMutedAndDeafened changes both self-mute and self-deafen in one
// protocol update so observers never see an intermediate audio state.
func (u *User) SetSelfMutedAndDeafened(muted, deafened bool) {
packet := MumbleProto.UserState{
Session: &u.Session,
SelfMute: &muted,
SelfDeaf: &deafened,
}
u.client.Conn.WriteProto(&packet)
}
// RequestStats requests that the user's stats be sent to the client.
func (u *User) RequestStats() {
packet := MumbleProto.UserStats{
+50
View File
@@ -0,0 +1,50 @@
package gumble
import (
"net"
"testing"
"git.stormux.org/storm/barnard/gumble/gumble/MumbleProto"
"google.golang.org/protobuf/proto"
)
func TestSetSelfMutedAndDeafenedWritesOneCombinedState(t *testing.T) {
for _, deafened := range []bool{true, false} {
name := "undeafen"
if deafened {
name = "deafen"
}
t.Run(name, func(t *testing.T) {
local, remote := net.Pipe()
defer local.Close()
defer remote.Close()
client := &Client{Conn: NewConn(local)}
user := &User{Session: 7, client: client}
written := make(chan struct{})
go func() {
user.SetSelfMutedAndDeafened(true, deafened)
close(written)
}()
packetType, data, err := NewConn(remote).ReadPacket()
if err != nil {
t.Fatal(err)
}
if packetType != 9 {
t.Fatalf("packet type = %d, want UserState (9)", packetType)
}
var state MumbleProto.UserState
if err := proto.Unmarshal(data, &state); err != nil {
t.Fatal(err)
}
if state.SelfMute == nil || !*state.SelfMute {
t.Fatalf("self mute = %v, want true", state.SelfMute)
}
if state.SelfDeaf == nil || *state.SelfDeaf != deafened {
t.Fatalf("self deafen = %v, want %v", state.SelfDeaf, deafened)
}
<-written
})
}
}