Help creating macro to access WOW's voice chat

I’m blind and I use a screen reader to play the game. Since BFA came out, there have been quite a few things in a game that are not accessible including the voice chat feature (you have to be able to use a mouse to access the voice chat button). Normally, I’ve had friends that have found ways around Blizz’s programming and Blizz’s dev team is supposedly working on this issue; however, I haven’t heard from then since Feb. about adding what is, essentially, a keybinding… So, I was wondering… is there a way to create a macro to get to that button? A “/click” command perhaps?

1 Like

For the three voice buttons, Channel, Deafen and Mute you can toggle them with following three scripts.

/run ChatFrameChannelButton:GetScript(‘OnClick’)(ChatFrameChannelButton)

/run ChatFrameToggleVoiceDeafenButton:GetScript(‘OnClick’)(ChatFrameToggleVoiceDeafenButton)

/run ChatFrameToggleVoiceMuteButton:GetScript(‘OnClick’)(ChatFrameToggleVoiceMuteButton)

EDIT: You will need to edit the quotes around the OnClick strings to be normal single or or double quotes.

1 Like

Ok, maybe I’m missing something but nothing happens. What is the voice button called (I’m assuming it has a specific label not just “ChatFrameChannelButton”)? This is part of my problem; because I can’t use mouse, I can’t find out what these buttons are labelled – hence, can’t create the macro because I’m literally throwing words out there hoping something sticks. Is there a pattern to them? (ex. ChatVoiceGuildChannelButton, ChatVoiceGeneralChannelButton, etc.)

ChatFrameChannelButton brings up the voice channel window when clicked.

You asked about macro clicking the voice chat without any other description so that is the button I assumed you meant.

If you meant the Push To Talk key then it can be assigned in the Interface Voice chat options. The default is the apostrophe key.

Otherwise I’m happy to try and help but at a loss as to which button you mean.

Hard to explain as I can’t see the thing. According to what I’m told, when one hits T there is a chat channels panel that opens. Within this panel there is a button one can click on with one’s mouse to get open/use voice chat… that’s the button I’m talking about – the one that you need to be able to click on with a mouse to enter voice chat. I’ve no idea what the thing is called; there doesn’t, currently, appear to be a way to create a keybinding for the thing.

It is difficult to create a single universal code because the chat channel window list is customizable. I’ve created the following addon you might be able to use to help get to what you need.

It requires being able to read the General chat text which I hope your screen reader can do.

It uses a slash command to run. Slash ac being short for slash Anerria Chat.

Slash ac on it’s own will list the chat channels you have that are voice enabled, ie. they have a button that looks like headphones. The list is formatted as, channel number and channel name eg. 3 General.

Slash ac followed by a channel number will toggle that voice channel on and off.

Once you know which channel number you want, you should be able to just use the slash command with channel number in a macro until your channel list changes.

The following code inside the code tags can be pasted into the web site addon.bool.no to create and download the addon.

local function ListChannels(activate)
	if not ChannelFrame.ChannelList.buttons then
		ChannelFrame.ChannelList:Update()
	end
	local list = ChannelFrame.ChannelList.buttons
	if activate then
		if not list[activate] or list[activate]:GetChannelType() ~= 4 then
			print("Anerria Chat: Channel "..activate.. " Not found or not a voice channel")
			PlaySoundFile("Sound/Creature/Peon/PeonWhat4.ogg")
			return
		end
		list[activate].Speaker.Button:GetScript("OnClick")(list[activate].Speaker.Button)
		PlaySoundFile("Sound/Creature/Peon/PeonBuildingComplete1.ogg")
		return
	end
	print("Anerria Chat", "Listing Channels")
	for i=1, #list do
		if list[i]:GetChannelType() == 4 then
			print(i .. " " ..list[i]:GetChannelName())
		end
	end
	PlaySoundFile("sound/creature/peon/peonyes4.ogg")
end

SLASH_ANERRIACHAT1 = "/ac"
SlashCmdList["ANERRIACHAT"] = function(msg)
	if msg ~= "" then
		local i = tonumber(msg)
		ListChannels(i)
		return
	end
	ListChannels()
end
1 Like

To use the slash command in a macro with just the chat channel you want to activate you can use:

/run SlashCmdList["ANERRIACHAT"](3)

Replace the 3 with the desired voice channel number.

It also supports /voice party and /voice instance :pray:

1 Like

Of course, after I’ve done the hard yards :rofl:.

You could say they were earlier (ptr build 2019-04-18) :yum:
https://www.townlong-yak.com/framexml/30123/ChatFrame.lua/diff#2552

Now why would I do that :thinking: ? :laughing:
Good to see it’s fixed.

If the responses before were not clear before, if you want to join a voice chat without opening the voice chat channel you type /voice party, or /voice instance or whatever type of group you are in