chore(windows): FirstVoices Keyboards Configuration merge

Fixes #3540.

Merges all relevant changes from Keyman Configuration xml folder into
the FirstVoices Keyboards xml folder.

Adds support for enabling/disabling keyboards for FirstVoices Keyboards.

Renames from Keyman Desktop for FirstVoices to Keyman for FirstVoices.
This commit is contained in:
Marc Durdin 2021-02-10 10:37:23 +11:00
parent 9a3aaaaaba
commit ea0d08ca4f
45 changed files with 1913 additions and 1511 deletions

View file

@ -6,6 +6,7 @@ src/inst/*.exe
src/inst/download.mak
src/inst/fv_all.kmp
src/xml/localedef.dtd
src/xml/sentry.init.js
**/Thumbs.db
# Temporary ignores

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

@ -11,7 +11,7 @@ MSI=firstvoices.msi
EXE=firstvoices.exe
KMP=fv_all.kmp
INTEXE=firstvoices-fv_all.exe
APPTITLE="FirstVoices Keyboards"
APPTITLE="Keyman for FirstVoices"
TITLEIMAGE=setuptitle.png
# If doing manual build of the project, manual-setup is the default target
@ -28,6 +28,9 @@ prereq:
cd $(FVROOT)\src\inst
$(MKVER_U) download.in download.mak
cd $(FVROOT)\src\xml
$(MKVER_U) sentry.init.js.in sentry.init.js
#
# Build FirstVoices keyboards fv_all.kmp
#

View file

@ -9,7 +9,7 @@
</head>
<body lang="en">
<h1>FirstVoices Keyboards</h1>
<h1>Keyman for FirstVoices and FirstVoices Keyboards</h1>
<h2>The MIT License</h2>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -1,20 +1,21 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
<xsl:variable name="dialoginfo_basekeyboard" select="$dialoginfo/Dialog[@Id='BaseKeyboard'][1]" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="$locale/string[@name='S_BaseKeyboard_Title']"/></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>config.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css" href="/app/config.css" />
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; }
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";}
html {
font-size: 11px;
@ -29,7 +30,7 @@ html {
body {
font-size: 11px;
text-align: justify;
padding: 0;
padding: 0;
margin: 0px;
width: <xsl:value-of select="$dialoginfo_basekeyboard/@Width" />px;
height: <xsl:value-of select="$dialoginfo_basekeyboard/@Height" />px;
@ -49,15 +50,15 @@ div {
font-size: 13.3px;
}
#border {
border: 1px solid #AD4A29;
#border {
border: 1px solid #AD4A29;
position: absolute;
left: 0;
top: 0;
width: <xsl:value-of select="$dialoginfo_basekeyboard/@Width - 2" />px;
width: <xsl:value-of select="$dialoginfo_basekeyboard/@Width - 2" />px;
height: <xsl:value-of select="$dialoginfo_basekeyboard/@Height - 2" />px;
}
#content {
padding: 10px;
text-align: center;
@ -69,7 +70,7 @@ div {
height: 36px;
text-align: center;
width: 100%;
}
}
.form { position: absolute; display: block; vertical-align: middle; height: 24px; }
#ProxyServerLabel { left: 16px; top: 20px;}
@ -93,7 +94,7 @@ div {
location.href='keyman:footer_ok?'+
'id='+document.getElementById('options_base_keyboard_select').value;
}
document.onkeydown = function()
{
if(event.keyCode == 13 && (!event.srcElement.type || event.srcElement.type != 'button')) ok();
@ -108,7 +109,7 @@ div {
<div id='content'>
<p><xsl:value-of select="$locale/string[@name='S_BaseKeyboard_Text']"/></p>
<div id="options_base_keyboard">
<select id='options_base_keyboard_select'>
<xsl:for-each select="//BaseKeyboards/BaseKeyboard">
@ -120,7 +121,7 @@ div {
</xsl:for-each>
</select>
</div>
</div>
</div>
<div id="footer">
<xsl:call-template name="button">
<xsl:with-param name="default">1</xsl:with-param>
@ -139,4 +140,4 @@ div {
</body>
</html>
</xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>

View file

@ -1,7 +1,3 @@
*
{
font-family: Tahoma;
}
#state
{
display: none;
@ -10,7 +6,7 @@
#displaylanguage
{
left: 8px;
font-size: 11px;
font-size: 12px;
position: absolute;
top: 64px;
color: #000000;
@ -23,7 +19,7 @@
{
position: absolute;
left: 0px;
top: 37px;
top: 40px;
width: 117px;
overflow-x: hidden;
overflow-y: hidden;
@ -72,7 +68,7 @@
{
background: #79C3DA;
width: 117px;
height: 37px;
height: 40px;
position: absolute;
top: 0;
left: 0;
@ -83,7 +79,7 @@
background: none;
overflow-x: hidden;
overflow-y: auto;
font-size: 12px;
font-size: 13px;
border-right: 1px solid #6D6C6F;
border-top: 1px solid #6D6C6F;
border-bottom: 1px solid #6D6C6F;
@ -132,12 +128,25 @@
border-right: 1px solid #6D6C6F;
}
.footer_instant {
font-size: 12px;
padding-top: 3px;
padding-right: 3px;
}
input[type='submit'], input[type='button'], button
{
background: #F68924;
border-radius: 4px;
color: #33333f;
border: none;
vertical-align: top;
}
input[type='submit']:disabled, input[type='button']:disabled, button:disabled
{
color: #c0c0cf;
background: #80808f;
}
a.hotkey:link, a.hotkey:visited
@ -171,9 +180,10 @@ html
.helplinks
{
padding: 4px 4px 0 0;
padding: 6px 4px 0 0;
float: right;
font: 12px Tahoma;
font-size: 12px;
font-weight: normal;
}
.helplinks a
{
@ -391,30 +401,30 @@ table tr
}
#keyboards .item .list_icon {
float: left;
float: left;
margin: 2px 6px 4px 1px;
}
/* no keyboards installed box */
.info#keyboards {
position: absolute;
position: absolute;
top: 25%;
}
.info#keyboards > div {
position: relative;
left: 0;
top: 0;
font-size: 13.3px;
margin: 0 12px;
border: solid 1px gray;
padding: 8px;
position: relative;
left: 0;
top: 0;
font-size: 13.3px;
margin: 0 12px;
border: solid 1px gray;
padding: 8px;
background: #F5F6BE
}
.info#keyboards > div > img {
float: left;
float: left;
margin: 0 8px 0 0;
}
@ -530,6 +540,8 @@ table tr
}
.keyboard-language:hover a
{
position: relative;
z-index: 10;
visibility: visible;
}
@ -586,7 +598,6 @@ table tr
font-weight: bold;
color: #001020;
padding: 4px 8px;
height: 16px;
}
.options_list_help
@ -601,11 +612,11 @@ table tr
overflow: hidden;
}
#options_base_keyboard_current {
display: inline-block;
#options_base_keyboard_current {
display: inline-block;
padding-top: 5px;
}
/* Hotkey Styles */
#subcontent_hotkeys .list_item
@ -714,7 +725,7 @@ th
.support_links {
right: 0;
top: 38px;
top: 41px;
width: 140px;
height: 100%;
padding: 12px;
@ -780,7 +791,6 @@ th
margin: 6px 0px 0 10px;
font-size: 12pt !important;
font-weight: bold;
font-family: Calibri !important;
height: 32px !important;
background: #0AB8A0;
color: white;
@ -811,14 +821,15 @@ th
{
clear: left;
float: left;
font: bold 11px Tahoma;
font-size: 11px;
font-weight: bold;
color: #333;
}
.support_line_content
{
float: left;
margin-left: 20px;
font: 11px Tahoma;
font-size: 11px;
color: black;
}
.support_line_content .beta
@ -836,7 +847,7 @@ th
}
.support_content_header
{
font: 16px Tahoma;
font-size: 16px;
margin: 10px 0;
color: #333;
}
@ -873,7 +884,6 @@ th
#pro_content {
padding: 5px 20px 5px 20px;
font-family: Calibri !important;
}
.pro_title {
@ -901,7 +911,6 @@ th
#pro_upgrade_button_bottom input {
font-size: 14pt !important;
font-weight: bold;
font-family: Calibri !important;
height: 32px !important;
background: #0AB8A0;
color: white;
@ -915,7 +924,6 @@ th
#pro_content p {
font-size: 14pt;
color: #444444;
font-family: Calibri;
font-weight: bold;
}
@ -929,7 +937,6 @@ th
border: solid 1px #cccccc;
font-size: 11pt;
padding: 4px 8px;
font-family: Calibri !important;
}
#pro_features th {
@ -957,16 +964,16 @@ th
}
.keyboard-language-title {
color: #444444;
float:right;
padding-top: 5px;
color: #444444;
float:right;
padding-top: 5px;
margin-right: 8px;
text-decoration: none;
}
.keyboard-language-title .language-icon {
padding-top: 0px;
margin-top: -2px;
padding-top: 0px;
margin-top: -2px;
margin-left: 8px;
visibility: visible;
}
@ -982,7 +989,7 @@ th
padding-left: 8px;
}
.keyboard-language-title:hover,
.keyboard-language-title:hover,
.keyboard-language-title:active {
text-decoration: underline;
cursor: pointer;
@ -1005,7 +1012,7 @@ th
}
#keepintouch_content {
height: 100%;
height: 100%;
overflow: hidden;
}

View file

@ -14,11 +14,11 @@ function _$(e)
function windowResize()
{
var
eContent = _$('contentframe'),
eFooter = _$('footerframe'),
var
eContent = _$('contentframe'),
eFooter = _$('footerframe'),
eMenu = _$('menuframe');
if(eContent && eFooter && eMenu)
{
eContent.style.height = (document.body.offsetHeight - eFooter.offsetHeight - 1) + 'px';
@ -26,7 +26,7 @@ function windowResize()
eContent.style.left = eMenu.offsetWidth + 'px';
eContent.style.top = 0 + 'px';
eMenu.style.height = (document.body.offsetHeight - eFooter.offsetHeight - eMenu.offsetTop) + 'px';
var h = (eContent.offsetHeight - 37 - 2) + 'px'; // header height and border height
_$('subcontent_keyboards').style.height = h;
_$('subcontent_options').style.height = h;
@ -42,23 +42,23 @@ function windowResize()
doAttachEvent(window, 'resize', windowResize);
doAttachEvent(window, 'load', windowResize);
document.addEventListener("DOMContentLoaded", windowResize);
function list_mousedown(event,n)
{
var e = document.getElementById('list_'+n);
window.setTimeout(function() { e.focus(); }, 10);
}
function list_focus(event,n)
{
return true;
}
function list_blur(event,n)
{
return true;
}
function list_keydown(event,n)
{
switch(event.keyCode)
@ -75,7 +75,7 @@ document.addEventListener("DOMContentLoaded", windowResize);
elem.children[i].focus();
break;
}
}
break;
case 38: // up
@ -84,7 +84,7 @@ document.addEventListener("DOMContentLoaded", windowResize);
event.cancelBubble=true;
return true;
}
// find prev list element
var elem = event.srcElement.parentElement;
for(var i = 0; i < elem.children.length; i++) {
@ -109,7 +109,7 @@ document.addEventListener("DOMContentLoaded", windowResize);
event.cancelBubble=true;
return true;
}
// find next file element
var elem = event.srcElement.parentElement;
for(var i = 0; i < elem.children.length; i++) {
@ -144,7 +144,7 @@ document.addEventListener("DOMContentLoaded", windowResize);
if( document.getElementById('menu_options_'+n) != null ) {
var x = document.getElementById('list_'+n).offsetLeft + document.getElementById('menuframe').offsetWidth + 100;
var y = document.getElementById('list_'+n).offsetTop + document.getElementById('keyboards_header').offsetHeight + 10;
ShowMenu( 'options_'+n, 'left', x, y);
}
event.cancelBubble = true;
@ -161,26 +161,26 @@ document.addEventListener("DOMContentLoaded", windowResize);
document.onfocusin = function() {
var itemtype, blah, elemid;
globalfocus = event.srcElement;
if(!event.srcElement) { return true; }
elemid = event.srcElement.id;
if(typeof elemid != 'string') {
if(typeof elemid != 'string') {
// e.g. if document has received focus, id may be undefined
return true;
}
itemtype = elemid.substr(0, 5);
if(event.srcElement.className.substr(0,8) != 'menuitem' && event.srcElement != menudiv
&& menudiv != null && menudiv.style.visibility=='visible') HideMenu();
if(globalfocus_item != null) {
if(globalfocus_item != event.srcElement && !globalfocus_item.contains(event.srcElement)) {
/* globalfocus_item.style.background = '';
globalfocus_item.style.filter = ''; */
$(globalfocus_item).removeClass('list_item_focus');
globalfocus_item = null;
}
}
}
if( event.srcElement.className.indexOf('list_item') >= 0 ) {
globalfocus_item = event.srcElement;
@ -190,16 +190,17 @@ document.addEventListener("DOMContentLoaded", windowResize);
return true;
}
return true;
}
}
function list_detail(event,n) {
var k = document.getElementById('list_'+n);
$(k).toggleClass('expanded');
if(event.ctrlKey)
$(k).toggleClass('expanded');
k.focus();
save_state();
return false;
}
var loading_state = false;
function save_state() {
@ -207,15 +208,24 @@ document.addEventListener("DOMContentLoaded", windowResize);
var state = {
activeIndex: menuframe_activeindex,
keyboards: [],
keyboardsScrollTop: $('#subcontent_keyboards').scrollTop()
// TODO: scrollTop is not known when element is display:none
keyboardsScrollTop: $('#subcontent_keyboards').scrollTop(),
optionsScrollTop: $('#subcontent_options').scrollTop(),
hotkeysScrollTop: $('#subcontent_hotkeys').scrollTop()
};
var keyboards = $('div.list_item');
keyboards.each(function(index) {
state.keyboards.push({name: $(this).data('name'), expanded: $(this).hasClass('expanded')});
const name = $(this).data('name');
if(name) {
state.keyboards.push({name: name, expanded: $(this).hasClass('expanded')});
}
});
$('#state').text(JSON.stringify(state));
const stateJson = JSON.stringify(state);
const params = new URLSearchParams(window.location.search);
const PageTag = params.get('tag');
jQuery.post('/data/keyman/state', { tag: PageTag, state: stateJson });
}
function load_state() {
loading_state = true;
var s = $('#state').text();
@ -235,21 +245,29 @@ document.addEventListener("DOMContentLoaded", windowResize);
$('div.list_item[data-name="'+state.keyboards[i].name+'"]').addClass('expanded');
}
}
if(state.keyboardsScrollTop) {
//alert(state.keyboardsScrollTop);
window.setTimeout(function() { $('#subcontent_keyboards').scrollTop(state.keyboardsScrollTop); }, 1);
//alert($('#subcontent_keyboards').scrollTop());
}
window.setTimeout(function() {
if(state.keyboardsScrollTop) {
$('#subcontent_keyboards').scrollTop(state.keyboardsScrollTop);
}
if(state.optionsScrollTop) {
$('#subcontent_options').scrollTop(state.optionsScrollTop);
}
if(state.hotkeysScrollTop) {
$('#subcontent_hotkeys').scrollTop(state.hotkeysScrollTop);
}
}, 1);
}
loading_state = false;
}
$( document ).ready(function() {
load_state();
$('#subcontent_keyboards').scroll(function() { save_state(); });
$('#subcontent_options').scroll(function() { save_state(); });
$('#subcontent_hotkeys').scroll(function() { save_state(); });
});
function submitSupportRequest() {
location.href = 'keyman:contact_support?message='+encodeURIComponent($('#contact_support').val());
}
@ -279,9 +297,21 @@ function options_basekeyboard() {
function keyboard_checkclick(n,toggle) {
var k = document.getElementById('keyboardcheck_'+n), li = document.getElementById('list_keyboard_'+n);
if(toggle) k.checked = !k.checked;
location.href='keyman:keyboard_clickcheck?id='+n+'&value='+k.checked;
location.href='keyman:keyboard_clickcheck?install=1&id='+n+'&value='+k.checked;
var liTitle = document.getElementById('listtitle_keyboard_'+n);
liTitle.className = k.checked ? 'list_title keyboard_loaded' : 'list_title keyboard_unloaded';
li.focus();
return true;
}
/* QRCode popup */
function showKeyboardLink(id) {
var e = document.getElementById('qrcode-'+id);
e.className='qrcode qrcode-visible';
}
function hideKeyboardLink(id) {
var e = document.getElementById('qrcode-'+id);
e.className='qrcode';
}

View file

@ -1,32 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
<xsl:variable name="dialoginfo_downloadkeyboard" select="$dialoginfo/Dialog[@Id='DownloadKeyboard'][1]" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<script src="/app/jquery.min.js"></script>
<title><xsl:value-of select="$locale/string[@name='S_DownloadKeyboard_Title']"/></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>config.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css" href="/app/config.css" />
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; }
body {
padding: 0px; margin: 0px; overflow: hidden;
width: <xsl:value-of select="$dialoginfo_downloadkeyboard/@Width" />px;
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI"; }
body {
padding: 0px; margin: 0px; overflow: hidden;
width: <xsl:value-of select="$dialoginfo_downloadkeyboard/@Width" />px;
height: <xsl:value-of select="$dialoginfo_downloadkeyboard/@Height" />px;
}
html { width: 100%; padding: 0px; margin: 0px; overflow: hidden }
#size {
position: absolute;
width: <xsl:value-of select="$dialoginfo_downloadkeyboard/@Width" />px;
width: <xsl:value-of select="$dialoginfo_downloadkeyboard/@Width" />px;
height: <xsl:value-of select="$dialoginfo_downloadkeyboard/@Height" />px;
}
@ -57,18 +58,34 @@
else return;
event.cancelBubble = true; event.returnValue = false;
}
// This function is called by the Delphi code when browse events
// happen, because we cannot determine the state of history adequately
// from within the browser context.
function updateBackButtonState(shouldEnable) {
document.getElementById('button_back').disabled = !shouldEnable;
}
function goBack() {
history.back();
}
]]></script>
</head>
<body>
<div id="size"></div>
<iframe id="contentframe" frameborder="0">
<xsl:attribute name="src">https://keyman.com/go/desktop/10.0/download-keyboards?version=<xsl:value-of select="/Keyman/Version" /></xsl:attribute>&#160;
<xsl:attribute name="src"><xsl:value-of select='/Keyman/keyman-com' />/go/windows/<xsl:value-of select="/Keyman/version-info/@versionRelease" />/download-keyboards?version=<xsl:value-of select="/Keyman/Version" /></xsl:attribute>&#160;
</iframe>
<div id="footerframe">
<!--<div style="float:left; font-size: 13.3px;">
<input type="checkbox" id="chkDownloadOnly" /> <label for="chkDownloadOnly"><xsl:value-of select="$locale/string[@name='S_DownloadKeyboard_DownloadOnlyCheckbox']"/></label>
</div>-->
<div style="float:left; padding-left: 8px">
<xsl:call-template name="button">
<xsl:with-param name="id">back</xsl:with-param>
<xsl:with-param name="disabled">1</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_Back']"/></xsl:with-param>
<xsl:with-param name="command">javascript:goBack()</xsl:with-param>
<xsl:with-param name="width">70px</xsl:with-param>
</xsl:call-template>
</div>
<div style="float:right; padding-right: 8px">
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_Cancel']"/></xsl:with-param>

View file

@ -5,24 +5,24 @@
<xsl:output method="html" version="1.0" encoding="utf-8" omit-xml-declaration="yes" standalone="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
<!-- I978 - locale was not reliably selected due to undefined order of document() loading and | processing -->
<xsl:variable name="prilocale" select="document(/Keyman/localepath)/Locale" />
<xsl:variable name="altlocale" select="document('strings.xml')/resources/*[not(@name = $prilocale//@name)]" />
<xsl:variable name="prilocale" select="document(concat(/Keyman/localeserver,/Keyman/locale))/resources" />
<xsl:variable name="altlocale" select="document(concat(/Keyman/localeserver,'en'))/resources/*[not(@name = $prilocale//@name)]" />
<xsl:variable name="comlocale">
<xsl:copy-of select="$prilocale/*" />
<xsl:copy-of select="$altlocale" />
</xsl:variable>
<xsl:variable name="dialoginfo" select="document('dialoginfo.xml')/DialogInfo" />
<xsl:variable name="locale" select="msxsl:node-set($comlocale)" />
<!--
-
- Generic list implementation: supports entry plus expanding details
-
-->
<!--
<!--
-
- Checkbox implementation
-
@ -36,7 +36,7 @@
<xsl:param name="title" />
<xsl:param name="disabled" />
<xsl:param name="tabid" />
<input type="checkbox">
<xsl:attribute name="tabindex"><xsl:value-of select="$tabid"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
@ -48,12 +48,12 @@
</input>
</xsl:template>
<!--
<!--
-
- Button implementation
-
-->
<xsl:template name="button">
<xsl:param name="caption" />
<xsl:param name="command" />
@ -62,6 +62,7 @@
<xsl:param name="default" />
<xsl:param name="width" />
<xsl:param name="id" />
<xsl:param name="disabled" />
<xsl:param name="tabid" />
<xsl:param name="shield" />
@ -74,21 +75,20 @@
<xsl:otherwise>button</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$disabled = 1"><xsl:attribute name="disabled">disabled</xsl:attribute></xsl:if>
<xsl:attribute name="id">button_<xsl:value-of select="$id"/></xsl:attribute>
<xsl:attribute name="onclick"><xsl:choose><xsl:when test="$onclick != ''"><xsl:value-of select="$onclick"/></xsl:when><xsl:otherwise>location.href="<xsl:value-of select="$command"/>";</xsl:otherwise></xsl:choose></xsl:attribute>
<xsl:attribute name="tabindex"><xsl:value-of select="$tabid"/></xsl:attribute>
<xsl:attribute name="style">
font-size: 11px;
height: 25px;
font-size: 12px;
height: 25px;
display: inline-block;
text-align: center;
width: <xsl:value-of select="$width"/>;
margin-right: 8px;
vertical-align: top;
</xsl:attribute>
<img alt="" style="vertical-align: middle; width: 16px; padding: 0; margin: 2px 4px 5px 0px; display: inline; height: 18px;">
<xsl:attribute name="src"><xsl:value-of select='/Keyman/templatepath' />shield.png</xsl:attribute>
</img>
<img alt="" style="vertical-align: middle; width: 16px; padding: 0; margin: 2px 4px 5px 0px; display: inline; height: 18px;" src="/app/shield.png" />
<xsl:value-of select="$caption" />
</button>
</xsl:when>
@ -100,6 +100,7 @@
<xsl:otherwise>button</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$disabled = 1"><xsl:attribute name="disabled">disabled</xsl:attribute></xsl:if>
<xsl:attribute name="ID">button_<xsl:value-of select="$id"/></xsl:attribute>
<xsl:attribute name="onclick"><xsl:choose><xsl:when test="$onclick != ''"><xsl:value-of select="$onclick"/></xsl:when><xsl:otherwise>location.href="<xsl:value-of select="$command"/>";</xsl:otherwise></xsl:choose></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="$caption" /></xsl:attribute>
@ -116,7 +117,7 @@
</xsl:choose>
</xsl:template>
<!--
<!--
-
- Popup menu implementation
-
@ -139,7 +140,7 @@
<xsl:copy-of select="$caption"/>
</span>
</xsl:template>
<xsl:template name="menubutton">
<xsl:param name="caption" />
<xsl:param name="menutemplate" />
@ -148,7 +149,7 @@
<xsl:param name="width" />
<xsl:param name="className" />
<xsl:param name="tabid" />
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$caption" /></xsl:with-param>
<xsl:with-param name="onclick">ShowMenu('<xsl:value-of select="$id"/>','<xsl:value-of select="$align" />',0,0); return false;</xsl:with-param>
@ -158,11 +159,11 @@
<xsl:with-param name="width"><xsl:value-of select="$width"/></xsl:with-param>
<xsl:with-param name="tabid"><xsl:value-of select="$tabid"/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- Replaces a string, e.g. ' with \' https://stackoverflow.com/a/7712434/1836776 -->
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="replace"/>
@ -183,5 +184,5 @@
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View file

@ -1,211 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" method="html" encoding="utf-8" standalone="yes" />
<xsl:include href="elements.xsl"/>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>fonts</title>
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; font-size: 12px; }
body { padding: 0px 0px; margin: 0px; width: 100%; height: 100%; background: #A0C1DC; border: none;}
html { padding: 0px; margin: 0px; overflow: auto; }
table { margin: 12px 0; border-collapse: collapse; width: <xsl:value-of select="count(/Keyman/Chars/Ch) * 15 + 250" />px; }
table tr td.font { text-align: left; vertical-align: middle; font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; white-space: nowrap; font-size: 11px; font-weight: bold; margin: 0px; padding: 0px; border-left: none; border-right: none; }
table tr td.coverage { text-align: left; vertical-align: middle; font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; white-space: nowrap; font-size: 11px; margin: 0px; padding-left: 6px; border-left: none; }
td.char { text-align: center; vertical-align: middle; border: solid 1px #80A1BC; font-size: 13.3px; background: white; }
td.excluded { background: #FFcfc0; }
td:hover { background: #80A1BC; color: white; }
#outer { position: absolute; height: 100%; left:0; top: 0; width: 100% }
#middle { position: absolute; top: 50%; width: 100% }
#inner { position: relative; top: -50%; }
#inner-nokeyboards { position: relative; top: -50%; margin: -24px 5% 0 5%; min-height: 32px; width: 84%; padding: 8px 3%; background: #F5F6BE; border: solid 1px gray; text-align: left }
#inner-nokeyboards img { float: left; padding: 0 16px 0 0 }
col.index { width: auto !important; }
col { width: 14px; color: #202428; }
#search { text-align: center; width: 100%; }
#no { text-align: center; width: 100% }
#fonts { padding: 12px }
<xsl:for-each select="/Keyman/Fonts/Font">
.font_<xsl:value-of select="@Index"/> td { font-family: "<xsl:value-of select="@Name"/>"; }
</xsl:for-each>
</style>
<script type="text/javascript">
document.onclick = function(event)
{
if(!event) event = window.event;
var elem = event.srcElement ? event.srcElement : event.target;
if(elem.className.indexOf('char') &lt; 0) return false;
if(elem.title == '') return false;
location.href = 'keyman:insertchars?chars=x'+elem.title.substring(2);
return true;
}
</script>
</head>
<body>
<xsl:choose>
<xsl:when test="/Keyman/Searching">
<div id="outer">
<div id="middle">
<div id="inner">
<div id="search">
<img alt="Searching...">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>search.gif
</xsl:attribute>
</img>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_PleaseWait1']"/>
<xsl:text xml:space="preserve"> </xsl:text>
<b><xsl:value-of select="/Keyman/Keyboard/@Name" /></b>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_PleaseWait2']"/>
</div>
</div>
</div>
</div>
</xsl:when>
<xsl:when test="/Keyman/Keyboard">
<xsl:choose>
<xsl:when test="not(/Keyman/Fonts)">
<div id="fonts">
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_NonUnicode1']"/>
<xsl:text xml:space="preserve"> </xsl:text>
<b><xsl:value-of select="/Keyman/Keyboard/@Name" /></b>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_NonUnicode2']"/>
</div>
</xsl:when>
<xsl:when test="count(/Keyman/Fonts/Font[@Coverage &gt; 90]) > 0">
<div id="fonts">
<div>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_MatchedFonts1']"/>
<xsl:text xml:space="preserve"> </xsl:text>
<b><xsl:value-of select="/Keyman/Keyboard/@Name" /></b>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_MatchedFonts2']"/>
</div>
<div>
<table id="tableHighCover">
<colgroup><col class="index" /><col class="index" /><xsl:for-each select="/Keyman/Chars/Ch"><col /></xsl:for-each></colgroup>
<xsl:apply-templates select="/Keyman/Fonts/Font[@Coverage &gt; 90]" />
</table>
</div>
<xsl:if test="count(/Keyman/Fonts/Font[@Coverage &lt;= 90 and @Coverage &gt;= 50]) > 0">
<div>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_PossibleFonts']"/>
</div>
<div>
<table id="tableLowCover">
<colgroup><col class="index" /><col class="index" /><xsl:for-each select="/Keyman/Chars/Ch"><col /></xsl:for-each></colgroup>
<xsl:apply-templates select="/Keyman/Fonts/Font[@Coverage &lt;= 90 and @Coverage &gt;= 50]" />
</table>
</div>
</xsl:if>
</div>
</xsl:when>
<xsl:when test="count(/Keyman/Fonts/Font[@Coverage &lt;= 90 and @Coverage &gt;= 50]) > 0">
<div id="fonts">
<div>
<!--<input type="button" onclick="keyman:openinbrowser" value="View this list in your browser" />-->
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_PossibleFontsOnly1']"/>
<xsl:text xml:space="preserve"> </xsl:text>
<b><xsl:value-of select="/Keyman/Keyboard/@Name" /></b>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_FontHelper_PossibleFontsOnly2']"/>
</div>
<div>
<table id="tableLowCover">
<colgroup><col class="index" /><col class="index" /><xsl:for-each select="/Keyman/Chars/Ch"><col /></xsl:for-each></colgroup>
<xsl:apply-templates select="/Keyman/Fonts/Font[@Coverage &lt;= 90 and @Coverage &gt;= 50]" />
</table>
</div>
</div>
</xsl:when>
<xsl:otherwise>
<div id="outer">
<div id="middle">
<div id="inner">
<div id="no">
<xsl:copy-of select="$locale/string[@name='S_OSK_FontHelper_NoFonts1a'][1]" />
<xsl:text xml:space="preserve"> </xsl:text>
<b><xsl:value-of select="/Keyman/Keyboard/@Name" /></b>
<xsl:copy-of select="$locale/string[@name='S_OSK_FontHelper_NoFonts1b'][1]" />
</div>
</div>
</div>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="/Keyman/NoKeyboards">
<div id="outer">
<div id="middle" style="width: 100%">
<div id="inner-nokeyboards">
<img>
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>info.png
</xsl:attribute>
</img>
<xsl:copy-of select="$locale/string[@name='S_OSK_FontHelper_NoKeyboards'][1]" />
</div>
</div>
</div>
</xsl:when>
<xsl:otherwise>
<div id="outer">
<div id="middle">
<div id="inner">
<div id="no"><xsl:copy-of select="$locale/string[@name='S_OSK_FontHelper_ChooseKeyboard'][1]" /></div>
</div>
</div>
</div>
</xsl:otherwise>
</xsl:choose>
</body>
</html>
</xsl:template>
<xsl:template match="Font">
<tr>
<xsl:attribute name="class">font_<xsl:value-of select="@Index"/></xsl:attribute>
<td class="font">
<xsl:value-of select="@Name" />
</td>
<td class="coverage">
<xsl:value-of select="@Coverage" />%
</td>
<xsl:variable name="ExcludedChars" select="ExcludedChars" />
<xsl:for-each select="/Keyman/Chars/Ch">
<td>
<!--<xsl:attribute name="onclick">javascript:location.href='keyman:insertchars?chars=x<xsl:value-of select="normalize-space(@CharCode)"/>';</xsl:attribute>-->
<xsl:attribute name="class">char <xsl:if test="$ExcludedChars/Ch[@CharCode = current()/@CharCode]">excluded</xsl:if></xsl:attribute>
<xsl:attribute name="title">U+<xsl:value-of select="normalize-space(@CharCode)"/></xsl:attribute>
<xsl:value-of select="normalize-space(.)"/>
</td>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -11,11 +11,12 @@
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="$locale/string[@name='S_HelpTitle']" /></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>config.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css" href="/app/config.css" />
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; font-size: 13.3px; }
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI"; font-size: 13.3px; }
body { padding: 0px; margin: 0px; overflow: hidden;
width: <xsl:value-of select="$dialoginfo_help/@Width" />px;
@ -27,7 +28,7 @@
width: 100%;
height: 100%;
}
#size { position: absolute; left: 0; top: 0;
width: <xsl:value-of select="$dialoginfo_help/@Width" />px;
height: <xsl:value-of select="$dialoginfo_help/@Height" />px;
@ -117,7 +118,7 @@
float: right;
padding: 10px;
}
#help {
margin: 60px 0 0 0;
}
@ -148,10 +149,7 @@
<div id="container">
<div id="captionBox"><div id="c1"></div><div id="c2"></div><div id="c3"></div></div>
<div id="header">
<img id="icon" alt="Help">
<xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>48.png</xsl:attribute>
</img>
<img id="icon" alt="Help" src="/app/48.png" />
<div id="title">
<xsl:value-of select="$locale/string[@name='S_HelpTitle']" />
</div>
@ -173,7 +171,7 @@
</a>
</div>
</div>
<div id="footer">
<div id="buttons">
<xsl:call-template name="button">
@ -182,10 +180,10 @@
</xsl:call-template>
</div>
</div>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -13,13 +13,14 @@
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="$locale/string[@name=$HintTitle]" /></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>config.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>hint.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css" href="/app/config.css" />
<link rel="stylesheet" type="text/css" href="/app/hint.css" />
<style type="text/css">
* {
font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />;
* {
font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";
}
#container {
width: <xsl:value-of select="$dialoginfo_hint/@Width" />px;
@ -52,12 +53,7 @@
<div id="captionBox"><div id="c1"></div><div id="c2"></div><div id="c3"></div></div>
<div id="header">
<img id="icon" src="hints.png" alt="Hint">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>48.png
</xsl:attribute>
</img>
<img id="icon" alt="Hint" src="/app/48.png" />
<div id="title">
<xsl:value-of select="$locale/string[@name=$HintTitle]" />
</div>
@ -66,10 +62,10 @@
<div id="hint">
<xsl:apply-templates select="/Keyman/Hint" />
</div>
<div id="footer">
<div id="checkbox">
<input type="checkbox" onclick='javascript:if(this.checked) location.href="keyman:dontshowhint"; else location.href="keyman:showhint";'
<input type="checkbox" onclick='javascript:if(this.checked) location.href="keyman:dontshowhint"; else location.href="keyman:showhint";'
style="vertical-align: middle;" id="chkWelcome" />&#160;<label for="chkWelcome"><xsl:value-of select="$locale/string[@name='S_HintDialog_DontShowHintAgain']"/></label>
</div>
@ -89,7 +85,7 @@
</xsl:if>
</div>
</div>
</div>
</div>
</body>
</html>
@ -101,15 +97,11 @@
<!--
Example of how to do a custom hint
<xsl:template match="Hint[@ID='KH_EXITPRODUCT']">
<img id="exiticon" alt="icon">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>keyman_48x48.png
</xsl:attribute>
</img>
<img id="exiticon" alt="icon" src="/app/keyman_48x48.png" />
<xsl:value-of select="$locale/string[@name=$Hint]" />
</xsl:template>
-->
</xsl:stylesheet>

View file

@ -1,4 +1,4 @@
html, body {
html, body {
overflow: hidden;
}
@ -6,31 +6,31 @@ div {
position: absolute;
}
#background {
background: #79C3DA; z-index: 1; left: 0; top: 0;
#background {
background: #79C3DA; z-index: 1; left: 0; top: 0;
}
#foreground {
z-index: 2; left: 0; top: 0;
#foreground {
z-index: 2; left: 0; top: 0;
}
#frame {
top: 0; left: 0;
height: 244px;
padding: 10px;
top: 0; left: 0;
height: 244px;
padding: 10px;
}
#image {
top: 0;
left: 0;
height: 250px;
width: 140px;
top: 0;
left: 0;
height: 250px;
width: 140px;
padding: 5px
}
.content {
left: 150px; top: 0px;
width: 438px;
left: 150px; top: 0px;
width: 438px;
padding: 4px;
background: white;
border-left: 2px solid #888888;
@ -42,20 +42,20 @@ div {
}
.has_readme .content {
height: 226px;
height: 226px;
visibility: hidden;
}
.content_selected {
left: 150px; top: 0px;
width: 438px;
left: 150px; top: 0px;
width: 438px;
padding: 4px;
background: white;
border-left: 2px solid #888888;
border-top: 2px solid #888888;
border-right: 2px solid #888888;
overflow-y: auto;
height: 226px;
height: 226px;
visibility: visible
}
@ -98,7 +98,7 @@ div {
}
#footer {
top: 260px;
top: 260px;
left: 0;
height: 26px;
vertical-align: middle;

View file

@ -25,7 +25,7 @@ function genkeydown(event) {
} else {
return true;
}
event.cancelBubble = true;
event.cancelBubble = true;
event.returnValue = false;
return false;
}
@ -35,7 +35,7 @@ function framekeydown() {
}
document.onkeydown = function() {
return genkeydown(event);
return genkeydown(event);
}
function setupframehotkeys() {
@ -47,8 +47,14 @@ function setupframehotkeys() {
window.onload = function() {
setupframehotkeys();
if(document.getElementById('tabs') != null) {
tabClick(document.getElementById('tabDetails'));
}
}
function keyboard_install(elevate) {
let href = elevate ? 'keyman:keyboard_installallusers?' : 'keyman:keyboard_install?';
let keyboards = Array.from(document.querySelectorAll('select.keyboardLanguage'));
location.href = href + keyboards.map((e) => e.id.substring('keyboardLanguage_'.length) + '=' + e.value).join('&');
}

View file

@ -1,43 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl" />
<xsl:variable name="dialoginfo_installkeyboard" select="$dialoginfo/Dialog[@Id='InstallKeyboard'][1]" />
<xsl:template match="/">
<html>
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="$locale/string[@name='S_InstallKeyboard_Title']"/></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>config.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>installkeyboard.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css" href="/app/config.css" />
<link rel="stylesheet" type="text/css" href="/app/installkeyboard.css" />
<style type="text/css">
* {
font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />;
* {
font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";
}
#background {
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width" />px;
#background {
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width" />px;
height: <xsl:value-of select="$dialoginfo_installkeyboard/@Height" />px;
}
#foreground {
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width" />px;
#foreground {
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width" />px;
height: <xsl:value-of select="$dialoginfo_installkeyboard/@Height" />px;
}
#frame {
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width - 20" />px;
}
#footer {
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width - 16" />px;
width: <xsl:value-of select="$dialoginfo_installkeyboard/@Width - 16" />px;
}
</style>
<script type="text/javascript"><xsl:attribute name='src'><xsl:value-of select="/Keyman/templatepath"/>installkeyboard.js</xsl:attribute></script>
<script src="/app/installkeyboard.js"></script>
</head>
<body>
<div id="background"></div>
@ -50,14 +50,14 @@
<img style="height: 250px; width: 140px;">
<xsl:choose>
<xsl:when test="/Keyman/KeymanKeyboardFile">
<xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>defaultkeyboard.gif</xsl:attribute>
<xsl:attribute name="src">/app/defaultkeyboard.gif</xsl:attribute>
</xsl:when>
<xsl:when test="/Keyman/KeymanPackageFile/graphic">
<xsl:attribute name="src"><xsl:value-of select="/Keyman/imagepath"/><xsl:value-of select="/Keyman/KeymanPackageFile/graphic" /></xsl:attribute>
<xsl:attribute name="src">/data/installkeyboard/package/<xsl:value-of select="/Keyman/KeymanPackageFile/graphic" />?tag=<xsl:value-of select="/Keyman/PageTag"/></xsl:attribute>
<xsl:attribute name="style">height: 250px; width: 140px; border: solid 1px black</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>defaultpackage.gif</xsl:attribute>
<xsl:attribute name="src">/app/defaultpackage.gif</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</img>
@ -70,10 +70,10 @@
</div>
<div class="content" id="readme">
<iframe style="visibility: visible; width:446px; height:100%; padding: 0px; margins: 0px" scrolling="auto" frameborder="no" id="frameReadme">
<xsl:attribute name="src"><xsl:value-of select="/Keyman/KeymanPackageFile/readme" /></xsl:attribute>
<xsl:attribute name="src">/data/installkeyboard/package/<xsl:value-of select="/Keyman/KeymanPackageFile/readme" />?tag=<xsl:value-of select="/Keyman/PageTag"/></xsl:attribute>
</iframe>
</div>
</xsl:if>
</xsl:if>
<div class="content" id="details">
<div style="display:block;position:static;margin:0;padding:0;background:blue;overflow:hidden;">
<table style="width: 100%;background:white;">
@ -82,13 +82,11 @@
<xsl:choose>
<xsl:when test="//KeymanKeyboardFile/bitmap">
<img style="margin-right: 6px; float: left; height: 16px; width: 16px;">
<xsl:attribute name="src"><xsl:value-of select="//KeymanKeyboardFile[1]/bitmap"/></xsl:attribute>
<xsl:attribute name="src">/data/installkeyboard/bitmap/<xsl:value-of select="//KeymanKeyboardFile[1]/bitmap"/>?tag=<xsl:value-of select="/Keyman/PageTag"/></xsl:attribute>
</img>
</xsl:when>
<xsl:otherwise>
<img style="margin-right: 6px; float: left; height: 16px; width: 16px;">
<xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>no_icon.gif</xsl:attribute>
</img>
<img style="margin-right: 6px; float: left; height: 16px; width: 16px;" src="/app/no_icon.gif" />
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="/Keyman/KeymanKeyboardFile/name" />
@ -106,7 +104,7 @@
<xsl:if test="/Keyman/canelevate">
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_InstallKeyboard_Button_Install']"/></xsl:with-param>
<xsl:with-param name="command">keyman:keyboard_installallusers</xsl:with-param>
<xsl:with-param name="command">javascript:keyboard_install(true)</xsl:with-param>
<xsl:with-param name="width">120px</xsl:with-param>
<xsl:with-param name="shield">1</xsl:with-param>
</xsl:call-template>
@ -115,7 +113,7 @@
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_InstallKeyboard_Button_Install']"/></xsl:with-param>
<xsl:with-param name="default">1</xsl:with-param>
<xsl:with-param name="command">keyman:keyboard_install</xsl:with-param>
<xsl:with-param name="command">javascript:keyboard_install(false)</xsl:with-param>
<xsl:with-param name="width">70px</xsl:with-param>
</xsl:call-template>
</xsl:if>
@ -129,15 +127,32 @@
</body>
</html>
</xsl:template>
<xsl:template match="/Keyman/KeymanPackageFile/KeymanPackageContentKeyboardsFile/KeymanKeyboardFile/name">
<xsl:value-of select="."/><br />
<xsl:template match="KeymanKeyboardLanguage">
<option>
<xsl:attribute name="value"><xsl:value-of select="bcp47code" /></xsl:attribute>
<xsl:if test="bcp47code = /Keyman/DefaultBCP47Tag"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if>
<xsl:value-of select="langname" />
</option>
</xsl:template>
<xsl:template mode="language-picker" match="/Keyman/KeymanPackageFile/KeymanPackageContentKeyboardsFile/KeymanKeyboardFile">
<select class="keyboardLanguage">
<xsl:attribute name="id">keyboardLanguage_<xsl:value-of select="id"/></xsl:attribute>
<xsl:apply-templates select="KeymanKeyboardLanguagesFile/KeymanKeyboardLanguage">
<xsl:sort select="langname" />
</xsl:apply-templates>
</select>
</xsl:template>
<xsl:template mode="keyboard-name" match="/Keyman/KeymanPackageFile/KeymanPackageContentKeyboardsFile/KeymanKeyboardFile">
<xsl:value-of select="name"/><br />
</xsl:template>
<xsl:template match="/Keyman/KeymanPackageFile/Fonts/Font/name">
<xsl:value-of select="."/><br />
</xsl:template>
<xsl:template match="/Keyman/KeymanKeyboardFile">
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_Filename']"/></td>
@ -160,7 +175,7 @@
<td class="otherdetails"><xsl:value-of select="copyright" /></td>
</tr>
</xsl:if>
<xsl:if test="message">
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_Message']"/></td>
@ -168,27 +183,46 @@
</tr>
</xsl:if>
</xsl:template>
<xsl:template match="/Keyman/KeymanPackageFile">
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_Keyboards']"/></td>
<td class="otherdetails"><xsl:apply-templates select="KeymanPackageContentKeyboardsFile/KeymanKeyboardFile/name" /></td>
</tr>
<xsl:choose>
<xsl:when test="count(KeymanPackageContentKeyboardsFile/KeymanKeyboardFile) = 1">
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_Keyboard']"/></td>
<td class="otherdetails"><xsl:apply-templates mode="keyboard-name" select="KeymanPackageContentKeyboardsFile/KeymanKeyboardFile" /></td>
</tr>
<xsl:if test="count(KeymanPackageContentKeyboardsFile/KeymanKeyboardFile/KeymanKeyboardLanguagesFile/KeymanKeyboardLanguage) > 1">
<!-- This test presents the selection for keyboard language only for packages with a single keyboard and
more than one language option. In future, we could consider extending it for packages with more than
one keyboard, but that would take more plumbing for implementation. -->
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_KeyboardLanguage']"/></td>
<td class="otherdetails"><xsl:apply-templates mode="language-picker" select="KeymanPackageContentKeyboardsFile/KeymanKeyboardFile" /></td>
</tr>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_Keyboards']"/></td>
<td class="otherdetails"><xsl:apply-templates mode="keyboard-name" select="KeymanPackageContentKeyboardsFile/KeymanKeyboardFile" /></td>
</tr>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="Fonts/Font">
<tr>
<td class="detailheader"><xsl:value-of select="$locale/string[@name='S_Caption_Fonts']"/></td>
<td class="otherdetails"><xsl:apply-templates select="Fonts/Font/name" /></td>
</tr>
</xsl:if>
<xsl:apply-templates select="detail[@name='version']"><xsl:with-param name="header"><xsl:value-of select="$locale/string[@name='S_Caption_Version']"/></xsl:with-param></xsl:apply-templates>
<xsl:apply-templates select="detail[@name='author']"><xsl:with-param name="header"><xsl:value-of select="$locale/string[@name='S_Caption_Author']"/></xsl:with-param></xsl:apply-templates>
<xsl:apply-templates select="detail[@name='website']"><xsl:with-param name="header"><xsl:value-of select="$locale/string[@name='S_Caption_Website']"/></xsl:with-param></xsl:apply-templates>
<xsl:apply-templates select="detail[@name='copyright']"><xsl:with-param name="header"><xsl:value-of select="$locale/string[@name='S_Caption_Copyright']"/></xsl:with-param></xsl:apply-templates>
</xsl:template>
<xsl:template match="detail">
<xsl:param name="header" />
<tr>
@ -207,7 +241,7 @@
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</tr>
</xsl:template>
</xsl:stylesheet>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
<xsl:variable name="dialoginfo_keyman" select="$dialoginfo/Dialog[@Id='Keyman']" />
<xsl:include href="keyman_menu.xsl"/>
<xsl:include href="keyman_keyboardlist.xsl"/>
@ -15,24 +15,29 @@
<xsl:include href="keyman_keepintouch.xsl"/>
<xsl:include href="keyman_footer.xsl"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<style> *{font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";}</style>
<title><xsl:value-of select="$locale/string[@name='S_ConfigurationTitle']"/></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>config.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>menu.css</xsl:attribute></link>
<script type="text/javascript"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>jquery.min.js</xsl:attribute><xsl:text> </xsl:text></script>
<script type="text/javascript"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>config.js</xsl:attribute><xsl:text> </xsl:text></script>
<script type="text/javascript"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>menu.js</xsl:attribute><xsl:text> </xsl:text></script>
<script type="text/javascript"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>menu-frame.js</xsl:attribute><xsl:text> </xsl:text></script>
</head>
<link rel="stylesheet" type="text/css" href="/app/config.css" />
<link rel="stylesheet" type="text/css" href="/app/menu.css" />
<script type="text/javascript" src="/app/jquery.min.js"></script>
<script type="text/javascript" src="/app/config.js"></script>
<script type="text/javascript" src="/app/menu.js"></script>
<script type="text/javascript" src="/app/menu-frame.js"></script>
<script type="text/javascript" src="/app/qrcode.min.js"></script>
</head>
<body visited="white">
<div style="position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 10">
<div id="header-pad"></div>
<div id="menubackground" onmousedown="HideMenu()"></div>
<div id="menuframe" tabindex="-1">
<div id="state"><xsl:value-of select="/Keyman/state"/></div>
<xsl:call-template name="menuframe" />
@ -54,26 +59,22 @@
</body>
</html>
</xsl:template>
<xsl:template name="header_helplinks">
<div class="helplinks">
<a href="keyman:help" onmouseover="this.style.cursor='hand';" >
<img onmouseover="this.style.cursor='hand';" style='width: 24px; height: 24px; border: none; vertical-align: middle; margin: 0 4px 0 4px;'>
<xsl:attribute name='src'><xsl:value-of select='/Keyman/templatepath'/>help24.png</xsl:attribute>
</img>
<img onmouseover="this.style.cursor='hand';" style='width: 24px; height: 24px; border: none; vertical-align: middle; margin: -2px 4px 2px 4px;' src="/app/help24.png" />
<xsl:value-of select="$locale/string[@name='S_Caption_Help']" />
</a>
&#160;
</a>&#160;
<img onmouseover="this.style.cursor='hand';" style='width: 24px; height: 24px; border: none; vertical-align: middle; margin: -2px 4px 2px 4px;' src="/app/globe.png" />
<xsl:value-of select="$locale/string[@name='S_DisplayIn']" />:
<a id="button_uilanguage" href="#"
onmousedown="ShowMenu('uilanguage','right', document.body.offsetWidth, 38); return false;"
onkeydown="if(event.keyCode == 32) ShowMenu('uilanguage','right'); else return true; return false;"
><xsl:value-of select="$locale/string[@name='SKUILanguageNameWithEnglish']"/></a>
<a id="button_uilanguage" href="#"
onmousedown="ShowMenu('uilanguage','right', document.body.offsetWidth, 38); return false;"
onkeydown="if(event.keyCode == 32) ShowMenu('uilanguage','right'); else return true; return false;"
><xsl:value-of select="$locale/string[@name='SKUILanguageNameWithEnglish']"/></a>
</div>
</xsl:template>
<xsl:template name="popupmenu_uilanguage">
<div class="menu" id="menu_uilanguage">
<xsl:for-each select="/Keyman/uilanguages/uilanguage">
@ -84,11 +85,6 @@
</xsl:call-template>
</xsl:for-each>
<div class="menubreak" ></div>
<xsl:call-template name="menuitem">
<xsl:with-param name="id">menu_uilanguage_more</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_MoreUILanguagesMenu']"/></xsl:with-param>
<xsl:with-param name="command">keyman:downloaduilanguages</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="menuitem">
<xsl:with-param name="id">menu_uilanguage_contribute</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_ContributeUILanguagesMenu']"/></xsl:with-param>
@ -96,5 +92,4 @@
</xsl:call-template>
</div>
</xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>

View file

@ -9,28 +9,18 @@
<xsl:template name="footerframe">
<div id='footer-top'></div>
<div style="float:right; padding: 2px 12px">
<div class='footer_instant'><xsl:value-of select="$locale/string[@name='S_Footer_ChangesImmediate']"/></div>
</div>
<div id="keyboards_control" style="float:left; display: none;">
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_OK']"/></xsl:with-param>
<xsl:with-param name="default">1</xsl:with-param>
<xsl:with-param name="command">keyman:footer_ok</xsl:with-param>
<xsl:with-param name="width">70px</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_InstallKeyboard']"/></xsl:with-param>
<xsl:with-param name="command">keyman:keyboard_install</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_Cancel']"/></xsl:with-param>
<xsl:with-param name="command">keyman:footer_cancel</xsl:with-param>
<xsl:with-param name="width">70px</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_DownloadKeyboard']"/></xsl:with-param>
<xsl:with-param name="command">keyman:keyboard_download</xsl:with-param>
</xsl:call-template>
</div>
<div id="keyboards_control" style="float: left; display: none;">
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_InstallKeyboard']"/></xsl:with-param>
<xsl:with-param name="command">keyman:keyboard_install</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_DownloadKeyboard']"/></xsl:with-param>
<xsl:with-param name="command">keyman:keyboard_download</xsl:with-param>
</xsl:call-template>
</div>
</xsl:template>
</xsl:stylesheet>

View file

@ -2,23 +2,23 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="content_hotkeys_style">
/* Hotkey Styles */
#hotkeys {
position: absolute;
left: 0;
top: 0;
width: 100%;
position: absolute;
left: 0;
top: 0;
width: 100%;
font-size: 13.3px;
xheight: 100%;
height: expression( document.getElementById('subcontent_hotkeys').offsetHeight );
overflow-y: auto;
overflow-y: auto;
padding: 6px 4px 4px 4px;
border-bottom: 2px solid white;
}
.hotkey_title
{
background: #e0e5ef;
@ -28,59 +28,52 @@
padding: 4px 8px;
}
</xsl:template>
<xsl:template name="content_hotkeys">
<div class="header">
<xsl:call-template name="header_helplinks" />
<xsl:value-of select="$locale/string[@name='S_Hotkeys']"/>
</div>
<div class="content" id="subcontent_hotkeys">
<div class="hotkey_title"><xsl:value-of select="$locale/string[@name='S_Hotkey_Control_Title']"/></div>
<xsl:for-each select="/Keyman/Hotkeys/Hotkey">
<xsl:sort select="translate(Target,'012345678','013845672')"/><!--I2302-->
<xsl:call-template name="hotkey_control" />
</xsl:for-each>
<div class="hotkey_title"><xsl:value-of select="$locale/string[@name='S_Hotkey_Keyboard_Title']"/></div>
<xsl:for-each select="//KeymanLanguage">
<xsl:call-template name="hotkey_language" />
</xsl:for-each>
</div>
</xsl:template>
<xsl:template name="hotkey_language">
<div class="list_item" tabindex="1" tagType="listitem">
<xsl:attribute name="id">list_lang_<xsl:value-of select="position()-1"/></xsl:attribute>
<xsl:attribute name="onkeydown">return list_keydown(event,'lang_<xsl:value-of select="position()-1"/>');</xsl:attribute>
<xsl:attribute name="onmousedown">document.getElementById('list_lang_<xsl:value-of select="position()-1"/>').focus(); return true;</xsl:attribute>
<div style="float:left; padding: 1px 0px 1px 3px;">
<div class="list_icon">
<img style="width: 16px; height:16px;">
<xsl:choose>
<xsl:when test="//KeymanKeyboardInstalled[id=current()/keymankeyboardid]/bitmap">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/ImagePath"/>
<xsl:value-of select="//KeymanKeyboardInstalled[id=current()/keymankeyboardid]/bitmap"/>
</xsl:attribute>
<xsl:when test="//KeymanKeyboardInstalled[id=current()/keymankeyboardid]/bitmap">
<xsl:attribute name="src">/data/keyman/bitmap/<xsl:value-of select="//KeymanKeyboardInstalled[id=current()/keymankeyboardid]/bitmap"/>?tag=<xsl:value-of select="/Keyman/PageTag" /></xsl:attribute>
</xsl:when>
<xsl:when test="//KeymanKeyboardInstalled[id=current()/keymankeyboardid]">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>no_icon.png
</xsl:attribute>
<xsl:when test="//KeymanKeyboardInstalled[id=current()/keymankeyboardid]">
<xsl:attribute name="src">/app/no_icon.png</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>windows_keyboard.png
</xsl:attribute>
<xsl:attribute name="src">/app/windows_keyboard.png</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</img>
</div>
<xsl:value-of select="$locale/string[@name='S_Hotkey_Language_Prefix']"/> <xsl:value-of select="localename"/> &#x2014; <xsl:value-of select="layoutname"/>
<xsl:value-of select="$locale/string[@name='S_Hotkey_Language_Suffix']"/>
</div>
@ -93,7 +86,7 @@
<xsl:when test="hotkey"><xsl:value-of select="hotkey"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$locale/string[@name='S_Hotkey_None']"/></xsl:otherwise>
</xsl:choose>
</a>
</a>
</div>
</div>
<br class="clear" />
@ -102,9 +95,9 @@
<xsl:template name="hotkey_control">
<div class="list_item" tabindex="1" tagType="listitem">
<xsl:attribute name="id">list_hotkey_<xsl:value-of select="index"/></xsl:attribute>
<xsl:attribute name="onkeydown">return list_keydown(event,'hotkey_<xsl:value-of select="index"/>');</xsl:attribute>
<xsl:attribute name="onmousedown">document.getElementById('list_hotkey_<xsl:value-of select="index"/>').focus(); return true;</xsl:attribute>
<xsl:attribute name="id">list_hotkey_<xsl:value-of select="Target"/></xsl:attribute>
<xsl:attribute name="onkeydown">return list_keydown(event,'hotkey_<xsl:value-of select="Target"/>');</xsl:attribute>
<xsl:attribute name="onmousedown">document.getElementById('list_hotkey_<xsl:value-of select="Target"/>').focus(); return true;</xsl:attribute>
<div style="float:left; padding: 1px 0px 1px 3px;">
<xsl:choose>
@ -112,7 +105,7 @@
<xsl:when test="Target='1'"><xsl:value-of select="$locale/string[@name='S_Hotkey_OpenKeyboardMenu']"/></xsl:when>
<xsl:when test="Target='2'"><xsl:value-of select="$locale/string[@name='S_Hotkey_ShowOnScreenKeyboard']"/></xsl:when>
<xsl:when test="Target='3'"><xsl:value-of select="$locale/string[@name='S_Hotkey_OpenConfiguration']"/></xsl:when>
<xsl:when test="Target='4'"><xsl:value-of select="$locale/string[@name='S_Hotkey_ShowKeyboardUsage']"/></xsl:when>
<xsl:when test="Target='5'"><xsl:value-of select="$locale/string[@name='S_Hotkey_ShowFontHelper']"/></xsl:when>
<xsl:when test="Target='6'"><xsl:value-of select="$locale/string[@name='S_Hotkey_ShowCharacterMap']"/></xsl:when>
<xsl:when test="Target='7'"><xsl:value-of select="$locale/string[@name='S_Hotkey_OpenTextEditor']"/></xsl:when>
@ -122,13 +115,13 @@
<div style="float:right">
<div style="float: left; padding: 1px 3px 1px 0px; color: blue;">
<a class="hotkey" tabindex="-1">
<xsl:attribute name="href">keyman:hotkey_set?index=hotkey_<xsl:value-of select="index"/></xsl:attribute>
<xsl:attribute name="href">keyman:hotkey_set?index=hotkey_<xsl:value-of select="Target"/></xsl:attribute>
<xsl:attribute name="onmouseover">this.style.cursor='hand';</xsl:attribute>
<xsl:choose>
<xsl:when test="string-length(Value) > 0"><xsl:value-of select="Value"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$locale/string[@name='S_Hotkey_None']"/></xsl:otherwise>
</xsl:choose>
</a>
</a>
</div>
</div>
<br class="clear" />

View file

@ -5,7 +5,7 @@
<script>
window['menuframe_activate_keepintouch'] = function() {
document.getElementById('keepintouch_frame').src = 'https://keyman.com/go/desktop/10.0/keep-in-touch?embed=1';
document.getElementById('keepintouch_frame').src = '<xsl:value-of select='/Keyman/keyman-com' />/go/windows/<xsl:value-of select="/Keyman/version-info/@versionRelease" />/keep-in-touch?embed=1';
}
</script>

View file

@ -2,7 +2,7 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="content_keyboards">
<xsl:text disable-output-escaping="yes"><![CDATA[
<script type="text/javascript">
@ -13,7 +13,7 @@
<xsl:call-template name="header_helplinks" />
<xsl:value-of select="$locale/string[@name='S_Keyboards']"/>
</div>
<div class="content" id="subcontent_keyboards">
<div class="contentBox" id='keyboards-content-box'>
<xsl:choose>
@ -30,16 +30,14 @@
<xsl:otherwise><xsl:call-template name="keyboard" /></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="Keyman/KeymanPackageInstalled[count(./KeymanPackageContentKeyboardsInstalled/KeymanKeyboardInstalled)!=1]">
<xsl:sort select="name" />
<div class="item">
<xsl:attribute name="id">package_<xsl:value-of select="id" /></xsl:attribute>
<img class="list_icon">
<xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>package.gif</xsl:attribute>
</img>
<img class="list_icon" src="/app/package.gif" />
<div class="packagetitle">
<xsl:choose>
<xsl:when test="name"><xsl:value-of select="name"/></xsl:when>
@ -58,11 +56,7 @@
<xsl:otherwise>
<div id="keyboards" class='info'>
<div>
<img>
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>info.png
</xsl:attribute>
</img>
<img src="/app/info.png" />
<xsl:value-of select="$locale/string[@name='S_Keyboards_NoKeyboardsInstalled']"/>
</div>
</div>
@ -95,7 +89,7 @@
<xsl:attribute name="onfocus">return list_focus(event,'keyboard_<xsl:value-of select="$id"/>');</xsl:attribute>
<xsl:attribute name="onblur">return list_blur(event,'keyboard_<xsl:value-of select="$id"/>');</xsl:attribute>
<xsl:attribute name="oncontextmenu">event.cancelBubble=true;event.returnValue=false;</xsl:attribute>
<xsl:attribute name="style">left:0;top:0;width:99%</xsl:attribute>
<div>
<xsl:attribute name="onmousedown">return list_detail(event,'keyboard_<xsl:value-of select="$id"/>');</xsl:attribute>
@ -113,17 +107,8 @@
<div class="list_icon">
<img style="width: 16px; height:16px;">
<xsl:choose>
<xsl:when test="bitmap">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/ImagePath"/>
<xsl:value-of select="bitmap"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>no_icon.gif
</xsl:attribute>
</xsl:otherwise>
<xsl:when test="bitmap"><xsl:attribute name="src">/data/keyman/bitmap/<xsl:value-of select="bitmap"/>?tag=<xsl:value-of select="/Keyman/PageTag" /></xsl:attribute></xsl:when>
<xsl:otherwise><xsl:attribute name="src">/app/no_icon.gif</xsl:attribute></xsl:otherwise>
</xsl:choose>
</img>
</div>
@ -138,11 +123,11 @@
</div>
</div>
<div class="list_expand">
<!--<div class="list_expand">
<xsl:attribute name="id">list_expand_keyboard_<xsl:value-of select="id"/></xsl:attribute>
</div>
</div>-->
<xsl:choose>
<xsl:when test="//KeymanPackageContentKeyboardsInstalled/KeymanKeyboardInstalled[id=current()/id]">
<!--<div class="list_close">
@ -208,14 +193,14 @@
<td>
<span><xsl:value-of select="../../name"/></span>
</td>
</tr>
</tr>
</xsl:if>
<xsl:if test="//KeymanPackageContentKeyboardsInstalled/KeymanKeyboardInstalled[id=current()/id]">
<tr><td class="table_header"><xsl:value-of select="$locale/string[@name='S_Caption_Version']"/></td>
<td>
<span><xsl:value-of select="../../detail[@name='version']"/></span>
</td>
</tr>
</tr>
</xsl:if>
<xsl:if test="//KeymanPackageContentKeyboardsInstalled/KeymanKeyboardInstalled[id=current()/id]/../../Fonts"><!-- I2216 -->
<tr>
@ -275,6 +260,45 @@
<xsl:value-of select="copyright"/>
</td></tr>
</xsl:if>
<!--<xsl:if test="$singlekeyboardpackage = '1' or //KeymanPackageContentKeyboardsInstalled/KeymanKeyboardInstalled[id=current()/id]">
<tr>
<td class="table_header" colspan="2">
<xsl:call-template name="button">
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Keyboard_Share']"/></xsl:with-param>
<xsl:with-param name="command">javascript:showKeyboardLink('<xsl:value-of select="../../id" />')</xsl:with-param>
</xsl:call-template>
<div class='qrcode'>
<xsl:attribute name='id'>qrcode-<xsl:value-of select="../../id" /></xsl:attribute>
<div class='qrcode-back'>
<xsl:attribute name="onclick">return hideKeyboardLink('<xsl:value-of select="../../id" />')</xsl:attribute>
</div>
<div class='qrcode-popup'>
<div>
<xsl:attribute name='id'>qrcode-img-<xsl:value-of select="../../id" /></xsl:attribute>
</div>
<div class='qrcode-caption'>
<xsl:value-of select="$locale/string[@name='S_Keyboard_Share_QRCode']"/>
<a>
<xsl:attribute name="href">keyman:link?url=<xsl:value-of select="/Keyman/keyman-com" />/go/keyboard/<xsl:value-of select="../../id" />/share</xsl:attribute>
<xsl:value-of select="$locale/string[@name='S_Keyboard_Share_Link']"/>
</a>
<xsl:value-of select="$locale/string[@name='S_Keyboard_Share_LinkSuffix']"/>
</div>
<script>new QRCode(document.getElementById("qrcode-img-<xsl:value-of select="../../id"/>"), {
text: '<xsl:value-of select="/Keyman/keyman-com" />/go/keyboard/<xsl:value-of select="../../id"/>/share',
width: 256,
height: 256
});
</script>
</div>
</div>
</td>
</tr>
</xsl:if>-->
</table>
</div>
<div style="clear:both">&#160;</div>
@ -284,21 +308,20 @@
</table>
</div>
</div>
</xsl:template>
<xsl:template match="KeymanKeyboardLanguageInstalled">
<div class='keyboard-language'>
<!--<a>
<xsl:attribute name="href">keyman:keyboardlanguage_uninstall?id=<xsl:value-of select='../../id'/>&amp;index=<xsl:value-of select="position()-1"/></xsl:attribute>
<img>
<xsl:attribute name="href">keyman:keyboardlanguage_uninstall?id=<xsl:value-of select='../../id'/>&amp;bcp47code=<xsl:value-of select="bcp47code"/></xsl:attribute>
<img src="/app/cross.png">
<xsl:attribute name="title"><xsl:value-of select="$locale/string[@name='S_Languages_Uninstall']"/></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>cross.png</xsl:attribute>
</img>
</a>-->
<span class="language-icon"><xsl:value-of select="substring(bcp47code, 1, 2)" /></span>
<span><xsl:value-of select="langname" /></span>
<span><xsl:value-of select="langname" /><!-- (<xsl:value-of select="bcp47code" />)--></span>
</div>
</xsl:template>
</xsl:stylesheet>

View file

@ -2,14 +2,14 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="menuframe">
<script type="text/javascript">
menuframe_add('<xsl:value-of select="/Keyman/templatepath"/>', 'keyboardlist', '<xsl:value-of select="$locale/string[@name='S_Keyboards']"/>', '<xsl:value-of select="$locale/string[@name='S_Keyboards_AccessChar']"/>');
menuframe_add('<xsl:value-of select="/Keyman/templatepath"/>', 'options', '<xsl:value-of select="$locale/string[@name='S_Options']"/>', '<xsl:value-of select="$locale/string[@name='S_Options_AccessChar']"/>');
menuframe_add('<xsl:value-of select="/Keyman/templatepath"/>', 'hotkeys', '<xsl:value-of select="$locale/string[@name='S_Hotkeys']"/>', '<xsl:value-of select="$locale/string[@name='S_Hotkeys_AccessChar']"/>');
menuframe_add('<xsl:value-of select="/Keyman/templatepath"/>', 'support', '<xsl:value-of select="$locale/string[@name='S_Support']"/>', '<xsl:value-of select="$locale/string[@name='S_Support_AccessChar']"/>');
//menuframe_add('<xsl:value-of select="/Keyman/templatepath"/>', 'keepintouch', '<xsl:value-of select="$locale/string[@name='S_KeepInTouch']"/>', '<xsl:value-of select="$locale/string[@name='S_KeepInTouch_AccessChar']"/>');
menuframe_add('/app/', 'keyboardlist', '<xsl:value-of select="$locale/string[@name='S_Keyboards']"/>', '<xsl:value-of select="$locale/string[@name='S_Keyboards_AccessChar']"/>');
menuframe_add('/app/', 'options', '<xsl:value-of select="$locale/string[@name='S_Options']"/>', '<xsl:value-of select="$locale/string[@name='S_Options_AccessChar']"/>');
menuframe_add('/app/', 'hotkeys', '<xsl:value-of select="$locale/string[@name='S_Hotkeys']"/>', '<xsl:value-of select="$locale/string[@name='S_Hotkeys_AccessChar']"/>');
menuframe_add('/app/', 'support', '<xsl:value-of select="$locale/string[@name='S_Support']"/>', '<xsl:value-of select="$locale/string[@name='S_Support_AccessChar']"/>');
//menuframe_add('/app/', 'keepintouch', '<xsl:value-of select="$locale/string[@name='S_KeepInTouch']"/>', '<xsl:value-of select="$locale/string[@name='S_KeepInTouch_AccessChar']"/>');
</script>
<span class="menuframe" id="menuframe_footer"><xsl:text></xsl:text></span>
</xsl:template>

View file

@ -14,7 +14,7 @@
<xsl:sort select="sort" />
<div class="options_list_header"><xsl:value-of select="$locale/string[@name=current()/name]"/></div>
<xsl:for-each select="//KeymanOption[group=current()/name]">
<xsl:if test="optiontype = 1">
<xsl:if test="optiontype = 1 and id != 'koAutoSwitchOSKPages'">
<xsl:call-template name="option" />
</xsl:if>
</xsl:for-each>
@ -29,7 +29,13 @@
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_ProxyConfig']"/></xsl:with-param>
<xsl:with-param name="command">keyman:support_proxyconfig</xsl:with-param>
</xsl:call-template>
<!--<xsl:call-template name="button">
<xsl:with-param name="shield">1</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_SettingsManager']"/></xsl:with-param>
<xsl:with-param name="command">keyman:options_settingsmanager</xsl:with-param>
</xsl:call-template>-->
<xsl:call-template name="button">
<xsl:with-param name="shield">1</xsl:with-param>
<xsl:with-param name="caption"><xsl:value-of select="$locale/string[@name='S_Button_BaseKeyboard']"/></xsl:with-param>
@ -73,13 +79,13 @@
<div >
<xsl:choose>
<xsl:when test="not(enabled)">
<xsl:attribute name="style">vertical-align: middle; display: inline; margin-left: 3px; color: #808080</xsl:attribute>
<xsl:attribute name="style">display: inline; margin-left: 3px; color: #808080</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="style">vertical-align: middle; display: inline; margin-left: 3px;</xsl:attribute>
<xsl:attribute name="style">display: inline; margin-left: 3px; </xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$locale/string[@name=current()/id]"/>
<xsl:value-of select="$locale/string[@name=current()/id]"/>
</div>
</div>

View file

@ -2,28 +2,23 @@
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="content_support">
<div class="header">
<xsl:call-template name="header_helplinks" />
<xsl:value-of select="$locale/string[@name='S_Support']"/>
</div>
<div id="subcontent_support" class="content">
<div id="support_content">
<div class="support_title">
<img>
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>keyman-desktop.png
</xsl:attribute>
</img>
<img src="/app/keyman-desktop.png" />
</div>
<div class="support_edition">
<xsl:value-of select="$locale/string[@name='S_Support_Version']"/>&#160;<xsl:value-of select="/Keyman/support/version" /><br />
<xsl:value-of select="$locale/string[@name='S_Support_Version']"/>&#160;<xsl:value-of select="/Keyman/version-info/@versionWithTag" /><br />
</div>
<div class="support_contact">
<p><xsl:value-of select="$locale/string[@name='S_Support_ContactInstructions_Free']"/></p>
<xsl:call-template name="button">
@ -39,7 +34,7 @@
<div class="support_sil">
<xsl:value-of select="$locale/string[@name='S_Support_CreatedBySIL']"/>
</div>
<div class="support_copyright">
<xsl:value-of select="$locale/string[@name='S_Support_Copyright']"/>
</div>
@ -47,15 +42,16 @@
<div class="support_links">
<h2><xsl:value-of select="$locale/string[@name='S_Support_UsefulLinks']"/></h2>
<ul>
<li><a href="https://www.firstvoices.com/">www.firstvoices.com</a></li>
<li><a href="https://www.keyman.com/">www.keyman.com</a></li>
<li><a href="keyman:link?url=https://www.firstvoices.com/">www.firstvoices.com</a></li>
<li><a><xsl:attribute name="href">keyman:link?url=<xsl:value-of select="/Keyman/keyman-com"/>/</xsl:attribute>keyman.com</a></li>
<li><a href="keyman:support_diagnostics"><xsl:value-of select="$locale/string[@name='S_Menu_Diagnostics_Diagnostics']"/></a></li>
<li><a href="keyman:support_updatecheck"><xsl:value-of select="$locale/string[@name='S_Button_CheckForUpdates']"/></a></li>
<li><a href="keyman:link?url=https://keyman.com/go/desktop/10.0/support"><xsl:value-of select="$locale/string[@name='S_Button_OnlineSupport']"/></a></li>
<li><a>
<xsl:attribute name="href">keyman:link?url=<xsl:value-of select="/Keyman/keyman-com" />/go/<xsl:value-of select="/Keyman/version-info/@versionRelease" />/support</xsl:attribute
><xsl:value-of select="$locale/string[@name='S_Button_OnlineSupport']"/></a></li>
</ul>
</div>
</div>
</div>
</xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>

View file

@ -1,583 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Locale [
<!ENTITY ProductName "FirstVoices Keyboards">
<!ENTITY Name "&ProductName;">
<!ENTITY Name_CNV "&ProductName;">
<!ENTITY Name_CN "&ProductName;">
]>
<Locale>
<!--
locale.dtd: Contains all localizable strings from Keyman Configuration XML files.
Create a user interface translation for Keyman for Windows at https://translate.keyman.com/
-->
<String Group="System" Type="PlainText" Id="S_LocaleAuthors" Version="7.1.266.0" Description="Name(s) of people who created this translation - i.e. your name">Keyman</String>
<String Group='_Font' Type="PlainText" Id="SK_UIFontName" Version="7.0.230.0" Description="The standard font">Tahoma</String>
<String Group='_Font' Type="PlainText" Id="SK_UIFontSize" Version="7.0.230.0" Description="The standard font size">8</String>
<!-- BETA ONLY ENTITIES -->
<String Group="System" Type="PlainText" Id="S_BETA" Version="7.0.230.0" Description="Set this text to 'BETA' for beta versions of Keyman, and empty otherwise"></String>
<!-- Product Name -->
<String Group="Product" Type="PlainText" Id="S_ShortProductName" Version="7.0.230.0" Description="Company, product and version name">&Name_CNV;</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- General Strings -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="General Strings" Type="PlainText" Id="S_Yes" Version="7.0.230.0" Description="Yes term">Yes</String>
<String Group="General Strings" Type="PlainText" Id="S_No" Version="7.0.230.0" Description="No term">No</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonYes" Version="7.0.230.0" Description="Yes button in message boxes">&amp;Yes</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonNo" Version="7.0.230.0" Description="No button in message boxes" >&amp;No</String>
<String Group="General Strings" Type="PlainText" Id="S_Button_OK" Version="7.0.230.0" Description="Ok button term">OK</String>
<String Group="General Strings" Type="PlainText" Id="S_Button_Cancel" Version="7.0.230.0" Description="Cancel button term">Cancel</String>
<String Group="General Strings" Type="PlainText" Id="S_Button_Close" Version="7.0.230.0" Description="Close button term">Close</String>
<String Group="General Strings" Type="PlainText" Id="S_Button_Apply" Version="8.0.314.0" Description="Apply button term">Apply</String>
<String Group="General Strings" Type="PlainText" Id="S_Button_RemindLater" Version="8.0.314.0" Description="Remind me Later button term">Remind me Later</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonOK" Version="7.0.230.0" Description="OK button in message boxes">OK</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonCancel" Version="7.0.230.0" Description="Cancel button in message boxes">Cancel</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKBalloonClickToSelectKeyboard" Version="8.0.330.0" Description="Balloon that shows when Keyman icon is first shown during the tutorial">Click this icon to select a keyboard</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKBalloonOSKClosed" Version="8.0.330.0" Description="Balloon that shows when OSK is closed">&Name; is still running. Click this icon to use your language keyboard at any time</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Configuration Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="Configuration Dialog" Type="PlainText" Id="S_ConfigurationTitle" Version="7.0.230.0" Description="Configuration dialog title, which includes the product name">&Name; Configuration</String>
<Dialog Id="Keyman" Version="7.0.230.0" Width="740" Height="476">
<footerheight>40</footerheight>
<menuwidth>118</menuwidth>
<headerheight>40</headerheight>
</Dialog>
<String Group="Configuration Dialog" Type="PlainText" Id="S_Caption_Help" Version="7.0.239.0" Description="Configuration dialog link to Help">Help</String>
<!-- Tab names and shortcut keys -->
<String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Keyboards" Version="7.0.230.0" Description="Keyboard Layouts tab name">Keyboard Layouts</String> <String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Keyboards_AccessChar" Version="7.0.230.0" Description="Direct access to the Keyboard Layouts tab using alt+">K</String>
<String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Options" Version="7.0.230.0" Description="Options tab name">Options</String> <String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Options_AccessChar" Version="7.0.230.0" Description="Direct access to the Options tab using alt+">O</String>
<String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Hotkeys" Version="7.0.230.0" Description="Hotkeys tab name">Hotkeys</String> <String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Hotkeys_AccessChar" Version="7.0.230.0" Description="Direct access to the Hotkeys tab using alt+">H</String>
<String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Support" Version="7.0.230.0" Description="Support tab name">Support</String> <String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_Support_AccessChar" Version="7.0.230.0" Description="Direct access to the Support tab using alt+">S</String>
<String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_KeepInTouch" Version="9.0.493.0" Description="Keep in touch tab name">Keep in Touch</String> <String Group="Configuration Dialog - Tab names" Type="PlainText" Id="S_KeepInTouch_AccessChar" Version="9.0.492.0" Description="Direct access to the Keep in Touch tab using alt+">T</String>
<!-- Configuration detail captions -->
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Filename" Version="7.0.230.0" Description="Keyboard download window, etc. - term for filename">Filename:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Version" Version="7.0.230.0" Description="Keyboard download window, etc. - term for package version">Package version:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_KeyboardVersion" Version="9.0.442.0" Description="Keyboard download window, etc. - term for keyboard version">Keyboard version:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Author" Version="7.0.230.0" Description="Keyboard download window, etc. - term for author">Author:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Website" Version="7.0.230.0" Description="Keyboard download window, etc. - term for website">Website:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Package" Version="7.0.230.0" Description="Keyboard download window, etc. - term for package">Package:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Fonts" Version="7.0.230.0" Description="Keyboard download window, etc. - term for fonts">Fonts:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Keyboards" Version="7.0.230.0" Description="Keyboard download window, etc. - term for keyboard layouts">Keyboard Layouts:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Encodings" Version="7.0.230.0" Description="Keyboard download window, etc. - term for encodings (encodings include Unicode, ANSI, Non-Unicode, etc).">Encodings:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_LayoutType" Version="7.0.230.0" Description="Keyboard download window, etc. - term for keyboard layout type (keyboard layout types include Fixed and Mnemonic)">Layout Type:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_LayoutType_Positional" Version="7.0.230.0" Description="Keyboard download window, etc. - term for the fixed keyboard layout type">Fixed (Positional)</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_LayoutType_Mnemonic" Version="7.0.230.0" Description="Keyboard download window, etc. - term for the mnemonic keyboard layout type">Mapped to Windows layout (Mnemonic)</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Description" Version="7.0.230.0" Description="Keyboard download window, etc. - term for description">Description:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_InstalledFor" Version="7.0.230.0" Description="Text preceding Install choices">Installed for:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_InstalledFor_AllUsers" Version="7.0.230.0" Description="Install choice - install for all users">All users</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_InstalledFor_CurrentUser" Version="7.0.230.0" Description="Install choice - install for current user">Current user</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Languages" Version="9.0.420.0" Description="Text preceding linked language profiles">Languages:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Languages_Uninstall" Version="9.0.420.0" Description="Remove language profile">&#x2715;</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Languages_Install" Version="9.0.420.0" Description="Add language profile">Add language</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_OnScreenKeyboard" Version="7.0.230.0" Description="Term for the On Screen Keyboard">On Screen Keyboard:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_OnScreenKeyboard_Custom" Version="8.0.306.0" Description="(OSK) Custom term">Custom</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_OnScreenKeyboard_Installed" Version="7.0.230.0" Description="(OSK) Installed term">Installed</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_OnScreenKeyboard_NotInstalled" Version="7.0.230.0" Description="(OSK) Not installed term">Not installed</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Documentation" Version="8.0.306.0" Description="Term for the Documentation">Documentation:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Documentation_Installed" Version="8.0.306.0" Description="(Documentation) Installed term">Installed</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Documentation_NotInstalled" Version="8.0.306.0" Description="(Documentation) Not installed term">Not installed</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Message" Version="7.0.230.0" Description="Keyboard download window, etc. - term for additional messages">Message:</String>
<String Group="Configuration Dialog - Captions" Type="PlainText" Id="S_Caption_Copyright" Version="7.0.230.0" Description="Keyboard download window, etc. - term for copyright">Copyright:</String>
<!-- Keyboards tab -->
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Button_PackageOptions" Version="7.0.230.0" Description="Keyboard Layouts - package options button">Package options</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Button_KeyboardOptions" Version="7.0.230.0" Description="Keyboard Layouts - standard options button">Options</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Button_InstallKeyboard" Version="7.0.230.0" Description="Keyboard Layouts - install keyboard button">Install keyboard...</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Button_DownloadKeyboard" Version="7.0.230.0" Description="Keyboard Layouts - download keyboard button">Download keyboard...</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_Options" Version="8.0.287.0" Description="KL option button submenu - keyboard options">Keyboard options</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_Uninstall" Version="7.0.230.0" Description="KL option button submenu - uninstall keyboard">Uninstall</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_UninstallPackage" Version="7.0.230.0" Description="KL option button submenu - uninstall package">Uninstall package</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_ShowWelcome" Version="7.0.230.0" Description="KL option button submenu - show introductory help">Show introductory help</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_ChangeHotkey" Version="7.0.230.0" Description="KL option button submenu - change hotkey">Change hotkey</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_SetHotkey" Version="7.0.230.0" Description="KL option button submenu - set hotkey">Set hotkey</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_UninstallOnScreenKeyboard" Version="7.0.230.0" Description="KL option button submenu - uninstall OSK">Uninstall On Screen Keyboard</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Menu_InstallOnScreenKeyboard" Version="7.0.230.0" Description="KL option button submenu - install OSK">Install On Screen Keyboard...</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="S_Keyboards_NoKeyboardsInstalled" Version="7.0.230.0" Description="Keyboard Layouts - notice of no keyboard layouts installed">You do not have any keyboards installed. Click the Download Keyboard button to install a keyboard layout from the Keyman website.</String>
<String Group="Configuration Dialog - Keyboard Layouts tab" Type="PlainText" Id="SKUninstallRequireAdmin" Version="7.1.251.0" Parameters="%0:s = keyboard layout name" Description="Keyboard Layouts - notice of ineligibility to uninstall a keyboard">You can only uninstall the keyboard '%0:s' if you are an Administrator</String>
<!-- Options tab -->
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="kogGeneral" Version="7.0.230.0" Description="Options section - General">General</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="kogStartup" Version="7.0.230.0" Description="Options section - Startup">Startup</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="kogOSK" Version="7.0.244.0" Description="Options section - OSK">On Screen Keyboard</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="kogAdvanced" Version="7.0.230.0" Description="Options section - Advanced">Advanced</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koKeyboardHotkeysAreToggle" Version="7.0.230.0" Description="General options - hotkeys toggle on AND off a keyboard layout">Keyboard hotkeys toggle keyboard activation</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koAltGrCtrlAlt" Version="7.0.230.0" Description="General options - Ctrl+Alt simulates AltGr on computers without AltGr">Simulate AltGr with Ctrl+Alt</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koDeadkeyConversion" Version="9.0.480.0" Description="Advanced options - Base keyboard deadkeys are treated as normal keys">Treat hardware deadkeys as plain keys</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koShowHints" Version="7.0.244.0" Description="General options - show/hide hint messages (resets hint messages individually disabled)">Show hint messages</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koStartWithWindows" Version="7.0.230.0" Description="Startup options - Start Keyman with Windows start">Start when Windows starts</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koShowStartup" Version="7.0.230.0" Description="Startup options - show/hide splash screen">Show splash screen</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koShowWelcome" Version="7.0.230.0" Description="Startup options - show/hide welcome screen">Show welcome screen</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koCheckForUpdates" Version="7.0.230.0" Description="Startup options - check online weekly for updates">Automatically check keyman.com weekly for updates</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koTestKeymanFunctioning" Version="7.0.236.0" Description="Startup options - test for conflicting apps when Product starts">Test for conflicting applications when &Name; starts</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koReleaseShiftKeysAfterKeyPress" Version="7.0.236.0" Description="OSK options - Releases shift/ctrl/alt on OSK after key press">Release Shift/Ctrl/Alt on On Screen Keyboard after clicking a key</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koAutoOpenOSK" Version="7.0.244.0" Description="OSK options - auto-open OSK">Always show On Screen Keyboard Window when Keyman keyboard is selected</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koAutoSwitchOSKPages" Version="7.0.244.0" Description="OSK options - when a keyboard is activated, switch to most appropriate page in OSK">Switch to appropriate On Screen Keyboard/Help automatically when a keyboard is selected</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koTurnOnSurrogates" Version="7.0.230.0" Description="Advanced options - turn on Unicode suplementary character display (not needed in Vista)">Turn on Unicode supplementary character display (requires restart)</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koUnknownLanguage" Version="7.0.230.0" Description="Advanced options - installs Unknown Language in Windows Control Panel (should only be used for legacy layouts).">Turn on 'Unknown' language</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koDebugging" Version="7.0.230.0" Description="Advanced options - turn on debugging (which creates a very large file)">Debugging</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koSwitchLanguageWithKeyboard" Version="7.0.244.0" Description="Advanced options - switch Windows language when keyboard selected">Switch Windows language when a Keyman keyboard is selected</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koSwitchLanguageForAllApplications" Version="7.1.274.0" Description="Advanced options - selected language applies to all applications">Select keyboard layout for all applications</String>
<String Group="Configuration Dialog - Options tab" Type="FormatString" Id="koRunElevatedInVista" Version="7.0.230.0" Description="Advanced options - elevate user permission to highest permisable level">Always elevate user permissions when running in Windows Vista</String>
<String Group="Configuration Dialog - Options tab" Type="PlainText" Id="S_Button_UILanguage" Version="7.0.230.0" Description="Options button - changes user interface language/localization">User interface language...</String>
<String Group="Configuration Dialog - Options tab" Type="PlainText" Id="S_Button_BaseKeyboard" Version="9.0.445.0" Description="Options tab - base keyboard button">Base Keyboard...</String>
<!-- Hotkeys tab -->
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_Keyboard_Prefix" Version="7.0.230.0" Description="Hotkey - activation term preceding Keyman keyboard layout name. Note: include a space following."></String> <!-- e.g. "Activate [Korean KORDA] Keyboard" -->
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_Keyboard_Suffix" Version="7.0.230.0" Description="Hotkey - keyboard layout term following Keyman keybaord layout name. Note: include an initial space."></String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_Language_Prefix" Version="7.0.241.0" Description="Hotkey - activation term preceding Windows language name. Note: include a space following."></String> <!-- e.g. "Activate [Korean KORDA] Keyboard" -->
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_Language_Suffix" Version="7.0.241.0" Description="Hotkey - language term following Windows language name. Note: include an initial space."></String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_None" Version="7.0.230.0" Description="Hotkey - text used when no hotkey set for an option">(none)</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_TurnKeymanOff" Version="7.0.230.0" Description="Hotkey - Turn Product Off">Switch &Name; Off</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_OpenKeyboardMenu" Version="7.0.230.0" Description="Hotkey - Open Keyman systemtray menu">Open Keyboard Menu</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_ShowOnScreenKeyboard" Version="7.0.230.0" Description="Hotkey - show keyboard in OSK">Show On Screen Keyboard Pane</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_OpenConfiguration" Version="7.0.230.0" Description="Hotkey - open Keyman Configuration">Open Configuration</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_ShowKeyboardUsage" Version="7.1.275.0" Description="Hotkey - show keyboard usage in OSK">Show Keyboard Usage Pane</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_ShowFontHelper" Version="7.1.275.0" Description="Hotkey - show font helper in OSK">Show Font Helper Pane</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_ShowCharacterMap" Version="7.1.275.0" Description="Hotkey - show character map in OSK">Show Character Map Pane</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_OpenTextEditor" Version="7.1.275.0" Description="Hotkey - open text editor">Open Text Editor</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_SwitchLanguage" Version="8.0.294.0" Description="Hotkey - switch language window">Open Language Switcher</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_Control_Title" Version="7.1.274.0" Description="Hotkey - Control Title">General Hotkeys</String>
<String Group="Configuration Dialog - Hotkeys tab" Type="PlainText" Id="S_Hotkey_Keyboard_Title" Version="7.1.274.0" Description="Hotkey - Keyboard Title">Keyboard Layouts</String>
<!-- Languages tab -->
<String Group="Configuration Dialog - Languages tab" Type="PlainText" Id="S_Languages_InstalledLanguage" Version="7.0.230.0" Description="Languages - Windows installed languages column header">Installed Language</String>
<String Group="Configuration Dialog - Languages tab" Type="PlainText" Id="S_Languages_WindowsLayout" Version="7.0.230.0" Description="Languages - Windows keyboard layout column header">Windows Layout</String>
<String Group="Configuration Dialog - Languages tab" Type="PlainText" Id="S_Languages_KeymanKeyboard" Version="7.0.230.0" Description="Languages - Keyboard layout column header">Keyman Keyboard</String>
<String Group="Configuration Dialog - Languages tab" Type="PlainText" Id="S_Languages_UseWindowsLayout" Version="7.0.230.0" Description="Default text used when a Windows language is associated with its standard Windows keyboard layout">(use Windows layout)</String>
<!-- Support tab -->
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_UpgradeNow" Version="9.0.465.0" Description="">Upgrade now!</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_SendSupportRequest" Version="9.0.465.0" Description="">Send Support Request</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_ContactHeading" Version="9.0.465.0" Description="">Contact Keyman Support</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_ContactInstructions_Free" Version="9.0.465.0" Description="">If you have any issues using Keyman, just ask us for help.</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_CommunitySupport" Version="9.0.465.0" Description="">Open FirstVoices Help Center</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_CreatedBySIL" Version="11.0.1500.0" Description="Support - SIL statement">Created by SIL International</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_Copyright" Version="7.0.230.0" Description="Support - Product Copyright">Copyright &#xa9; SIL International. All Rights Reserved.</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_Version" Version="7.0.230.0" Description="Support - version">Version</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_EngineVersion" Version="7.0.230.0" Description="Support - engine version">Engine Version</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Support_UsefulLinks" Version="8.0.294.0" Description="Support - Useful Links heading">Useful Links</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_OnlineSupport" Version="7.0.230.0" Description="Support button - links to online support">Online Help</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_Diagnostics" Version="7.0.230.0" Description="Support button - offers a submenu with two diagnostic tools">Diagnostics</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_CheckForUpdates" Version="7.0.230.0" Description="Support button - manually checks for product updates">Check for Updates</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Button_ProxyConfig" Version="7.0.230.0" Description="Options button - allows manual adjustment of proxy settings">Proxy Settings...</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Menu_Diagnostics_Diagnostics" Version="7.0.230.0" Description="Support button submenu - performs a diagnostic report">Diagnostics</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="S_Menu_Diagnostics_CheckLanguages" Version="7.0.230.0" Description="Support button submenu - evaluates if Windows language settings are correct for current Keyman keyboard layouts">Check Language Settings</String>
<String Group="Configuration Dialog - Support tab" Type="PlainText" Id="SKAllLanguageSettingsTestedOK" Version="7.1.250.0" Description="Support - result of positive evaluation: Windows language settings are correct for current Keyman keyboard layouts">Microsoft Windows appears to be correctly configured for your language(s).</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Download Keyboard Layout Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="DownloadKeyboard" Width="740" Height="400">
<footerheight>40</footerheight>
</Dialog>
<String Group="Download Keyboard Dialog" Type="PlainText" Id="S_DownloadKeyboard_Title" Version="7.0.230.0" Description="Download keyboard layout from keyman.com dialog title">Download Keyboard From keyman.com</String>
<String Group="Download Keyboard Dialog" Type="PlainText" Id="S_DownloadKeyboard_DownloadOnlyCheckbox" Version="7.0.230.0" Description="Download only option checkbox">Don't install, just download</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Install Keyboard Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Note: this dialog uses captions from the Configuration dialog as well -->
<Dialog Id="InstallKeyboard" Width="600" Height="300" />
<String Group="Install Keyboard Dialog" Type="PlainText" Id="S_InstallKeyboard_Title" Version="7.0.230.0" Description="Install keyboard/package dialog title">Install Keyboard/Package</String>
<String Group="Install Keyboard Dialog" Type="PlainText" Id="S_InstallKeyboard_Tab_Details" Version="7.0.230.0" Description="Install keyboard/package - details">Details</String>
<String Group="Install Keyboard Dialog" Type="PlainText" Id="S_InstallKeyboard_Tab_Readme" Version="7.0.230.0" Description="Install keyboard/package - readme">Readme</String>
<String Group="Install Keyboard Dialog" Type="PlainText" Id="S_InstallKeyboard_Button_Install" Version="7.0.230.0" Description="Install keyboard/package - install button">Install</String>
<String Group="Install Keyboard Dialog" Type="PlainText" Id="S_InstallKeyboard_Button_InstallAllUsers" Version="7.0.241.0" Description="Install keyboard/package - install for all users button">Install for all users</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Proxy Configuration Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="ProxyConfiguration" Width="240" Height="176" />
<String Group="Proxy Configuration Dialog" Type="PlainText" Id="S_ProxyConfiguration_Title" Version="7.0.230.0" Description="Proxy configuration dialog title">Proxy Server Configuration</String>
<String Group="Proxy Configuration Dialog" Type="PlainText" Id="S_ProxyConfiguration_Server" Version="7.0.230.0" Description="Proxy dialog - fillable-field server">Server: </String>
<String Group="Proxy Configuration Dialog" Type="PlainText" Id="S_ProxyConfiguration_Port" Version="7.0.230.0" Description="Proxy dialog - fillable-field port">Port: </String>
<String Group="Proxy Configuration Dialog" Type="PlainText" Id="S_ProxyConfiguration_Username" Version="7.0.230.0" Description="Proxy dialog - fillable-field username">Username: </String>
<String Group="Proxy Configuration Dialog" Type="PlainText" Id="S_ProxyConfiguration_Password" Version="7.0.230.0" Description="Proxy dialog - fillable-field password">Password: </String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Base Keyboard Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="BaseKeyboard" Width="512" Height="160" />
<String Group="Base Keyboard Dialog" Type="PlainText" Id="S_BaseKeyboard_Title" Version="9.0.445.0" Description="Base keyboard dialog title">Set Base Keyboard</String>
<String Group="Base Keyboard Dialog" Type="PlainText" Id="S_BaseKeyboard_Text" Version="9.0.445.0" Description="Base keyboard dialog description">Select the base Latin script
keyboard that you use in Windows. Keyman keyboards will adapt automatically to your preferred layout.</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Hotkey Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="Hotkey Dialog" Type="FormatString" Id="SKChangeHotkeyTitle" Version="7.0.230.0" Description="Change Hotkey dialog title">Change Hotkey</String>
<String Group="Hotkey Dialog" Type="FormatString" Id="SKButtonClearHotkey" Version="7.0.230.0" Parameters="&amp; = alt+ access-character" Description="Hotkey dialog - clear button">&amp;Clear Hotkey</String>
<String Group="Hotkey Dialog" Type="FormatString" Id="SKSetHotkey_Keyboard" Version="7.0.230.0" Parameters="%0:s = Name of keyboard" Description="Hotkey dialog - message when setting hotkey for a keyboard">Select a standard hotkey or choose 'Custom' and hold Ctrl,Shift and/or Alt and type your desired hotkey for keyboard %0:s:</String>
<String Group="Hotkey Dialog" Type="FormatString" Id="SKSetHotkey_Language" Version="7.0.241.0" Parameters="%0:s = Name of keyboard" Description="Hotkey dialog - message when setting hotkey for a language">Select a standard hotkey or choose 'Custom' and hold Ctrl,Shift and/or Alt and type your desired hotkey for language %0:s:</String>
<String Group="Hotkey Dialog" Type="FormatString" Id="SKSetHotkey_Interface" Version="7.0.230.0" Description="Hotkey dialog - message displayed when changing a hotkey for a product feature (e.g. show menu or show on screen keyboard)">Select a standard hotkey or choose 'Custom' and hold Ctrl,Shift and/or Alt and type your desired hotkey:</String>
<String Group="Hotkey Dialog" Type="FormatString" Id="SKUnsafeHotkey" Version="7.0.230.0" Parameters="%0:s = Hotkey" Description="Hotkey dialog - warning of hotkey conflict with standard keyboard use">The hotkey %0:s will conflict with normal keyboard use. You should use at least Ctrl or Alt. Do you want to change this now?</String>
<String Group="Hotkey Dialog" Type="FormatString" Id="SKHotkeyConflicts_Keyboard" Version="7.0.230.0" Parameters="%0:s = Hotkey, %1:s = Conflicting keyboard" Description="Hotkey dialog - warning of hotkey conflict with hotkey for another keyboard">The hotkey %0:s conflicts with the hotkey selected for keyboard %1:s. If you continue, the hotkey for keyboard %1:s will be cleared. Continue?</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Keyboard for Install Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="Select Keyboard for Install Dialog" Type="FormatString" Id="SKSelectKeyboardsTitle" Version="7.0.241.0" Description="Select Keyboards for Install dialog title">Select Keyboards to Install</String>
<String Group="Select Keyboard for Install Dialog" Type="FormatString" Id="SKSelectKeyboardsBlurb" Version="7.0.241.0" Parameters="%0:s: Number of keyboards user can still install" Description="Select Keyboards for Install text">You cannot install all the keyboards in this package. You can install a maximum of %0:d additional keyboards. Please select the keyboards you wish to install from this package.</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Online Update Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="OnlineUpdate" Width="470" Height="260" />
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_Title" Version="7.0.230.0" Description="Update dialog title, where &Name; = product name">Updated &Name; Components Available</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_NewVersionAvailable" Version="7.0.230.0" Description="Update dialog - updates available text">Updates for &Name_CN; are now available</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_NewVersionPrompt" Version="7.1.255.0" Description="Update dialog - prompt to select updates">Please select the updates you wish to install:</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_InstallQuery" Version="7.0.230.0" Description="Update dialog - install query">Do you want to download and install this patch now?</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_DownloadFrom" Version="7.0.230.0" Description="Update dialog - download information">You can download the new version from:</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_DownloadQuery" Version="7.0.230.0" Description="Update dialog - keyman.com website visiting query">Do you want to visit the website now?</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_Button_InstallNow" Version="7.0.230.0" Description="Update dialog - install now button">Install Now</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_Button_InstallLater" Version="7.0.230.0" Description="Update dialog - cancel button">Cancel</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_OldVersionHead" Version="7.1.255.0" Description="Update dialog - old version">Old Version</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_ComponentHead" Version="7.1.255.0" Description="Update dialog - update component">Updated Component</String>
<String Group="Online Update Dialog" Type="PlainText" Id="S_Update_SizeHead" Version="7.1.255.0" Description="Update dialog - update size">Size</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_KeymanText" Version="7.0.230.0" Parameters="%0:s = Current version number" Description="Update dialog - name and version of updatable product">&Name; %0:s</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_PackageText" Version="7.0.230.0" Parameters="%0:s = Package description, %1:s = Current package version number" Description="Update dialog - name and version of updatable keyboard layout package">Keyboard %0:s %1:s</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_UnableToContact" Version="7.0.230.0" Description="Update dialog - unable to access keyman.com warning">Unable to contact keyman.com - please make sure you have an active Internet connection and try again.</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_UnableToContact_Error" Version="7.0.230.0" Parameters="%0:s = Error message" Description="Update dialog - unable to access keyman.com error message">Unable to contact keyman.com - please make sure you have an active Internet connection and try again. The error received was: %0:s</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_IconTitle" Version="8.0.288.0" Description="Update icon - title">&Name; updates are available</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_IconText" Version="8.0.288.0" Description="Update icon - text">Click this icon to download and install updates</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_IconMenuText" Version="8.0.288.0" Description="Update icon - install menu item">View and &amp;install &Name; updates</String>
<String Group="Online Update Dialog" Type="FormatString" Id="SKUpdate_IconMenuExit" Version="8.0.288.0" Description="Update icon - exit menu item">E&amp;xit online update check</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Splash Dialog -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="Splash" Width="630" Height="450" />
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_Title" Version="7.0.230.0" Description="Splash dialog title, with company, product and version name">&Name_CNV;</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_Name" Version="8.0.288.0" Description="Splash major title">&Name;</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_Version" Version="8.0.288.0" Description="Splash major version"></String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_Start" Version="8.0.294.0" Description="Start Keyman button">Start Keyman</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_Exit" Version="8.0.294.0" Description="Exit button">Exit</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_OtherTasks" Version="8.0.294.0" Description="Other tasks heading">Other tasks</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_Configuration" Version="8.0.294.0" Description="Keyman Configuration link">Configuration</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_ShowAtStartup" Version="9.0.341.0" Description="Show at Startup toggle">Show this screen at startup</String>
<String Group="Splash Dialog" Type="PlainText" Id="S_Splash_HideAtStartup" Version="9.0.431.0" Description="Hide at Startup toggle">Hide this screen at startup</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- UI Languages & Localization -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="_LanguageInfo" Type="PlainText" Id="S_DisplayIn" Version="8.0.278.0" Description="'Display In' text label for UI language menu">Display in</String>
<String Group="_LanguageInfo" Type="PlainText" Id="S_MoreUILanguagesMenu" Version="8.0.278.0" Description="More UI languages online menu item">Find other display languages online...</String>
<String Group="_LanguageInfo" Type="PlainText" Id="S_ContributeUILanguagesMenu" Version="9.0.525.0" Description="Link to contribute to language UI">Help translate the user interface...</String>
<String Group="_LanguageInfo" Type="FormatString" Id="SKUILanguageName" Version="7.0.230.0" Description="User interface language name in the UI language">English</String>
<String Group="_LanguageInfo" Type="FormatString" Id="SKUILanguageNameWithEnglish" Version="7.0.230.0" Description="UI language name in the UI language with the English name in parentheses (this message is used when the user gets stuck in a strange UI language)">English</String>
<String Group="_LanguageInfo" Type="FormatString" Id="SKLanguageCode" Version="7.0.230.0" Description="The language code for the current translation">en</String>
<String Group="_LanguageInfo" Type="FormatString" Id="SKDefaultLanguageCode" Version="7.0.230.0" Description="The default language code for this product. This should be the language that the product is created in. For Keyman (all editions) this must stay 'en', for all translations.">en</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKShortApplicationTitle" Version="7.0.230.0" Description="Product name">&Name;</String>
<String Group="UI Language Dialog" Type="FormatString" Id="SKDialogSelectLanguage" Version="7.0.230.0" Description="Select UI dialog title">Select User Interface Language</String>
<String Group="UI Language Dialog" Type="FormatString" Id="SKUILanguageHelp" Version="7.0.244.0" Description="UI dialog - instructions">Choose the language that you want displayed in the &Name; interface.</String>
<String Group="UI Language Dialog" Type="FormatString" Id="SKButtonUILanguageDownload" Version="7.0.244.0" Description="UI dialog - 'More languages online' button">&amp;More languages online...</String>
<String Group="UI Language Dialog" Type="FormatString" Id="SKDialogUILanguageCreateTranslation" Version="7.1.266.0" Description="Create a new UI translation online link">Create a new translation online</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Language Config & Script Support -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="LangSetup" Width="650" Height="375"></Dialog>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_Title" Version="7.0.230.0" Description="Language configuration tasks dialog title">Language Configuration Tasks</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_TitleInnerPrefix" Version="7.0.230.0" Description="LCT dialog - subtitle text preceding language name(s)">Configure your computer to work with</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_TitleInnerSuffix" Version="7.0.230.0" Description="LCT dialog - subtitle text following language name(s)"></String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_BlurbPrefix" Version="7.0.230.0" Description="LCT dialog - standard explanitory text preceding language name(s)">&Name; has detected that the following configuration tasks need to be completed in order for</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_BlurbSuffix" Version="7.0.230.0" Description="LCT dialog - standard explanitory text following language name(s)">script(s) to work correctly on your computer:</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_psrtMSOfficeLanguage" Version="7.0.230.0" Description="LCT dialog - language support for Microsoft Office">Microsoft Office Language Support</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_MoreInfo" Version="7.0.230.0" Description="LCT dialog - link to help information about the proposed LCT">More&#160;Information...</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_Ask" Version="7.0.230.0" Description="LCT dialog - request to complete tasks now">Do you want &Name; to complete these tasks now?</String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_Note" Version="7.0.230.0" Description="LCT dialog - note that system changes won't be uninstalled even if Product is"></String>
<String Group="Language Setup Dialog" Type="PlainText" Id="S_LangSetup_SaveDisabledItems" Version="7.0.230.0" Description="LCT dialog - don't ask for this specific LCT again checkbox">Don't ask me about this again</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Hints -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="Hint" Width="450" Height="300">
<footerheight>40</footerheight>
<headerheight>40</headerheight>
</Dialog>
<String Group="Hints" Type="PlainText" Id="S_Button_ResetHints" Version="7.0.244.0" Description="Hint - options tab button to reset hints">Reset Hints</String>
<String Group="HInts" Type="PlainText" Id="SKHintsReset" Version="7.0.244.0" Description="Hint - options tab dialog confirming reset of hints">All hint messages have been reset and will be displayed again.</String>
<String Group="Hints" Type="HintTitle" Id="HintTitle_KH_EXITPRODUCT" Version="7.0.244.0" Description="Hint - dialog title upon attempting to exit product">Exit &Name;?</String>
<String Group="Hints" Type="Hint" Id="Hint_KH_EXITPRODUCT" Version="7.0.244.0" Description="Hint - asks for confirmation, explains the difference between de-activating a keyboard layout and closing Product">Are you sure you want to exit &Name;? Your Keyman keyboards will still be listed in the Windows languages, but will not be functional until you restart &Name;.</String>
<String Group="Hints" Type="HintTitle" Id="HintTitle_KH_CLOSEOSK" Version="7.0.244.0" Description="Hint - dialog title upon closing the OSK">On Screen Keyboard Closed</String>
<String Group="Hints" Type="Hint" Id="Hint_KH_CLOSEOSK" Version="7.0.244.0" Description="Hint - explains that Product is still running and iforms how to reopen OSK">You have closed the On Screen Keyboard. &Name; is still running. You can open the On Screen Keyboard at any time by clicking on the &Name; Icon and selecting "On Screen Keyboard"</String>
<String Group="Hints" Type="PlainText" Id="S_HintDialog_DontShowHintAgain" Version="10.0.836.0" Description="Hint dialog - caption of checkbox at bottom of dialog">Don't show this hint again</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Help -->
<!-- - - - - - - - - - - - - - - - - - -->
<Dialog Id="Help" Width="450" Height="300"></Dialog>
<String Group="Help Dialog" Type="PlainText" Id="S_HelpTitle" Version="7.0.230.0" Description="Help - product name help">&Name; Help</String>
<String Group="Help Dialog" Type="PlainText" Id="S_Help_Product" Version="7.0.230.0" Description="Help - help contents link title">Help Contents</String>
<String Group="Help Dialog" Type="PlainText" Id="S_Help_Keyboard_Prefix" Version="7.0.230.0" Description="Help - text preceding keyboard name">Help on "</String>
<String Group="Help Dialog" Type="PlainText" Id="S_Help_Keyboard_Suffix" Version="7.0.230.0" Description="Help - text following keyboard name">" keyboard</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Toolbar_ViewOnScreenKeyboard" Version="7.0.230.0" Description="Toolbar help - View OSK pop-up text">View On Screen Keyboard</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Toolbar_ViewKeyboardUsage" Version="7.0.230.0" Description="Toolbar help - View Keyboard Usage pop-up text">View Keyboard Usage</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Toolbar_ViewFontHelper" Version="7.0.230.0" Description="Toolbar help - View Font Helper pop-up text">View Font Helper</String>
<String Group="Toolbar Context Help" Type="PlainText" Caption="View Character Map" Version="7.0.230.0" Description="Toolbar help - View Character Map pop-up text">View Character Map</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Menu_SwitchKeymanOff" Version="7.0.230.0" Description="Toolbar help - Switch Keyman Off pop-up text">Switch &Name; Off</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Toolbar_OpenConfiguration" Version="7.0.230.0" Description="Toolbar help - Open Keyman Configuration pop-up text">Open &Name; Configuration</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Toolbar_OpenHelp" Version="7.0.230.0" Description="Toolbar help - Open help pop-up text">Open Help</String>
<String Group="Toolbar Context Help" Type="PlainText" Id="S_Toolbar_CloseOnScreenKeyboard" Version="7.0.230.0" Description="Toolbar help - Close OSK pop-up text">Close On Screen Keyboard</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Menu Items -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_SwitchKeymanOff" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Switch Keyman Off">Switch &Name; &amp;Off</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_OnScreenKeyboard" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - OSK">On Screen &amp;Keyboard</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_KeyboardUsage" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Keyboard Usage">Keyboard &amp;Usage</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_FontHelper" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Font Helper">&amp;Font Helper</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_CharacterMap" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Character Map">Character &amp;Map</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_TextEditor" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Text Editor">&amp;Text Editor...</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_Configuration" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Configuration">&amp;Configuration...</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_Help" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Help">&amp;Help...</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="S_Menu_Exit" Version="7.0.230.0" Parameters="&amp; precedes alt + access-character" Description="Systray item - Exit">E&amp;xit</String>
<String Group="System Tray Menu Items" Type="PlainText" Id="SKMenu_NoKeyboardsInstalled" Version="7.0.230.0" Description="Systray - notice of no keyboard layouts installed">No keyboard layouts are installed.
Choose "Configuration" to install a
keyboard layout for your language.</String>
<String Group="On Screen Keyboard Menu Items" Type="PlainText" Id="S_OSKContext_FadeWhenInactive" Version="7.0.230.0" Description="OSK right-click menu - fade OSK when mouse is elsewhere">Fade When Inactive</String>
<String Group="On Screen Keyboard Menu Items" Type="PlainText" Id="S_OSKContext_ShowToolbar" Version="7.0.230.0" Description="OSK right-click menu - show/hide OSK toolbar">Show Toolbar</String>
<String Group="On Screen Keyboard Menu Items" Type="PlainText" Id="S_OSKContext_SaveAsWebPage" Version="7.0.230.0" Description="OSK right-click menu - save diagram of active keyboard layout as a web page">Save as Web Page...</String>
<String Group="On Screen Keyboard Menu Items" Type="PlainText" Id="S_OSKContext_Print" Version="7.0.230.0" Description="OSK right-click menu - print diagram of active keyboard layout">Print...</String>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Formatted messages, assorted -->
<!-- These messages cannot contain HTML tags and are plain text -->
<!-- All text within these tags is whitespace-preserved by the Keyman COM API -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- General -->
<String Group="Formatted Messages"
Type="FormatString"
Id="SKApplicationTitle"
Version="7.0.230.0"
Description="Company and product name used for the title of message boxes and message dialogs">&Name_CN;</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKSplashVersion" Version="7.0.230.0" Parameters="%0:s = Version number string" Description="Version number">Version %0:s</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonHelp" Version="7.0.230.0" Description="Help button in message boxes">Help</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonPrint" Version="7.0.239.0" Description="Print button in Welcome dialog for keyboards">&amp;Print...</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKButtonDownload" Version="7.0.240.0" Description="Download button in Locale Selection dialog">&amp;Download...</String>
<!-- Notices -->
<String Group="Formatted Messages"
Type="FormatString"
Id="SKPackageAlreadyInstalled"
Version="7.0.230.0"
Parameters="%0:s = Package to be uninstalled"
Description="Notice during package installation that a package with the same name is already installed.">A package with the name %0:s is already installed. Do you want to uninstall it and install the new one?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKKeyboardAlreadyInstalled" Version="7.0.230.0" Parameters="%0:s = Keyboard name" Description="Notice during keyboard layout installation that a keyboard layout with the same name is already installed.">A keyboard with the name '%0:s' is already installed. If you continue, it will be uninstalled before the new one is installed. Continue?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKKeyboardPartOfPackage" Version="7.0.230.0" Parameters="%0:s = Keyboard name, %1:s = Package name" Description="Notice of need to uninstall an entire package">The keyboard '%0:s' is part of package '%1:s'. You must uninstall the entire package. Continue?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKInstallOnlyAsAdmin" Version="7.0.230.0" Description="Notice of user ineligibility to install/uninstall keyboards">You can only install or uninstall keyboards as Administrator. Use Control Panel to select languages for use as a normal user.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKSurrogatesRequiresRestart" Version="7.0.230.0" Description="Notice of surrogate setting change requiring Windows restart">Changing the setting of Surrogates requires Windows to be restarted. Do you want to restart Windows now?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKPackageDoesNotIncludeWelcome" Version="7.0.230.0" Parameters="%0:s = Package Name" Description="Notice of lack of introductory help">The package or keyboard '%0:s' does not include any introductory help.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKOSNotSupported" Version="7.0.230.0" Description="Notice of unsupported operating system">This operating system is not supported.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKActivation_Success" Version="7.0.230.0" Description="Notice of succesful licence activation">Your licence has been successfully activated.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKOnlineHelpFile" Version="7.0.230.0" Description="File name of the help file - must be .chm format. The locale folder will be checked first for the file">KeymanDesktop.chm</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKCouldNotFindHelp" Version="7.0.230.0" Description="Notice of help file not found">The help file $(SKOnlineHelpFile) could not be found.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKDamagedKeyboard" Version="7.0.230.0" Description="Notice of damaged keyboard">&lt;Damaged keyboard&gt;</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKANSIEncoding" Version="7.0.230.0" Description="Keyboard with an ANSI or Codepage encoding">Codepage</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUnicodeEncoding" Version="7.0.230.0" Description="Keyboard with a Unicode encoding">Unicode</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKDownloadProgress_Title" Version="7.0.230.0" Description="Notice of file downloading">Downloading File</String>
<!-- Confirmation Requests -->
<String Group="Formatted Messages" Type="FormatString" Id="SKUninstallOnScreenKeyboard" Version="7.0.230.0" Parameters="%0:s = Keyboard name" Description="Request for confirmation to uninstall OSK for a keyboard layout">Are you sure you want to remove the on screen keyboard installed for %0:s?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUninstallKeyboard" Version="7.0.239.0" Parameters="%0:s = Keyboard name" Description="Request for confirmation to uninstall keyboard layout">Are you sure you want to uninstall keyboard %0:s?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUninstallPackage" Version="7.0.239.0" Parameters="%0:s = Package name, %1:s: Fonts list" Description="Request for confirmation to uninstall a package">Are you sure you want to uninstall package %0:s?
%1:s</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUninstallPackageFonts" Version="7.1.270.0" Parameters="%0:s = Fonts list" Description="Text embedded in SKUninstallPackage when fonts are ready for uninstall.">The following fonts will also be uninstalled: %0:s.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKActivation_OnlineNow" Version="7.0.230.0" Parameters="%0:s = Licence number string (e.g. ABC1-D2E3-FGHJ-KLMN-OPQR)" Description="Request for confirmation that the present activation method is desired">Do you want to activate $(SKShortApplicationTitle) online now with licence number %0:s? If you click No, you can choose from alternate activation methods.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUnicodeData_Build" Version="7.0.230.0" Description="Request to build Unicode Chracter Map database">The Character Map has a database of characters that needs to be built before it can be used. Build it now?</String>
<!-- Errors -->
<String Group="Formatted Messages" Type="FormatString" Id="SKUnicodeData_DatabaseCouldNotBeDeleted" Version="7.0.230.0" Parameters="%0:s = Error detail string" Description="Error deleting Unicode Character Map database">The Unicode Character database could not be deleted for a rebuild. Error details are: %0:s</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUnicodeData_CouldNotCreateDatabase" Version="7.0.230.0" Parameters="%0:s = Error details" Description="Error creating Unicode Character Map database">The Unicode Character database could not be created and has been disabled. Error details are: %0:s</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKUnicodeData_DatabaseLoadFailedRebuild" Version="7.0.230.0" Parameters="%0:s = Error message" Description="Error loading Unicode Character Map database. Request to rebuild.">The Unicode character database did not load successfully (%0:s). Rebuild it now?</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKErrorActivatingBrowser" Version="7.0.230.0" Description="General URL error">Cannot activate browser or email program for this URL.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKCouldNotPrintKeyboard" Version="7.0.230.0" Description="Keyboard printing error">The keyboard could not be printed successfully. Please save to a web page and print manually.</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKCannotStartProduct" Version="7.0.241.0" Parameters="%0:s: error message" Description="Error from Keyman failing to start keyman.exe due to an access denied or file not found">&Name; failed to start. Please check your security settings to make sure that the program keyman.exe is allowed to start before continuing. The error returned was:
"%0:s"
Do you want to try and start &Name; again now?</String>
<!-- Warnings -->
<String Group="Formatted Messages" Type="FormatString" Id="SKDebuggingWarning" Version="7.0.230.0" Description="Warning upon starting debugging in the Options tab">&Name; debug information will be stored in a log file called %LOCALAPPDATA%\Keyman\Diag\system#.etl (where # is a number). You should exit &Name; before attempting to delete this file.
WARNING: This file can grow large very quickly. Enabling debugging may slow down your system and should only be done if advised by technical support.
PRIVACY WARNING: Please note that the debug logfile records all keystrokes that you type. You should only turn on the debug log for the duration of a debugging or diagnostic session.</String>
<!-- Microsoft Office -->
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_Office" Version="7.1.259.0" Parameters="%0:s = language name, %1:s = Microsoft Office version" Description="Request to add editing support to a specific version of Microsoft office">Add %0:s editing support to %1:s</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_Office_Office2000" Version="7.1.259.0" Description="Local name for Microsoft Office 2000">Microsoft Office 2000</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_Office_OfficeXP" Version="7.1.259.0" Description="Local name for Microsoft Office XP">Microsoft Office XP</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_Office_Office2003" Version="7.1.259.0" Description="Local name for Microsoft Office 2003">Microsoft Office 2003</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_Office_Office2007" Version="7.1.259.0" Description="Local name for Microsoft Office 2007">Microsoft Office 2007</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_Office_Office2010" Version="8.0.294.0" Description="Local name for Microsoft Office 2010">Microsoft Office 2010</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_WindowsLanguage_Link" Version="7.1.259.0" Parameters="%0:s = language name, %1:s = keyboard name" Description="Shown when Keyman wants to link a Windows language to a Keyman keyboard so that when one is selected by the user, the other automatically switches in">Link language %0:s to Keyman keyboard %1:s</String>
<String Group="Formatted Messages" Type="FormatString" Id="SKLangCheck_WindowsLanguage_Install" Version="7.1.259.0" Parameters="%0:s = language name, %1:s = keyboard name" Description="Shown when Keyman wants to install a Windows language and link it to a Keyman keyboard so that when one is selected by the user, the other automatically switches in">Install language %0:s and link to Keyman keyboard %1:s</String>
<!-- OSK Font Helper -->
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_PleaseWait1" Description="OSK Font helper loading message part 1">Please wait while &Name; finds the fonts that will work with</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_PleaseWait2" Description="OSK Font helper loading message part 2">keyboard.</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_NonUnicode1" Description="OSK Font helper non-Unicode part 1"></String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_NonUnicode2" Description="OSK Font helper non-Unicode part 2">is not a Unicode keyboard. Fonts cannot be automatically located. Please check the keyboard documentation for font information.</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_MatchedFonts1" Description="OSK Font helper matched fonts part 1">The following fonts work with</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_MatchedFonts2" Description="OSK Font helper matched fonts part 2">keyboard:</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_PossibleFonts" Description="OSK Font helper additional possible fonts">The following fonts may also work:</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_PossibleFontsOnly1" Description="OSK Font helper possible fonts part 1">The following fonts may work with</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_PossibleFontsOnly2" Description="OSK Font helper possible fonts part 2">keyboard:</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_NoFonts1a" Description="OSK Font helper no fonts part 1">No fonts were found on your system that work with </String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_NoFonts1b" Description="OSK Font helper no fonts part 2">. Please <a href="keyman:welcome">check the documentation</a> to find fonts for this keyboard.</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_NoKeyboards" Description="OSK Font helper no keyboards">No keyboard layouts are currently installed or loaded. Use &Name; Configuration to install a keyboard layout.</String>
<String Group="OSK Font Helper" Type="HTML" Version="8.0.294.0" Id="S_OSK_FontHelper_ChooseKeyboard" Description="OSK Font helper choose keyboard">Please choose a &Name; keyboard to find the fonts that will work with it.</String>
<!-- OSK Hints -->
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint_Title" Description="On Screen Keyboard Hintbar title">Hint:</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint1" Description="On Screen Keyboard Hintbar hint">Resize the On Screen Keyboard by clicking and dragging on the window border</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint2" Description="On Screen Keyboard Hintbar hint">Move the On Screen Keyboard by clicking and dragging on the "&Name;" title</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint3a" Description="On Screen Keyboard Hintbar hint">Insert any Unicode character into your document with the</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint3b" Description="On Screen Keyboard Hintbar hint">Character Map Tool</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint4a" Description="On Screen Keyboard Hintbar hint">Find out which fonts will work with your language with the</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint4b" Description="On Screen Keyboard Hintbar hint">Font Helper Tool</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint5a" Description="On Screen Keyboard Hintbar hint">Get more help on the keyboard by clicking the</String>
<String Group="OSK Hints" Type="Plain Text" Version="8.0.294.0" Id="S_OSK_Hint5b" Description="On Screen Keyboard Hintbar hint">Keyboard Usage button</String>
<!-- - - - - - - - - - - - - - - - - - -->
<!-- Text Editor -->
<!-- - - - - - - - - - - - - - - - - - -->
<String Group="Text Editor" Type="FormatString" Version="10.0.836.0" Id="SKTextEditorCaption" Description="Caption of Text Editor">Text Editor - &Name;</String>
</Locale>

View file

@ -1,5 +1,5 @@
var menuframe_activeindex=0, menuframe_items = [];
function menuframe_add(path, name, description, hotkey)
{
var n = menuframe_items.length;
@ -13,18 +13,18 @@
menuframe_items[n].menu_hotkey = hotkey;
menuframe_items[n].menu_name = name;
}
function menuframe_activate(n)
{
var p = menuframe_items[menuframe_activeindex], c = menuframe_items[n];
var itemtype, blah;
p.className='menuframe';
c.className='menuframe_active';
p.className='menuframe';
c.className='menuframe_active';
menuframe_activeindex=n;
document.getElementById('content_'+p.menu_name).style.display = 'none';
document.getElementById('content_'+c.menu_name).style.display = 'block';
save_state();
if(!loading_state) {
@ -32,19 +32,19 @@
for(var i = 0; i < q.length; i++) {
blah = q[i].id;
itemtype = blah.substr(0, 5);
if( itemtype == "list_" ) {
q[i].focus();
break;
}
}
}
if(typeof window['menuframe_activate_'+c.menu_name] != 'undefined') {
window['menuframe_activate_'+c.menu_name]();
}
}
function menuframe_keydown(event)
//document.onkeydown = function()
{
@ -80,16 +80,11 @@
}
break;
case 13: // enter
if( event.target.id.substring(0,6) != 'button' && event.target.tagName != 'TEXTAREA' ) {
event.cancelBubble = true; event.returnValue = false;
location.href='keyman:footer_ok';
break;
}
event.cancelBubble = true; event.returnValue = true;
event.cancelBubble = true;
event.returnValue = event.target.id.substring(0,6) == 'button' || event.target.tagName == 'TEXTAREA';
break;
case 27: // esc
event.cancelBubble = true; event.returnValue = false;
location.href='keyman:footer_cancel';
break;
case 32: // spacebar
switch(event.srcElement.tagName.toLowerCase()) {
@ -103,18 +98,18 @@
document.getElementById(k).focus();
break;
case 'input': return true;
case 'div':
case 'span':
case 'div':
case 'span':
if(event.srcElement.parentElement) {
switch(event.srcElement.parentElement.id) {
case 'keyboards':
keyboard_checkclick(event.srcElement.id.substring(5),true);
keyboard_checkclick(event.srcElement.id.substring('list_keyboard_'.length),true);
break;
case 'options':
options_updatecheck(event.srcElement.id.substring(5),true);
options_updatecheck(event.srcElement.id.substring('list_option_'.length),true);
break;
case 'hotkeys':
location.href='keyman:hotkey_set?index=hotkey_' + event.srcElement.id.substring(5);
case 'subcontent_hotkeys':
location.href='keyman:hotkey_set?index=hotkey_' + event.srcElement.id.substring('list_hotkey_'.length);
break;
default:
break;
@ -124,13 +119,13 @@
}
event.cancelBubble = true; event.returnValue = false; event.preventDefault(); break;
break;
default:
default:
for(var i = 0; i < menuframe_items.length; i++)
if(menuframe_items[i].menu_hotkey.charCodeAt(0) == event.keyCode && event.altKey)
{
event.cancelBubble = true; event.returnValue = false; menuframe_activate(i); break;
}
}
}
@ -138,5 +133,4 @@
document.onkeydown = menuframe_keydown;
}
doAttachEvent(window, 'load', menuframe_setup);

View file

@ -1,6 +1,6 @@
/* Popup menu styles */
.menu
{
{
white-space: nowrap;
position: absolute;
display: block;
@ -9,22 +9,23 @@
border: solid 1px #ACA899;
font-size: 11px;
padding: 4px;
background-image: url("menugrey.gif");
background-repeat: repeat-y;
background-image: url("menugrey.gif");
background-repeat: repeat-y;
background-position: 0 0;
width: 220px;
z-index: 100;
}
.menuitem
{
display: block;
padding: 4px 4px 4px 28px;
{
display: block;
padding: 4px 4px 4px 28px;
margin: 1px;
cursor: default;
}
.hover
{
{
color: #000000;
background: #FFE3DB;
border: solid 1px #DB704F;
@ -32,6 +33,21 @@
}
.down
{
background: #DB704F;
{
background: #DB704F;
}
#menubackground {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: rgba(64,64,64,0.1);
display: none;
}
#menubackground.show {
display: block;
z-index: 99;
}

View file

@ -55,12 +55,15 @@ var menudiv = null, global_menu_elem_name = null;
q = menudiv.children[0];
q.focus();
document.getElementById('menubackground').className = 'show';
}
function HideMenu() {
if(event.srcElement != menudiv) {
global_menu_elem_name = null;
menudiv.style.visibility='hidden';
document.getElementById('menubackground').className = '';
try {
if(lastfocus_item != null) lastfocus_item.focus();
} catch(e) {

View file

@ -1,19 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
<xsl:variable name="dialoginfo_onlineupdate" select="$dialoginfo/Dialog[@Id='OnlineUpdate'][1]" />
<xsl:template match="/">
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="$locale/string[@name='S_Update_Title']"/></title>
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; }
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI"; }
html { overflow: hidden }
@ -21,12 +24,12 @@ body {
font-size: 11px;
text-align: justify;
margin: 0px;
width: 482px;
width: 469px;
overflow: hidden;
}
.button {
font: 11px <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />;
font: 11px <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";
height: 23px; width: 128px;
}
@ -36,17 +39,17 @@ body {
.shieldButton { }
.shieldButton img { display: inline !important; }
</xsl:if>
div {
font: 13.3px <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />
font: 13.3px <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";
}
#border {
#border {
border: none;
width: <xsl:value-of select="$dialoginfo_onlineupdate/@Width - 2" />px;
height: <xsl:value-of select="$dialoginfo_onlineupdate/@Height - 2" />px;
width: 469px;
height: 375px;
}
#header { background: white; }
#content {
@ -59,10 +62,10 @@ div {
bottom: 10px;
text-align: center;
width: 100%;
}
}
#UpdateContainer {
height: 76px;
height: 220px;
overflow-y: auto;
border: solid 1px gray;
margin: 12px 8px;
@ -86,7 +89,6 @@ div {
{
if(event.keyCode == 13 <![CDATA[&&]]> (!event.srcElement.type || event.srcElement.type != 'button') <![CDATA[&&]]> !document.getElementById('submitButton').disabled)
{
event.cancelBubble = true; event.returnValue = false;
location.href='keyman:installnow';
}
@ -96,7 +98,6 @@ div {
location.href='keyman:installlater';
}
}
function updateTick(id)
{
enableControls();
@ -105,7 +106,6 @@ div {
if(e.checked) location.href='keyman:tickupdate?id='+id;
else location.href='keyman:untickupdate?id='+id;
}
function enableControls()
{
var e = false, admin = false;
@ -131,9 +131,7 @@ div {
<body onload="javascript:enableControls()">
<div id="border">
<div id="header">
<img alt='Keyman'>
<xsl:attribute name='src'><xsl:value-of select='/Keyman/templatepath' />keyman-desktop.png</xsl:attribute>
</img>
<img alt='Keyman' src="/app/keyman-desktop.png" />
</div>
<div id='content'>
<div id="NewVersionAvailable"><xsl:copy-of select="($locale/string[@name='S_Update_NewVersionAvailable'])[1]" /></div>
@ -152,9 +150,7 @@ div {
</div>
<div id="footer">
<button type="submit" id="submitButton" class='button shieldButton' onclick="javascript:location.href='keyman:installnow'">
<img alt="" style="vertical-align:middle; width: 16px; margin: 0 4px 0 2px;">
<xsl:attribute name="src"><xsl:value-of select='/Keyman/templatepath' />shield.png</xsl:attribute>
</img>
<img alt="" style="vertical-align:middle; width: 16px; margin: 0 4px 0 2px;" src="/app/shield.png" />
<xsl:value-of select="$locale/string[@name='S_Update_Button_InstallNow']"/>
</button>
&#160;
@ -227,4 +223,4 @@ div {
</xsl:choose>
</tr>
</xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>

View file

@ -1,21 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
<xsl:variable name="dialoginfo_proxyconfiguration" select="$dialoginfo/Dialog[@Id='ProxyConfiguration'][1]" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="$locale/string[@name='S_ProxyConfiguration_Title']"/></title>
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; }
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI"; }
html {
font-size: 11px;
font-size: 13px;
text-align: justify;
margin: 0px;
width: <xsl:value-of select="$dialoginfo_proxyconfiguration/@Width" />px;
@ -24,7 +26,7 @@ html {
}
body {
font-size: 11px;
font-size: 13px;
text-align: justify;
margin: 0px;
width: <xsl:value-of select="$dialoginfo_proxyconfiguration/@Width" />px;
@ -38,15 +40,14 @@ body {
}
div {
font-size: 13.3px;
font-size: 13px;
}
#border {
border: 1px solid #AD4A29;
width: <xsl:value-of select="$dialoginfo_proxyconfiguration/@Width - 2" />px;
#border {
border: 1px solid #AD4A29;
width: <xsl:value-of select="$dialoginfo_proxyconfiguration/@Width - 2" />px;
height: <xsl:value-of select="$dialoginfo_proxyconfiguration/@Height - 2" />px;
}
#content {
padding: 10px;
text-align: center;
@ -58,7 +59,7 @@ div {
height: 36px;
text-align: center;
width: 100%;
}
}
.form { position: absolute; display: block; vertical-align: middle; height: 24px; }
#ProxyServerLabel { left: 16px; top: 20px;}
@ -85,7 +86,7 @@ div {
'&username='+document.getElementById('Form_ProxyUsername').value+
'&password='+document.getElementById('Form_ProxyPassword').value;
}
document.onkeydown = function()
{
if(event.keyCode == 13 && (!event.srcElement.type || event.srcElement.type != 'button')) ok();
@ -102,11 +103,11 @@ div {
<div id='content'>
<div class='form' id="ProxyServerLabel"><xsl:value-of select="$locale/string[@name='S_ProxyConfiguration_Server']" /></div>
<div class='form' id="ProxyServer">
<input type="text" id="Form_ProxyServer">
<input autofocus="autofocus" type="text" id="Form_ProxyServer">
<xsl:attribute name="value"><xsl:value-of select="/Keyman/Proxy/Server"/></xsl:attribute>
</input>
</div>
<div class='form' id="ProxyPortLabel"><xsl:value-of select="$locale/string[@name='S_ProxyConfiguration_Port']" /></div>
<div class='form' id="ProxyPort">
<input type="text" id="Form_ProxyPort">
@ -127,7 +128,7 @@ div {
<xsl:attribute name="value"><xsl:value-of select="/Keyman/Proxy/Password"/></xsl:attribute>
</input>
</div>
</div>
</div>
<div id="footer">
<input type="submit" class='button' onclick="javascript:ok()">
<xsl:attribute name="value"><xsl:value-of select="$locale/string[@name='S_Button_OK']"/></xsl:attribute>
@ -140,4 +141,4 @@ div {
</body>
</html>
</xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,40 @@
// init.js
// Initializes Sentry with Keyman definitions
// This file is dynamically built from init.js.in into init.js
// which allows us to easily populate a release tag. This
// transform is made in TIKE's makefile with mkver
//
// DO NOT MODIFY init.js; instead make changes in init.js.in.
//
Sentry.init({
dsn: 'https://92eb58e6005d47daa33c9c9e39458eb7@sentry.keyman.com/5', // Keyman for Windows
environment: '$Environment',
release: 'release-$VersionWithTag'
});
function keymanEnableDiagnostics() {
var e = document.createElement('button');
e.style.zIndex = '1000';
e.style.position = 'fixed';
e.style.right = '10px';
e.style.top = '10px';
e.style.height = '24px';
e.innerText = 'Test Exception';
e.onclick = function() {
var boo = null.boo();
}
document.body.appendChild(e);
e = document.createElement('button');
e.style.zIndex = '1000';
e.style.position = 'fixed';
e.style.right = '10px';
e.style.top = '38px';
e.style.height = '24px';
e.innerText = 'Test Event';
e.onclick = function() {
Sentry.captureMessage('Test Event');
}
document.body.appendChild(e);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 881 B

After

Width:  |  Height:  |  Size: 906 B

View file

@ -1,22 +1,18 @@
* {
font-family: Calibri;
}
html, body {
html, body {
padding: 0px;
margin: 0px;
overflow: hidden;
margin: 0px;
overflow: hidden;
font-size: 15px;
background: white;
}
div {
position: static;
div {
position: static;
}
#size {
position: absolute;
left: 0;
position: absolute;
left: 0;
top: 0;
border: solid 1px #444444;
background: white;
@ -27,12 +23,17 @@ div {
#displaylanguage { top: 40px; right: 12px; position: absolute; color: white; }
#displaylanguage a { color: white; }
#titleBox {
position: absolute; left: 20px; top: 24px; background: url("keyman-desktop-for-first-voices-486x86-black.png"); width: 486px; height: 86px;
#titleBox {
position: absolute;
left: 20px;
top: 24px;
background: url("keyman-desktop-for-first-voices-486x86-black.png");
width: 486px;
height: 86px;
}
#silLogo {
position: absolute; right: 20px; top: 24px; background: url("fpcc-53x50.png"); width: 53px; height: 50px;
position: absolute; right: 20px; top: 24px; background: url("fpcc-53x50.png"); width: 53px; height: 50px;
}
#family {
@ -44,15 +45,19 @@ div {
left: 0;
bottom: 0;
position: absolute;
width: 700px;
width: 700px;
padding: 8px;
}
#version {
position: absolute; font-size: 0.8em; right: 90px; bottom: 10px; color: #F68924
#version {
position: absolute;
font-size: 0.8em;
right: 120px;
bottom: 10px;
color: #F68924;
}
#beta {
#beta {
color: red; font-weight: bold;
}
@ -65,7 +70,7 @@ div {
height: 84px;
max-height: 84px;
overflow-y: auto;
width: 400px;
width: 360px;
padding: 0 16px 0 0;
}
@ -78,23 +83,22 @@ a.button {
}
.btn {
float: left;
width: 160px;
height: 26px;
float: left;
width: 160px;
height: 26px;
font-weight: bold;
font-size: 18px;
font-family: Calibri;
padding: 6px 12px 2px 12px;
text-align: center;
font-size: 16px;
padding: 4px 12px 2px 12px;
text-align: center;
border-radius: 4px;
color: #33333f;
color: #33333f;
}
.btn-orange {
background: #F68924;
.btn-orange {
background: #F68924;
}
.btn-blue {
.btn-blue {
background: #79C3DA;
}
@ -103,23 +107,23 @@ a.button {
color: #fcf8f8;
}
.btn-small {
width: 61px;
height: 20px;
font-size: 15px;
padding: 2px 6px 0 6px;
.btn-small {
width: 61px;
height: 20px;
font-size: 15px;
padding: 1px 6px 1px 6px;
background: #F68924;
border-radius: 3px;
border-radius: 3px;
}
#ribbon {
#ribbon {
display:none;
position: absolute;
left: 0;
top: 100px;
width: 100%;
height: 8px;
background: #79C3DA;
position: absolute;
left: 0;
top: 100px;
width: 100%;
height: 8px;
background: #79C3DA;
}
#ribbon div {
@ -138,24 +142,34 @@ a.button {
background: #CC3846;
}
#tasks {
position: absolute;
#tasks {
position: absolute;
left: 0; bottom: 0; margin-left: 8px; margin-bottom: 8px; font-size: 13px }
#tasks div { margin-bottom: 2px; margin-left: 4px }
#startNow {
left: 434px;
top: 352px;
#startNow {
right: 12px;
top: 352px;
height: 1.2em;
}
#startNow .btn,
#config .btn {
width: 215px;
text-overflow: ellipsis;
}
#config {
left: 434px;
right: 12px;
top: 392px;
}
#exit { right: 12px; bottom: 12px; }
#exit .btn-small {
width: 90px;
}
#tasks div#showAtStartupBox { margin-top: 6px; margin-left: 0; }
#tasks a, #showAtStartupLabel { color: #F68924; text-decoration: none; }
#tasks a:hover { text-decoration: underline; }

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
@ -8,12 +8,14 @@
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title><xsl:value-of select="($locale/string[@name='S_Splash_Name'])[1]" />&#160;<xsl:value-of select="/Keyman/version-info/@versionRelease" /></title>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>menu.css</xsl:attribute></link>
<link rel="stylesheet" type="text/css"><xsl:attribute name="href"><xsl:value-of select="/Keyman/templatepath"/>splash.css</xsl:attribute></link>
<script type="text/javascript"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>menu.js</xsl:attribute><xsl:text> </xsl:text></script>
<script type="text/javascript"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>splash.js</xsl:attribute><xsl:text> </xsl:text></script>
<style> * { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI";} </style>
<link rel="stylesheet" type="text/css" href="/app/menu.css" />
<link rel="stylesheet" type="text/css" href="/app/splash.css" />
<script src="/app/menu.js"></script>
<script src="/app/splash.js"></script>
</head>
<body>
@ -26,12 +28,12 @@
<div id="titleBox"></div>
<div id="silLogo"></div>
<div id="family"></div>
<a href="keyman:start" id="startNow" class="button">
<div class="btn btn-blue"><xsl:value-of select="$locale/string[@name='S_Splash_Start']"/></div>
</a>
<a class="button" id="config" href="keyman:config"><div class="btn btn-orange"><xsl:value-of select="$locale/string[@name='S_Splash_Configuration']"/></div></a>
<a href="keyman:exit" id="exit" class="button"><div class="btn btn-small"><xsl:value-of select="$locale/string[@name='S_Splash_Exit']"/></div></a>
<div id="tasks">
@ -40,20 +42,20 @@
<label for="showAtStartupBox"><xsl:value-of select="$locale/string[@name='S_Splash_ShowAtStartup']"/></label>
</div>
</div>
<div id="keyboards">
<xsl:apply-templates select="//KeymanKeyboardInstalled[loaded]"/>
<xsl:if test="count(//KeymanKeyboardInstalled[loaded]) = 0">No keyboards loaded - <a href="keyman:config">Open Configuration</a></xsl:if>
</div>
<div id="version"><xsl:value-of select="/Keyman/Version"/></div>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="KeymanKeyboardInstalled">
<div><xsl:value-of select="name" /></div>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load diff

View file

@ -1,184 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="elements.xsl"/>
<xsl:template match="/">
<html>
<head>
<!--<META http-equiv="Page-Enter" CONTENT="progid:DXImageTransform.Microsoft.Pixelate(Duration=1)" />-->
<title>hintbar</title>
<style type="text/css">
* { font-family: Tahoma; font-size: 11px; }
body { padding: 0px 0px 0px 0px; margin: 0px; overflow: hidden; width: 100%; height: 100%; background: #5E97A8 ; }
html { padding: 0px; margin: 0px; overflow: hidden; }
#size { width: 100%; height: 20px; position: absolute; top: -30px }
#outer { height: 100%; width: 100%; position: absolute; left: 0; top: 0; overflow: hidden; }
#center { position: relative; left: 0; top: 50%; width: 100%; height: 100% }
#inner { position: relative; top: -50%; width: 100%; height: 100%; overflow: hidden; white-space: nowrap; padding: 2px 0px 0px 0px; }
#control { padding-right: 2px; padding-left: 2px; position: absolute; top: -50%; right: -1px; padding-top: 2px; z-index: 1; background: #5E97A8; }
a.button, a.button:visited { padding: 2px; display: block; float: left; }
a.button:hover { background: #A1BDD7; }
a.button img { border: none }
.hint { color: #222222; display: none; white-space: nowrap; position: relative; left: 0; top: 2px; height: 16px; vertical-align: middle; float: left; }
.hint img { vertical-align: bottom; width:16px; height:16px; }
#hinttitle { color: #222222; display: block; height: 16px; vertical-align: middle; padding: 0 4px 0 4px; background: #5E97A8; z-index: 2; position: relative; left: 0; top: 2px; float: left; }
</style><script type="text/javascript"><![CDATA[
var hints = new Array(), currhint = 0, activehint = null, scrollInterval = 0, startScrollTimeout = null, autohintInterval = null;
function finishload()
{
var elems = document.getElementsByTagName('div');
for(var i in elems)
if(elems[i].className == 'hint') hints.push(elems[i]);
nexthint();
}
function filterchange()
{
if(inner.filters[0].status == 0)
{
setScrollTimeout(2000);
inner.style.filter='';
}
}
function setScrollTimeout(tm)
{
if(startScrollTimeout != null) window.clearTimeout(startScrollTimeout);
startScrollTimeout = window.setTimeout(startScroll, tm);
}
function startScroll()
{
stopScroll();
if(!activehint) return;
activehint.style.left = '0px';
if(activehint.offsetWidth+activehint.offsetLeft > inner.offsetWidth - control.offsetWidth)
scrollInterval = window.setInterval(scroll, 75);
}
function stopScroll()
{
if(scrollInterval != null) window.clearInterval(scrollInterval);
scrollInterval = null;
}
function scroll()
{
if(!activehint) return;
if(activehint.offsetWidth+activehint.offsetLeft > inner.offsetWidth - control.offsetWidth)
activehint.style.left = (activehint.offsetLeft-hinttitle.offsetWidth-1) + 'px';
else
{
stopScroll();
setScrollTimeout(5000);
}
}
function autohint()
{
inner.style.filter='progid:DXImageTransform.Microsoft.Fade(duration=0.25,overlap=1.0)';
inner.filters[0].Apply();
gotohint(1);
inner.filters[0].Play();
}
function gotohint(n)
{
if(hints.length == 0) return;
stopScroll();
hints[currhint].style.display = '';
hints[currhint].style.left = '0px';
currhint += n;
if(currhint >= hints.length) currhint = 0;
else if (currhint < 0) currhint = hints.length - 1;
hints[currhint].style.display = 'block';
activehint = hints[currhint];
}
function nexthint()
{
inner.style.filter='';
gotohint(1);
if(autohintInterval != null) window.clearInterval(autohintInterval);
autohintInterval = window.setInterval(autohint, 5000);
setScrollTimeout(2000);
}
function prevhint()
{
inner.style.filter='';
gotohint(-1);
if(autohintInterval != null) window.clearInterval(autohintInterval);
autohintInterval = window.setInterval(autohint, 5000);
setScrollTimeout(2000);
}
]]></script>
</head>
<body onload="finishload()">
<div id="size"></div>
<div id="outer">
<div id="center">
<div id="control">
<a class="button" href="javascript:prevhint();">
<img style="height:13px; width:13px">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>hint_prev.gif
</xsl:attribute>
</img>
</a>
<a class="button" href="javascript:nexthint();">
<img style="height:13px; width:13px">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>hint_next.gif
</xsl:attribute>
</img>
</a>
<a class="button" href="javascript:location.href='keyman:closehintbar'">
<img style="height:13px; width:13px"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>hint_close.gif</xsl:attribute></img>
</a>
</div>
<div id="inner" onfilterchange="filterchange()">
<div id="hinttitle"><b><xsl:value-of select="$locale/string[@name='S_OSK_Hint_Title']"/></b></div>
<div class="hint"><xsl:value-of select="$locale/string[@name='S_OSK_Hint1']" /></div>
<div class="hint"><xsl:value-of select="$locale/string[@name='S_OSK_Hint2']" /></div>
<div class="hint">
<xsl:value-of select="$locale/string[@name='S_OSK_Hint3a']" />
<xsl:text xml:space="preserve"> </xsl:text>
<img alt="icon"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>charmapicon.gif</xsl:attribute></img>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_Hint3b']" />
</div>
<div class="hint">
<xsl:value-of select="$locale/string[@name='S_OSK_Hint4a']" />
<xsl:text xml:space="preserve"> </xsl:text>
<img alt="icon"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>fonthinticon.gif</xsl:attribute></img>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_Hint4b']" />
</div>
<div class="hint">
<xsl:value-of select="$locale/string[@name='S_OSK_Hint5a']" />
<xsl:text xml:space="preserve"> </xsl:text>
<img alt="icon"><xsl:attribute name="src"><xsl:value-of select="/Keyman/templatepath"/>keyboardhelpicon.gif</xsl:attribute></img>
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="$locale/string[@name='S_OSK_Hint5b']" />
</div>
</div>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -8,11 +8,11 @@
<html>
<head>
<!-- META http-equiv="Page-Enter" CONTENT="progid:DXImageTransform.Microsoft.Pixelate(Duration=1)" / -->
<script src="/app/sentry.bundle.min.js"></script>
<script src="/app/sentry.init.js"></script>
<title>fonts</title>
<style type="text/css">
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />; font-size: 13.3px; }
* { font-family: <xsl:value-of select="($locale/string[@name='SK_UIFontName'])[1]" />, "Segoe UI"; font-size: 13.3px; }
body { padding: 24px 16px; margin: 0px; overflow: auto; height: 100%; background: #A0C1DC; border: none; }
html { padding: 0px; margin: 0px; overflow: auto; }
@ -60,20 +60,16 @@
<div><xsl:copy-of select="$locale/string[@name='S_FontHelper_NoFonts'][1]"/></div>
</xsl:otherwise>
</xsl:choose>
<div style="margin-top: 24px">
<xsl:copy-of select="$locale/string[@name='S_FontHelper_Hint1']"/>
<xsl:text xml:space="preserve"> </xsl:text>
<img style="vertical-align: middle; margin: 0 2px 0 0">
<xsl:attribute name="src">
<xsl:value-of select="/Keyman/templatepath"/>fonthinticon.gif
</xsl:attribute>
</img>
<img style="vertical-align: middle; margin: 0 2px 0 0" src="/app/fonthinticon.gif" />
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:copy-of select="$locale/string[@name='S_FontHelper_Hint2']"/>
</div>
</body>
</html>
</xsl:template>
@ -83,11 +79,11 @@
<a>
<xsl:attribute name="href">keyman:selectfont?font=<xsl:value-of select="@Name"/></xsl:attribute>
<xsl:value-of select="@Name" />
</a>
</a>
</td>
<td>
<xsl:value-of select="@Coverage" />%
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
</xsl:stylesheet>

View file

@ -172,6 +172,7 @@ uses
Hints,
HotkeyUtils,
initprog,
Keyman.Configuration.System.TIPMaintenance,
Keyman.Configuration.UI.UfrmDiagnosticTests,
KeymanOptionNames,
KeymanVersion,
@ -553,10 +554,33 @@ end;
procedure TfrmMain.Keyboard_ClickCheck(params: TStringList);
var
kbd: IKeymanKeyboardInstalled;
lang: IKeymanKeyboardLanguageInstalled2;
begin
if GetKeyboardFromParams(params, kbd) then
begin
kbd.Loaded := StrToBool(params.Values['value']);
if (params.Values['install'] <> '') and (kbd.Languages.Count > 0) then
begin
// For Keyman for FirstVoices, we will install the suggested language
// only when the checkbox is ticked, not when the keyboard is installed.
lang := kbd.Languages.Items[0] as IKeymanKeyboardLanguageInstalled2;
if kbd.Loaded and not lang.IsInstalled then
begin
if not TTipMaintenance.DoInstall(kbd.ID, lang.WindowsBCP47Code) then
begin
// We'll need to refresh in this situation as the checkbox state will
// not match reality
ShowMessage(MsgFromIdFormat(SKInstallLanguageTransientLimit, [lang.WindowsBCP47Code]));
kbd.Loaded := False;
DoApply;
DoRefresh;
end;
end
else if not kbd.Loaded and lang.IsInstalled then
begin
lang.Uninstall;
end;
end;
DoApply; // No need to refresh page (checkbox state will already be correct)
end;
end;

View file

@ -1,6 +1,6 @@
/* Popup menu styles */
.menu
{
{
white-space: nowrap;
position: absolute;
display: block;
@ -9,23 +9,23 @@
border: solid 1px #ACA899;
font-size: 11px;
padding: 4px;
background-image: url("menugrey.gif");
background-repeat: repeat-y;
background-image: url("menugrey.gif");
background-repeat: repeat-y;
background-position: 0 0;
width: 220px;
z-index: 100;
}
.menuitem
{
display: block;
padding: 4px 4px 4px 28px;
{
display: block;
padding: 4px 4px 4px 28px;
margin: 1px;
cursor: default;
}
.hover
{
{
color: #000000;
background: #FFE3DB;
border: solid 1px #DB704F;
@ -33,8 +33,8 @@
}
.down
{
background: #DB704F;
{
background: #DB704F;
}
#menubackground {