<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
<document xmlns="http://maven.apache.org/XDOC/2.0"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
	<properties>
		<title>Hot Keys</title>
		<author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
	</properties>
	<body>
		<section name="Keys table">
			<table>
				<tr>
					<th>Key</th>
					<th>Functionality</th>
					<th>Configurable</th>
					<th>Config Key</th>
				</tr>
				<tr>
					<td>Shift+F12 (code 123)</td>
					<td>A hot key code for the 'mute others' functionality.</td>
					<td>Yes</td>
					<td>mute.others.keycode</td>
				</tr>
				<tr>
					<td>Shift+F8 (code 119)</td>
					<td>Room video windows will be "rearranged" using masonry layout</td>
					<td>Yes</td>
					<td>video.arrange.keycode</td>
				</tr>
				<tr>
					<td>Shift+F7 (code 118)</td>
					<td>A hot key code for the 'mute/unmute audio' functionality.</td>
					<td>Yes</td>
					<td>mute.keycode</td>
				</tr>
			</table>
		</section>
	</body>
</document>