diff --git a/bigbluebutton-client/locale/en_US/bbbResources.properties b/bigbluebutton-client/locale/en_US/bbbResources.properties
index d2260c7096..154199931e 100755
--- a/bigbluebutton-client/locale/en_US/bbbResources.properties
+++ b/bigbluebutton-client/locale/en_US/bbbResources.properties
@@ -282,18 +282,37 @@ bbb.shortcuthelp.dropdown.presentation = Presentation shortcuts
bbb.shortcuthelp.dropdown.chat = Chat shortcuts
bbb.shortcuthelp.dropdown.audio = Audio shortcuts
-bbb.shortcutkey.flash.exit = control+shift+81
+bbb.shortcutkey.flash.exit = 81
bbb.shortcutkey.flash.exit.function = Focus out of the Flash window
-bbb.shortcutkey.listeners.muteme = control+shift+77
+bbb.shortcutkey.listeners.muteme = 77
bbb.shortcutkey.listeners.muteme.function = Mute and Unmute your microphone
-bbb.shortcutkey.chat.chatinput = control+shift+67
+bbb.shortcutkey.chat.chatinput = 73
bbb.shortcutkey.chat.chatinput.function = Focus the chat input box
-bbb.shortcutkey.chat.chattabs = control+shift+53
+bbb.shortcutkey.chat.chattabs = 53
bbb.shortcutkey.chat.chattabs.function = Focus the chat tabs
-bbb.shortcutkey.present.focusslide = control+shift+83
+bbb.shortcutkey.present.focusslide = 83
bbb.shortcutkey.present.focusslide.function = Focus the presentation slide
-bbb.shortcutkey.whiteboard.undo = control+90
+bbb.shortcutkey.whiteboard.undo = 90
bbb.shortcutkey.whiteboard.undo.function = Undo last whiteboard mark
+
+bbb.shortcutkey.focus.viewers = 85
+bbb.shortcutkey.focus.viewers.function = Move focus to the Viewers window.
+bbb.shortcutkey.focus.listeners = 76
+bbb.shortcutkey.focus.listeners.function = Move focus to the Listeners window.
+bbb.shortcutkey.focus.video = 86
+bbb.shortcutkey.focus.video.function = Move focus to the Video dock.
+bbb.shortcutkey.focus.presentation = 80
+bbb.shortcutkey.focus.presentation.function = Move focus to the Presentation window.
+bbb.shortcutkey.focus.chat = 67
+bbb.shortcutkey.focus.chat.function = Move focus to the Chat window.
+
+bbb.shortcutkey.share.desktop = 68
+bbb.shortcutkey.share.desktop.function = Open desktop sharing window.
+bbb.shortcutkey.share.microphone = 79
+bbb.shortcutkey.share.microphone.function = Open microphone settings window.
+bbb.shortcutkey.share.webcam = 66
+bbb.shortcutkey.share.webcam.function = Open webcam sharing window.
+
bbb.shortcutkey.chat.chatbox.advance = shift+alt+32
bbb.shortcutkey.chat.chatbox.advance.function = Advance one message
bbb.shortcutkey.chat.chatbox.goback = control+32
diff --git a/bigbluebutton-client/src/BigBlueButton.mxml b/bigbluebutton-client/src/BigBlueButton.mxml
index 98958c03c0..1ca922fa92 100755
--- a/bigbluebutton-client/src/BigBlueButton.mxml
+++ b/bigbluebutton-client/src/BigBlueButton.mxml
@@ -110,18 +110,25 @@
private var keyCombos:Object;
private function loadKeyCombos(modifier:String):void {
- keyCombos = new Object(); // always start with a fresh array
+ keyCombos = new Object(); // always start with a fresh array
- keyCombos[(ResourceUtil.getInstance().getString('bbb.shortcutkey.flash.exit') as String)] = ShortcutEvent.FOCUS_AWAY_EVENT;
- keyCombos[(ResourceUtil.getInstance().getString('bbb.shortcutkey.listeners.muteme') as String)] = ShortcutEvent.MUTE_ME_EVENT;
- keyCombos[(ResourceUtil.getInstance().getString('bbb.shortcutkey.chat.chatinput') as String)] = ShortcutEvent.FOCUS_CHAT_INPUT;
- keyCombos[(ResourceUtil.getInstance().getString('bbb.shortcutkey.chat.chattabs') as String)] = ShortcutEvent.FOCUS_CHAT_TABS;
-
- //keyCombos[(ResourceUtil.getInstance().getString('bbb.shortcutkey.present.focusslide') as String)] = ShortcutEvent.FOCUS_SLIDE;
- keyCombos[modifier+"83"] = ShortcutEvent.FOCUS_SLIDE;
-
- keyCombos[(ResourceUtil.getInstance().getString('bbb.shortcutkey.whiteboard.undo') as String)] = ShortcutEvent.UNDO_WHITEBOARD;
- }
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.flash.exit') as String)] = ShortcutEvent.FOCUS_AWAY_EVENT;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.listeners.muteme') as String)] = ShortcutEvent.MUTE_ME_EVENT;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.chat.chatinput') as String)] = ShortcutEvent.FOCUS_CHAT_INPUT;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.chat.chattabs') as String)] = ShortcutEvent.FOCUS_CHAT_TABS; // Deprecated; doesn't actually do anything
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.present.focusslide') as String)] = ShortcutEvent.FOCUS_SLIDE;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.whiteboard.undo') as String)] = ShortcutEvent.UNDO_WHITEBOARD;
+
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.focus.viewers') as String)] = ShortcutEvent.FOCUS_VIEWERS_WINDOW;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.focus.listeners') as String)] = ShortcutEvent.FOCUS_LISTENERS_WINDOW;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.focus.video') as String)] = ShortcutEvent.FOCUS_VIDEO_WINDOW;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.focus.presentation') as String)] = ShortcutEvent.FOCUS_PRESENTATION_WINDOW;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.focus.chat') as String)] = ShortcutEvent.FOCUS_CHAT_WINDOW;
+
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.share.desktop') as String)] = ShortcutEvent.SHARE_DESKTOP;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.share.webcam') as String)] = ShortcutEvent.SHARE_WEBCAM;
+ keyCombos[modifier+(ResourceUtil.getInstance().getString('bbb.shortcutkey.share.microphone') as String)] = ShortcutEvent.SHARE_MICROPHONE;
+ }
private function hotkeyCapture():void{
LogUtil.debug("Entering hotkeyCapture");
@@ -138,12 +145,9 @@
var keyPress:String = (e.ctrlKey ? "control+" : "") + (e.shiftKey ? "shift+" : "") +
(e.altKey ? "alt+" : "") + e.keyCode;
- LogUtil.debug("WATERFALL: keyPress is " + keyPress);
- LogUtil.debug("WATERFALL: Your modifier + non-mod keys is " + modifier + e.keyCode);
- //var browserName:String = ExternalInterface.call("determineBrowser");
- //LogUtil.debug("WATERFALL: browserName is " + browserName + " and your modifier is " + modifier);
-
- //if (keyCombos == null) loadKeyCombos();
+ //LogUtil.debug("WATERFALL: keyPress is " + keyPress);
+ //LogUtil.debug("WATERFALL: Your modifier + non-mod keys is " + modifier + e.keyCode);
+
if (keyCombos[keyPress]) {
globalDispatcher.dispatchEvent(new ShortcutEvent(keyCombos[keyPress]));
}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/common/events/ToolbarButtonEvent.as b/bigbluebutton-client/src/org/bigbluebutton/common/events/ToolbarButtonEvent.as
index 4ea920e93f..5273b36dbc 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/common/events/ToolbarButtonEvent.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/common/events/ToolbarButtonEvent.as
@@ -38,6 +38,7 @@ package org.bigbluebutton.common.events
*/
public var button:IBbbToolbarComponent;
public var location:String = TOP_TOOLBAR;
+ public var module:String;
//public var tabIndex:int;
public function ToolbarButtonEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false)
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/events/ShortcutEvent.as b/bigbluebutton-client/src/org/bigbluebutton/main/events/ShortcutEvent.as
index b30118e1dd..af6eac1561 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/events/ShortcutEvent.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/events/ShortcutEvent.as
@@ -35,6 +35,17 @@ package org.bigbluebutton.main.events {
public static const GOREAD_MESSAGE:String = 'GOREAD_MESSAGE';
public static const OPEN_SHORTCUT_WIN:String = 'OPEN_SHORTCUT_WIN';
+ public static const FOCUS_VIEWERS_WINDOW:String = 'FOCUS_VIEWERS_WINDOW';
+ public static const FOCUS_LISTENERS_WINDOW:String = 'FOCUS_LISTENERS_WINDOW';
+ public static const FOCUS_VIDEO_WINDOW:String = 'FOCUS_VIDEO_WINDOW';
+ public static const FOCUS_PRESENTATION_WINDOW:String = 'FOCUS_PRESENTATION_WINDOW';
+ public static const FOCUS_CHAT_WINDOW:String = 'FOCUS_CHAT_WINDOW';
+
+ public static const SHARE_DESKTOP:String = 'SHARE_DESKTOP';
+ public static const SHARE_MICROPHONE:String = 'SHARE_MICROPHONE';
+ public static const SHARE_WEBCAM:String = 'SHARE_WEBCAM';
+
+
public var otherUserID:String;
public function ShortcutEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) {
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
index e3710f5196..e341dde1b1 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml
@@ -32,6 +32,10 @@
+
+
+
+
+ >
+
+
+
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/classyaudio/managers/ClassyAudioManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/classyaudio/managers/ClassyAudioManager.as
index 35a76b25f5..2640e33105 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/classyaudio/managers/ClassyAudioManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/classyaudio/managers/ClassyAudioManager.as
@@ -101,6 +101,7 @@ package org.bigbluebutton.modules.classyaudio.managers
private function enablePushToTalkButton():void{
var e:ToolbarButtonEvent = new ToolbarButtonEvent(ToolbarButtonEvent.ADD);
e.button = new PushToTalkButton();
+ event.module="Microphone";
//e.tabIndex = 2;
dispatcher.dispatchEvent(e);
}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/managers/ToolbarButtonManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/managers/ToolbarButtonManager.as
index 3c1cd236bd..7a07e58b96 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/managers/ToolbarButtonManager.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/deskshare/managers/ToolbarButtonManager.as
@@ -51,6 +51,7 @@ package org.bigbluebutton.modules.deskshare.managers
/* Test */ //button.tabIndex=4;
var event:ToolbarButtonEvent = new ToolbarButtonEvent(ToolbarButtonEvent.ADD);
event.button = button;
+ event.module="DeskShare";
//event.tabIndex = 0;
globalDispatcher.dispatchEvent(event);
buttonShownOnToolbar = true;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/listeners/views/ListenersWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/listeners/views/ListenersWindow.mxml
index 28ca66d20a..ae721ac730 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/listeners/views/ListenersWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/listeners/views/ListenersWindow.mxml
@@ -30,6 +30,7 @@
xmlns:mate="http://mate.asfusion.com/"
xmlns:controls="flexlib.controls.*">
+
@@ -103,6 +104,10 @@
LogUtil.debug(listenersList.enabled.toString());
}
+ private function focusWindow(e:ShortcutEvent):void{
+ focusManager.setFocus(titleBarOverlay);
+ }
+
private function updateShowPushToTalkBtn(show:Boolean):void {
showPushToTalkBtn = UserManager.getInstance().getConference().voiceJoined &&
(UserManager.getInstance().getConference().amIModerator() ||
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
index 35425e937c..6324112e4b 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml
@@ -43,6 +43,7 @@
>
+
@@ -72,6 +73,7 @@
import mx.managers.PopUpManager;
import mx.rpc.events.*;
+ import org.bigbluebutton.main.events.ShortcutEvent;
import org.bigbluebutton.common.IBbbCanvas;
import org.bigbluebutton.common.Images;
import org.bigbluebutton.common.LogUtil;
@@ -168,6 +170,10 @@
LogUtil.debug("WATERFALL Presentation slideView.slideLoader.tabIndex " + slideView.slideLoader.tabIndex);
}
+ private function focusWindow(e:ShortcutEvent):void{
+ focusManager.setFocus(titleBarOverlay);
+ }
+
private function maximizeHandler():void {
// LogUtil.debug("Max handler");
// When the window is maximized, we want to resize the slide maintaining the aspect ratio.
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMapDelegate.as b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMapDelegate.as
index 59f30fef24..386d6e647d 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMapDelegate.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/maps/VideoEventMapDelegate.as
@@ -102,6 +102,7 @@ package org.bigbluebutton.modules.videoconf.maps
button.isPresenter = !options.presenterShareOnly;
var event:ToolbarButtonEvent = new ToolbarButtonEvent(ToolbarButtonEvent.ADD);
event.button = button;
+ event.module="Webcam";
_dispatcher.dispatchEvent(event);
}
}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml
index 576f8fedd7..341c2f2dc2 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml
@@ -403,8 +403,7 @@
+
+
@@ -42,6 +43,7 @@
import mx.controls.listClasses.IListItemRenderer;
import mx.events.DataGridEvent;
import mx.events.ListEvent;
+ import org.bigbluebutton.main.events.ShortcutEvent;
import org.bigbluebutton.common.Images;
import org.bigbluebutton.common.Role;
import org.bigbluebutton.common.events.LocaleChangeEvent;
@@ -98,6 +100,10 @@
closeBtn.tabIndex = baseIndex+3;
}
+ private function focusWindow(e:ShortcutEvent):void{
+ focusManager.setFocus(titleBarOverlay);
+ }
+
private function updateNumberOfViewers(numViewers:int):void {
if (numViewers > 4)