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)