<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
	<properties>
		<title>Hot Keys</title>
		<author email="solomax@apache.org">
			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>F12 (code 123)</td>
					<td>A hot key code for the 'give exclusive audio' functionality.</td>
					<td>Yes</td>
					<td>exclusive.audio.keycode</td>
				</tr>
				<tr>
					<td>F8 (code 119)</td>
					<td>If 1 or 2 video windows are present in the room they will be
						"rearranged" to take all the place available</td>
					<td>No</td>
					<td>
					</td>
				</tr>
				<tr>
					<td>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>