Inconsistent Hotkey Detection

Hi,

I have recently added a USB macro keyboard to my system, there are 4 buttons bound to keys:
XF86Launch1, XF86Launch2, XF86Launch3, XF86Launch4.

The button presses work no problem when I bind them in other software such as discord, or if I bind the button so it launches a program etc.

teamspeak has no problem detecting the keypress to initially bind the key, as shown in the screenshot, XF86Launch4 has bound without a problem. But past that, teamspeak is unresponsive to keypresses. Even when focused on the window, the microphone is not toggled. Regular keyboard keys work as expected when bound to the same hotkey.

I have tested the key in isolation (no other programs listening for XF86Launch4, only teamspeak). But it still seems to ignore the keypress after the initial binding.

Hope someone can help, thanks :slight_smile:

Version: 3.5.6, Qt Version: 5.12.1

hi,
try to put it on key release instead off downf

Hey, bound this to key release but there is no difference. Thanks for the reply!

Ok i already made some research about keybinding problem on teamspeak and i found this for uncompatible device : antimicro
It’s avalaible on linux. Give a try and let me know.
It will just “spoof/redirect” the input signal from the controller to a keyboard one.

Do you have the teamspeak plugin for controller ?
https://www.myteamspeak.com/addons/9415ef5c-736c-4780-b4df-4cd53c886a8d

Wait a bit, you said that teamspeak is not responsive ? even not connected on any server ?

Hey,

I’ve tried to install that plugin, but I don’t know if it will work on linux, it is all just .dll files which I am not sure run on linux.
Also I have spent like 15-20 mins searching for where the plugins directory should actually live on linux. I have no idea, I tried putting that controller plugin in /opt/teamspeak3/plugins but nothing is detected. As I say, could be more of an issue with the .dll files than anything else.
I did install a random plugin from the addon browser within the client itself, but I can’t figure out where it has placed it, it hasn’t made a plugins/ directory anywhere I can see. Not in $HOME/.config/ or $HOME/.local/share/Teamspeak 3/ or /opt/teamSpeak3 :man_shrugging:

Plugins are installed on LInux into $HOME/.ts3client/plugins, just so you know.

DLLs don’t work on Linux, these are Windows dynamic libraries.

On the other note, are you able to change what key is being pressed on that keyboard (in other words, does this keyboard come with some software, even Windows one)? If not, maybe try installing AutoHotkey via Wine and creating a script that’ll bound a hotkey to that key (eg. F13-F25 or something like that).

One more thing! Which hotkey profile do you use when connecting to server? Synchronized one or local one? Additionally, are they different in any way?

Did you tried if the key work when you are not connected ?
It’s just to see if it’s not a related profil problem.
I mean if you can bind the key then it should work all time.

Software-wise it’s really customizable, it’s essentially an arduino lenonardo with the ardunio keyboard library to act as a HID, so I can fire pretty much whatever key I want.

I have just tried binding one of the buttons to F5, TS will set the keybind to mute the mic, when I press the button to mute, it doesn’t work, but I have noticed that if I spam the button, now and again it will toggle mic mute in TS. It seems to either be missing the keypress events.
Because the binding is now F5, I decided to try the button in a browser, refreshing a web page to test if it was my keypad that was problem, but it works fine, doesn’t miss any presses and I can spam as much as I want.

I only have the default hotkey profile, local I presume, never set up any sort of sync.

that doesn’t answer to my question, have you tried while disconnected ?
do you have teamviewer or any screen sharing apps ?

I have mostly been trying while disconnected, just checked the bookmarks and they are all default.

I dunno, I guess I have discord? I can get teamviewer, will be handy anyway. Do you want to see a specific screen? I can send more screenshots :slight_smile:

just a screensharing app and antimicro installed.
But maybe there is something else than antimicro for linux.
i’ ll take a look

Ok.
For TeamSpeak to accept any non mouse or keyboard inputs as hotkeys - e.g. controllers / gamepads / makropads - you need the above mentioned plugin.
This plugin is needed since ~ 2017. Since then there never has been a linux version and most likely never will :(.
This means there is no way to use those keys as hotkeys when running native TeamSpeak on Linux.

What you could do is run TS through wine and add the Plugin for windows.
Or you could write your own plugin to handle the hotkeys.

Those are the only two ways you currently can get this to work. Nothing else will help.

1 Like

It is a shame because these docs do say it will be seen as a keyboard:

Notes and Warnings

These core libraries allow the 32u4 and SAMD based boards (Leonardo, Esplora, Zero, Due and MKR Family) to appear as a native Mouse and/or Keyboard to a connected computer.

The arduino I am using is a Leonardo 32u4, can you be more detailed about what the problem is? The plugin is for Gamepad & Joysticks, it doesn’t mention secondary keyboards anywhere on it

That might be true, BUT those keys:

are not default keyboard keys and thus will not be detected without the plugin.

But why teamspeak detect them and is able to bind the key ? i don’t get it

Ok other question.
Did you add all three flags (press, hold, release) to the arduino?

That’s understandable, I am willing to bind to something common, like F5. It would be nice to get to the bottom of why the key is only occasionally detected. They presses are detected fine when I use xinput test <keypad id>.

I am using keyboard.write(). This is the source, it seems to just call press then release.

The plugin is currently broken on AMD systems… trying to get the TS staff to forward it to the plugin dev as they did in years past…

Bumping this… it’s still an issue.