Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Push-to-Talk Support for Jitsi #2280

wants to merge 26 commits into
base: develop


None yet
2 participants
Copy link

commented Nov 15, 2018

Implements the matrix-react-sdk portion of Push-to-Talk support for Jitsi voice and video calls. The riot-web portion is vector-im/riot-web#7709.

Push-to-Talk allows someone to temporarily unmute their microphone during a Jitsi call with just the push of a button. Releasing the button causes their microphone to become muted again. This is exceptionally useful during calls with 3+ people.

The pipeline involved to make this work stretches quite far, from a new native node module in Riot's electron_app, called iohook, that can handle listening for whitelisted shortcuts even when Riot is minimized, to Scalar/Dimension that is hosting the Jitsi session within its own iframe.

Currently any combination of keyboard keys can be used for a shortcut. Here is the current layout:


The functionality of the setting is currently complete, however I may need some help aligning the different elements, and styling the Set button. Otherwise if someone has an idea for a much better-looking UI, I'm open to it (though I may opt to move it to a separate PR).

Note: This has currently only been tested on Linux. Testing on Mac/Windows/Other would be highly appreciated!

Future TODOs that may or may not be out of scope for this PR:

  • Audio cue for when mic is un/muted, so people know their shortcut is working and their mic is active.
  • Mute Jitsi by default on load if Push-to-Talk enabled

TODOs that are definitely out of scope for this PR, but that I would like to see if the future:

  • Mouse keybinding support for Push-To-Talk (those many buttons on gaming mice)

This comment has been minimized.

Copy link
Member Author

commented Feb 24, 2019

Current UI:


Anyone know how to separate the Set button from the Shortcut: ... div? I want the Set on the right and Shortcut on the left.

@anoadragon453 anoadragon453 force-pushed the anoa/jitsi_ptt branch from db6bc54 to d346c13 Feb 24, 2019

anoadragon453 added some commits Feb 24, 2019

Merge branch 'develop' into anoa/jitsi_ptt
* develop: (74 commits)
  Send Field label pointer events to input
  Fix backup button in logout dialog
  Keep registration spinner inside the auth modal
  Rename Feather icon directory to `feather-customised`
  Make sure direct chat invites are treated as invites
  move canSendMessages into state so that it will re-render the composer
  Try to clarify that "Show read receipts" is just for visibility
  Move logos out of feather dir
  Move E2E icons out of feather dir
  Make the settings documentation fit within 120 characters per line
  Use a global WatchManager for settings
  Clarify finding first non-null field error
  fix lint
  make it i18n friendly
  Apply PR feedback, don't change room to go to its settings
  make better use of space
  set membership in case we don't get the ev
  Fix textareas
  Support custom tags in the new algorithm
  Fix variable reference
if (!ActiveWidgetStore.getWidgetMessaging( {

This comment has been minimized.

Copy link

anoadragon453 Mar 8, 2019

Author Member

Note to reviewers: this was causing Jitsi to stop receiving messages after going to a different room and back. I'm not sure if removing this check has any other adverse effects but so far I've noticed none.

anoadragon453 added some commits Mar 8, 2019

Merge branch 'develop' into anoa/jitsi_ptt
* develop: (315 commits)
  Support CI for matching branches on forks
  Don't show calculated room name in room settings name input field
  Disable big emoji for m.emote messages as it looks weird
  Update yarn.lock
  Remove Edge from browser support statements
  Prepare changelog for v1.0.4
  Released js-sdk
  Translated using Weblate (Slovak)
  Translated using Weblate (Russian)
  Translated using Weblate (Russian)
  Translated using Weblate (Russian)
  Translated using Weblate (Portuguese (Brazil))
  Translated using Weblate (Finnish)
  Translated using Weblate (Basque)
  Translated using Weblate (Arabic)
  Translated using Weblate (Albanian)
  Translated using Weblate (Russian)
  Translated using Weblate (Russian)
  Discard old sticker picker when the URL changes
toggleJitsiAudio() {
return this.messageToWidget({
action: "audioToggle",

This comment has been minimized.

Copy link

turt2live Mar 24, 2019


these 3 actions should require a bump in API version, as shown here:

Also, if you need to figure out if the widget will even support it, a toWidget API request for supported_api_versions should reveal that.

This comment has been minimized.

Copy link

anoadragon453 Apr 9, 2019

Author Member

So doing this instead of checking for "jitsi" may be better?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.