Merge pull request #2659 from keymanapp/chore/beta-to-master-p9s2-1

chore: merge beta changes to master 🍒
This commit is contained in:
Marc Durdin 2020-02-17 13:49:16 +11:00 • committed by GitHub
commit 3cc78785e8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
211 changed files with 2647 additions and 1210 deletions

View file

@ -111,7 +111,7 @@ repositories {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'
implementation 'com.google.android.material:material:1.0.0'
api(name: 'keyman-engine', ext: 'aar')
implementation "com.google.firebase:firebase-analytics:17.2.1"

View file

@ -1290,128 +1290,51 @@ body[data-device='Unknown'] #osk-tablet-container {
float: left;
}
/**************************************
* JIRA FEEDBACK CSS
/**************************************
* FOOTER TABS
* ***********************************/
#jira-feedback{
width: 300px;
height: 320px;
.footer-tab-holder{
width: 70px;
height: 20px;
padding: 9px;
background: #f2f2f2;
position: fixed;
top: 100%;
left: 100%;
z-index: 4;
}
#footer-tab-support {
margin-left: -340px;
border-top-left-radius: 6px;
border: solid 1px #000;
z-index: 4;
}
#jira-feedback.selected{
margin-top: -339px;
#footer-tab-edit {
margin-left: -260px;
}
#jira-feedback-tab{
.footer-tab{
float: right;
position: relative;
top: -50px;
font-size: 10pt;
top: -34px;
right: -10px;
z-index: 4;
background: #69B7D2;
height: 30px;
line-height: 30px;
padding: 5px 10px;
height: 20px;
padding: 5px 0px;
text-align: center;
border-top-left-radius: 6px;
border-top-right-radius: 6px;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
width: 70px;
margin-left: 210px;
cursor: pointer;
border-top: solid 1px #000;
border-left: solid 1px #000;
border-right: solid 1px #000;
border-top: solid 1px #444;
border-left: solid 1px #444;
border-right: solid 1px #444;
}
#jira-feedback-tab h4{
color: #fff;
}
#jira-feedback-form{
position: relative;
top: -30px;
}
#jira-feedback input, #jira-feedback textarea, #jira-feedback select{
width: 288px;
border: solid 1px #000;
padding: 4px 5px;
margin: 5px 0px 10px 0px;
}
#jira-feedback textarea{
height: 100px;
}
#jira-feedback select{
width: 298px;
}
#jira-submit{
float: right;
width: 140px;
height: 40px;
border-radius: 6px;
border: solid 3px #fff;
margin: 10px 0px;
cursor: pointer;
background: #91db51; /* Old browsers */
background: -moz-linear-gradient(top, #69B7D2 0%, #5A9EB5 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#69B7D2), color-stop(100%,#5A9EB5)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #69B7D2 0%,#5A9EB5 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #69B7D2 0%,#5A9EB5 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #69B7D2 0%,#5A9EB5 100%); /* IE10+ */
background: linear-gradient(to bottom, #69B7D2 0%,#5A9EB5 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#69B7D2', endColorstr='#5A9EB5',GradientType=0 ); /* IE6-9 */
}
#jira-submit input{
color: #fff;
line-height: 40px;
text-align: center;
font-weight: bold;
width: auto;
background: none;
border: none;
cursor: pointer;
}
#jira-submit:hover{
background: #91db51; /* Old browsers */
background: -moz-linear-gradient(top, #5A9EB5 0%, #477C8E 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5A9EB5), color-stop(100%,#477C8E)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #5A9EB5 0%,#477C8E 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #5A9EB5 0%,#477C8E 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #5A9EB5 0%,#477C8E 100%); /* IE10+ */
background: linear-gradient(to bottom, #5A9EB5 0%,#477C8E 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#5A9EB5', endColorstr='#477C8E',GradientType=0 ); /* IE6-9 */
}
#jira-feedback form{
width: 300px;
}
#jira-feedback p{
float: left;
width: 300px;
text-align: left;
font-size: 12pt !important;
position: relative;
top: -30px;
}
#jira-feedback p#jira-title {
top: -40px;
.footer-tab a{
color: #444;
text-decoration: none;
}
/**************************************
@ -1477,7 +1400,7 @@ body[data-device='Unknown'] #osk-tablet-container {
height: 280px;
font-size: 1.8em !important;
}
#jira-feedback{
.footer-tab-holder{
display: none;
}
}
@ -1538,7 +1461,7 @@ body[data-device='Unknown'] #osk-tablet-container {
height: 220px;
font-size: 1.5em !important;
}
#jira-feedback{
.footer-tab-holder{
display: none;
}
}
@ -1666,7 +1589,7 @@ body[data-device='Unknown'] #osk-tablet-container {
#keymanExample table{
width: 1000px;
}
#jira-feedback{
.footer-tab-holder{
display: none;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -89,36 +107,36 @@
</tr>
<tr>
<td>
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</td>
<td>Select another language/keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/12.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/12.0/hide-keyboard-at.png">
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/13.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/13.0/hide-keyboard-at.png">
</td>
<td>Hide the keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/12.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/12.0/backspace-at.png">
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/13.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/13.0/backspace-at.png">
</td>
<td>Backspace</td>
</tr>
<tr>
<td>
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/12.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/12.0/return-at.png">
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/13.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/13.0/return-at.png">
</td>
<td>Return</td>
</tr>
<tr>
<td>
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/12.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/12.0/shift-at.png">
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/13.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/13.0/shift-at.png">
</td>
<td>Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys
(which can access additional key layers)
@ -126,8 +144,8 @@
</tr>
<tr>
<td>
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/12.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/12.0/touch-hold-at.png">
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/13.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/13.0/touch-hold-at.png">
</td>
<td>Keys with a small dot in the top right corner indicate a long press key. Access
further functionality by long pressing the key
@ -137,37 +155,41 @@
<th colspan="2" id="toolbar-ap">Toolbar Icons</th>
</tr>
<tr>
<td><img id="share-ap" src="../../../cdn/dev/img/app/12.0/share-a.png"></td>
<td><img id="share-ap" src="../../../cdn/dev/img/app/13.0/share-a.png"></td>
<td>Share your text via Mail, Text, or Twitter</td>
</tr>
<tr>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/12.0/browser-a.png"></td>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/13.0/browser-a.png"></td>
<td>Open the Keyman Browser to use the web in your language</td>
</tr>
<tr>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/12.0/menu-icon-a.png"></td>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/13.0/menu-icon-a.png"></td>
<td>Open the menu for additional options</td>
</tr>
<tr>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/12.0/font-size-a.png"></td>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/13.0/font-size-a.png"></td>
<td>Adjust the font size</td>
</tr>
<tr>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/12.0/delete-a.png"></td>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/13.0/delete-a.png"></td>
<td>Delete all current text</td>
</tr>
<tr>
<td><img id="info-ap" src="../../../cdn/dev/img/app/12.0/info-a.png"></td>
<td><img id="info-ap" src="../../../cdn/dev/img/app/13.0/info-a.png"></td>
<td>Load this help page</td>
</tr>
<tr>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/12.0/get-started-a.png"></td>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/13.0/get-started-a.png"></td>
<td>Open the initial setup screen</td>
</tr>
<tr>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/12.0/settings-a.png"></td>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/13.0/settings-a.png"></td>
<td>Open the Keyman Settings screen</td>
</tr>
<tr>
<td><img id="cloud-download-ap" src="../../../cdn/dev/img/app/13.0/ic_cloud_download.png"></td>
<td>Update available to download for keyboard / dictionary</td>
</tr>
</table>
<h2>Accessing Keyboard Help</h2>
@ -175,14 +197,14 @@
Step 1) Open the keyboard list by touching the globe key.
</p>
<p>
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<br/>
<p>
Step 2) Touch the info icon for your keyboard.
</p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/12.0/info-a-gray.png"></p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/13.0/info-a-gray.png"></p>
<br/>
<h2>Help Index</h2>
@ -217,6 +239,7 @@
<ul>
<li><a href='index.html'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/12.0/'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/11.0/'>Keyman for Android 11.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/10.0/'>Keyman for Android 10.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/2.0/'>Keyman for Android 2.0 Documentation</a></li>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -89,36 +107,36 @@
</tr>
<tr>
<td>
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</td>
<td>Select another language/keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/12.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/12.0/hide-keyboard-at.png">
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/13.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/13.0/hide-keyboard-at.png">
</td>
<td>Hide the keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/12.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/12.0/backspace-at.png">
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/13.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/13.0/backspace-at.png">
</td>
<td>Backspace</td>
</tr>
<tr>
<td>
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/12.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/12.0/return-at.png">
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/13.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/13.0/return-at.png">
</td>
<td>Return</td>
</tr>
<tr>
<td>
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/12.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/12.0/shift-at.png">
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/13.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/13.0/shift-at.png">
</td>
<td>Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys
(which can access additional key layers)
@ -126,8 +144,8 @@
</tr>
<tr>
<td>
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/12.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/12.0/touch-hold-at.png">
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/13.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/13.0/touch-hold-at.png">
</td>
<td>Keys with a small dot in the top right corner indicate a long press key. Access
further functionality by long pressing the key
@ -137,37 +155,41 @@
<th colspan="2" id="toolbar-ap">Toolbar Icons</th>
</tr>
<tr>
<td><img id="share-ap" src="../../../cdn/dev/img/app/12.0/share-a.png"></td>
<td><img id="share-ap" src="../../../cdn/dev/img/app/13.0/share-a.png"></td>
<td>Share your text via Mail, Text, or Twitter</td>
</tr>
<tr>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/12.0/browser-a.png"></td>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/13.0/browser-a.png"></td>
<td>Open the Keyman Browser to use the web in your language</td>
</tr>
<tr>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/12.0/menu-icon-a.png"></td>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/13.0/menu-icon-a.png"></td>
<td>Open the menu for additional options</td>
</tr>
<tr>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/12.0/font-size-a.png"></td>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/13.0/font-size-a.png"></td>
<td>Adjust the font size</td>
</tr>
<tr>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/12.0/delete-a.png"></td>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/13.0/delete-a.png"></td>
<td>Delete all current text</td>
</tr>
<tr>
<td><img id="info-ap" src="../../../cdn/dev/img/app/12.0/info-a.png"></td>
<td><img id="info-ap" src="../../../cdn/dev/img/app/13.0/info-a.png"></td>
<td>Load this help page</td>
</tr>
<tr>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/12.0/get-started-a.png"></td>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/13.0/get-started-a.png"></td>
<td>Open the initial setup screen</td>
</tr>
<tr>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/12.0/settings-a.png"></td>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/13.0/settings-a.png"></td>
<td>Open the Keyman Settings screen</td>
</tr>
<tr>
<td><img id="cloud-download-ap" src="../../../cdn/dev/img/app/13.0/ic_cloud_download.png"></td>
<td>Update available to download for keyboard / dictionary</td>
</tr>
</table>
<h2>Accessing Keyboard Help</h2>
@ -175,14 +197,14 @@
Step 1) Open the keyboard list by touching the globe key.
</p>
<p>
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<br/>
<p>
Step 2) Touch the info icon for your keyboard.
</p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/12.0/info-a-gray.png"></p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/13.0/info-a-gray.png"></p>
<br/>
<h2>Help Index</h2>
@ -217,6 +239,7 @@
<ul>
<li><a href='index.html'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/12.0/'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/11.0/'>Keyman for Android 11.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/10.0/'>Keyman for Android 10.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/2.0/'>Keyman for Android 2.0 Documentation</a></li>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -89,36 +107,36 @@
</tr>
<tr>
<td>
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</td>
<td>Select another language/keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/12.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/12.0/hide-keyboard-at.png">
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/13.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/13.0/hide-keyboard-at.png">
</td>
<td>Hide the keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/12.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/12.0/backspace-at.png">
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/13.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/13.0/backspace-at.png">
</td>
<td>Backspace</td>
</tr>
<tr>
<td>
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/12.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/12.0/return-at.png">
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/13.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/13.0/return-at.png">
</td>
<td>Return</td>
</tr>
<tr>
<td>
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/12.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/12.0/shift-at.png">
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/13.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/13.0/shift-at.png">
</td>
<td>Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys
(which can access additional key layers)
@ -126,8 +144,8 @@
</tr>
<tr>
<td>
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/12.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/12.0/touch-hold-at.png">
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/13.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/13.0/touch-hold-at.png">
</td>
<td>Keys with a small dot in the top right corner indicate a long press key. Access
further functionality by long pressing the key
@ -137,37 +155,41 @@
<th colspan="2" id="toolbar-ap">Toolbar Icons</th>
</tr>
<tr>
<td><img id="share-ap" src="../../../cdn/dev/img/app/12.0/share-a.png"></td>
<td><img id="share-ap" src="../../../cdn/dev/img/app/13.0/share-a.png"></td>
<td>Share your text via Mail, Text, or Twitter</td>
</tr>
<tr>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/12.0/browser-a.png"></td>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/13.0/browser-a.png"></td>
<td>Open the Keyman Browser to use the web in your language</td>
</tr>
<tr>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/12.0/menu-icon-a.png"></td>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/13.0/menu-icon-a.png"></td>
<td>Open the menu for additional options</td>
</tr>
<tr>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/12.0/font-size-a.png"></td>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/13.0/font-size-a.png"></td>
<td>Adjust the font size</td>
</tr>
<tr>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/12.0/delete-a.png"></td>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/13.0/delete-a.png"></td>
<td>Delete all current text</td>
</tr>
<tr>
<td><img id="info-ap" src="../../../cdn/dev/img/app/12.0/info-a.png"></td>
<td><img id="info-ap" src="../../../cdn/dev/img/app/13.0/info-a.png"></td>
<td>Load this help page</td>
</tr>
<tr>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/12.0/get-started-a.png"></td>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/13.0/get-started-a.png"></td>
<td>Open the initial setup screen</td>
</tr>
<tr>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/12.0/settings-a.png"></td>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/13.0/settings-a.png"></td>
<td>Open the Keyman Settings screen</td>
</tr>
<tr>
<td><img id="cloud-download-ap" src="../../../cdn/dev/img/app/13.0/ic_cloud_download.png"></td>
<td>Update available to download for keyboard / dictionary</td>
</tr>
</table>
<h2>Accessing Keyboard Help</h2>
@ -175,14 +197,14 @@
Step 1) Open the keyboard list by touching the globe key.
</p>
<p>
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<br/>
<p>
Step 2) Touch the info icon for your keyboard.
</p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/12.0/info-a-gray.png"></p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/13.0/info-a-gray.png"></p>
<br/>
<h2>Help Index</h2>
@ -217,6 +239,7 @@
<ul>
<li><a href='index.html'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/12.0/'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/11.0/'>Keyman for Android 11.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/10.0/'>Keyman for Android 10.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/2.0/'>Keyman for Android 2.0 Documentation</a></li>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -84,8 +102,8 @@
Step 1) Click the link to your custom package file.
</p>
<p>
<img class="phone" id="dist-url-screen-ap" src="../../../cdn/dev/img/app/12.0/dist-url-screen-ap.png">
<img class="tablet" id="dist-url-screen-at" src="../../../cdn/dev/img/app/12.0/dist-url-screen-at.png">
<img class="phone" id="dist-url-screen-ap" src="../../../cdn/dev/img/app/13.0/dist-url-screen-ap.png">
<img class="tablet" id="dist-url-screen-at" src="../../../cdn/dev/img/app/13.0/dist-url-screen-at.png">
</p>
<p>
Step 2) Once the KMP file is on your device, you will need to browse to the KMP file and select it.
@ -93,14 +111,14 @@
<br/>
From the Keyman Settings menu, select 'Add Keyboard from Device'.
</p>
<p><img id="settings-add-keyboard-from-device-ap" src="../../../cdn/dev/img/app/12.0/settings-language-ap.png"></p>
<p><img id="settings-add-keyboard-from-device-ap" src="../../../cdn/dev/img/app/13.0/settings-language-ap.png"></p>
<p>
The device will launch a file browser where you'll browse to the directory of your KMP file.
A common place to look is the "Downloads" folder.
</p>
<p>
<img class="phone" id="dist-file-browser-ap" src="../../../cdn/dev/img/app/12.0/dist-file-browser-ap.png">
<img class="tablet" id="dist-file-browser-at" src="../../../cdn/dev/img/app/12.0/dist-file-browser-at.png">
<img class="phone" id="dist-file-browser-ap" src="../../../cdn/dev/img/app/13.0/dist-file-browser-ap.png">
<img class="tablet" id="dist-file-browser-at" src="../../../cdn/dev/img/app/13.0/dist-file-browser-at.png">
</p>
<p>
Selecting the KMP file should bring you to Step 3)
@ -111,36 +129,48 @@
Keyman for Android won't need to ask for storage permission again, unless the user revokes or uninstalls the app.
</p>
<p>
<img class="phone" id="dist-storrage-permission-ap" src="../../../cdn/dev/img/app/12.0/dist-storage-permission-ap.png">
<img class="tablet" id="dist-storrage-permission-at" src="../../../cdn/dev/img/app/12.0/dist-storage-permission-at.png">
<img class="phone" id="dist-storrage-permission-ap" src="../../../cdn/dev/img/app/13.0/dist-storage-permission-ap.png">
<img class="tablet" id="dist-storrage-permission-at" src="../../../cdn/dev/img/app/13.0/dist-storage-permission-at.png">
</p>
<p>
Older versions of Android grant Storage permissions at app installation time, so those users can skip this step.
</p>
<p>
Step 4) Keyman for Android will parse the metadata in the package. If the keyboard package includes a "welcome.htm"
file, this will be displayed at the confirmation to install the keyboard package.
Step 4) Keyman for Android will verify the package, and display more information about it, including package version and 'readme' notes if available.
This will be displayed at the confirmation to install the keyboard package.
</p>
<p>
<img class="phone" id="dist-welcome-ap" src="../../../cdn/dev/img/app/12.0/dist-welcome-ap.png">
<img class="tablet" id="dist-welcome-at" src="../../../cdn/dev/img/app/12.0/dist-welcome-at.png">
If "readme.htm" is not included, a generic page with the package ID and package version will be shown. Click the
"Install" button to install the entire keyboard package.
</p>
<p>
If "welcome.htm" is not included, a generic page with the package ID and package version will be shown. Click the
left "Install" button to install the entire keyboard package.
<img class="phone" id="dist-readme-ap" src="../../../cdn/dev/img/app/13.0/dist-readme-ap.png">
<img class="tablet" id="dist-readme-at" src="../../../cdn/dev/img/app/13.0/dist-readme-at.png">
</p>
<p>
Step 5) All the keyboards in the package are installed as a group. In this example, the package only has the
"Khmer Angkor" keyboard, so it becomes the active keyboard. For custom dictionary packages, only one dictionary
will be installed.
</p>
<p>
<img class="phone" id="dist-install1-ap" src="../../../cdn/dev/img/app/12.0/dist-install1-ap.png">
<img class="tablet" id="dist-install1-at" src="../../../cdn/dev/img/app/12.0/dist-install1-at.png">
If the keyboard package includes Welcome documentation, it will be displayed after the keyboard package is installed.
This documentation helps you to get started using the keyboard.
</p>
<p>
<img class="phone" id="dist-welcome-ap" src="../../../cdn/dev/img/app/13.0/dist-welcome-ap.png">
<img class="tablet" id="dist-welcome-at" src="../../../cdn/dev/img/app/13.0/dist-welcome-at.png">
</p>
<p>
Click the "OK" button to finish installing the keyboard. You should be able to select it from the Keyman globe
and start typing with it in any app.
</p>
<p>
<img class="phone" id="dist-install1-ap" src="../../../cdn/dev/img/app/13.0/dist-install1-ap.png">
<img class="tablet" id="dist-install1-at" src="../../../cdn/dev/img/app/13.0/dist-install1-at.png">
</p>
<p>
Once the keyboard has been installed, you should be able to use it as normal.
<br/>
To learn how to create a custom installable keyboard,
<a href="https://help.keyman.com/developer/12.0/guides/distribute/">click here</a>.
</p>
@ -157,8 +187,8 @@
storage permission. The screenshot below is from Android 9.0 Pie.
</p>
<p>
<img class="phone" id="keyman-storage-permission-ap" src="../../../cdn/dev/img/app/12.0/keyman-storage-permission-ap.png">
<img class="tablet" id="keyman-storage-permission-at" src="../../../cdn/dev/img/app/12.0/keyman-storage-permission-at.png">
<img class="phone" id="keyman-storage-permission-ap" src="../../../cdn/dev/img/app/13.0/keyman-storage-permission-ap.png">
<img class="tablet" id="keyman-storage-permission-at" src="../../../cdn/dev/img/app/13.0/keyman-storage-permission-at.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -87,14 +105,14 @@
</p><p>
From the Keyman Settings menu, select 'Installed languages'
</p><p>
<img id="settings-language-ap" src="../../../cdn/dev/img/app/12.0/settings-language-ap.png">
<img id="settings-language-ap" src="../../../cdn/dev/img/app/13.0/settings-language-ap.png">
</p><p>
Step 3)
</p><p>
From the 'Installed languages' menu, touch the <span class="command">+</span>
button in the bottom right corner of your screen.
</p><p>
<img id="plus-a" src="../../../cdn/dev/img/app/12.0/plus-a.png">
<img id="plus-a" src="../../../cdn/dev/img/app/13.0/plus-a.png">
</p><p>
Step 4)
</p><p>
@ -102,29 +120,29 @@
the language you want to install. Languages marked with a right arrow have multiple keyboards - for
example we have 10+ different Tamil keyboards.
</p><p>
<img class="phone" id="lang-list-ap" src="../../../cdn/dev/img/app/12.0/lang-list-ap.png">
<img class="tablet" id="lang-list-at" src="../../../cdn/dev/img/app/12.0/lang-list-at.png">
<img class="phone" id="lang-list-ap" src="../../../cdn/dev/img/app/13.0/lang-list-ap.png">
<img class="tablet" id="lang-list-at" src="../../../cdn/dev/img/app/13.0/lang-list-at.png">
</p><p>
Select the language and keyboard you want to install - a popup will ask for confirmation,
hit the <span class="command">Download</span> button.
</p><p>
<img class="phone" id="confirm-dl-ap" src="../../../cdn/dev/img/app/12.0/confirm-dl-ap.png">
<img class="tablet" id="confirm-dl-at" src="../../../cdn/dev/img/app/12.0/confirm-dl-at.png">
<img class="phone" id="confirm-dl-ap" src="../../../cdn/dev/img/app/13.0/confirm-dl-ap.png">
<img class="tablet" id="confirm-dl-at" src="../../../cdn/dev/img/app/13.0/confirm-dl-at.png">
</p><p>
Step 5)
</p><p>
Once the download is complete, the new keyboard will be selected. Touch the <span class="command">&larr;</span>
button on the top left corner of the popup several times and the new keyboard will become active.
</p><p>
<img class="phone" id="success-ap" src="../../../cdn/dev/img/app/12.0/dl-success-ap.png">
<img class="tablet" id="success-at" src="../../../cdn/dev/img/app/12.0/dl-success-at.png">
<img class="phone" id="success-ap" src="../../../cdn/dev/img/app/13.0/dl-success-ap.png">
<img class="tablet" id="success-at" src="../../../cdn/dev/img/app/13.0/dl-success-at.png">
</p><p>
Alternate Step for System Keyboard)
</p><p>
The Keyman system keyboard has an additional <span class="command">CLOSE KEYMAN</span> button at the bottom left of
the "Keyboards" menu. Pushing this button will close Keyman and switch to the next non-Keyman system keyboard.
</p><p>
<img id="close-keyman-a" src="../../../cdn/dev/img/app/12.0/close-keyman-a.png"/>
<img id="close-keyman-a" src="../../../cdn/dev/img/app/13.0/close-keyman-a.png"/>
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -81,24 +99,24 @@
The screenshots below are of a device running Android 9.0 Pie.
</p>
<p>
<img class="phone" id="settings1-ap" src="../../../cdn/dev/img/app/12.0/settings1-ap.png">
<img class="tablet" id="settings1-at" src="../../../cdn/dev/img/app/12.0/settings1-at.png">
<img class="phone" id="settings1-ap" src="../../../cdn/dev/img/app/13.0/settings1-ap.png">
<img class="tablet" id="settings1-at" src="../../../cdn/dev/img/app/13.0/settings1-at.png">
</p>
<br/>
<p>
Step 2) Select 'Get Started' and then select 'Enable Keyman as system-wide keyboard'.
</p>
<p>
<img class="phone" id="settings2-ap" src="../../../cdn/dev/img/app/12.0/settings2-ap.png">
<img class="tablet" id="settings2-at" src="../../../cdn/dev/img/app/12.0/settings2-at.png">
<img class="phone" id="settings2-ap" src="../../../cdn/dev/img/app/13.0/settings2-ap.png">
<img class="tablet" id="settings2-at" src="../../../cdn/dev/img/app/13.0/settings2-at.png">
</p>
<br/>
<p>
This will open an Android settings screen for 'Available virtual keyboard'.
</p>
<p>
<img class="phone" id="settings3-ap" src="../../../cdn/dev/img/app/12.0/settings3-ap.png">
<img class="tablet" id="settings3-at" src="../../../cdn/dev/img/app/12.0/settings3-at.png">
<img class="phone" id="settings3-ap" src="../../../cdn/dev/img/app/13.0/settings3-ap.png">
<img class="tablet" id="settings3-at" src="../../../cdn/dev/img/app/13.0/settings3-at.png">
</p>
<br/>
<p>
@ -106,13 +124,13 @@
This will bring up two confirmation dialogs.
</p>
<p>
<img class="phone" id="settings4-ap" src="../../../cdn/dev/img/app/12.0/settings4-ap.png">
<img class="tablet" id="settings4-at" src="../../../cdn/dev/img/app/12.0/settings4-at.png">
<img class="phone" id="settings4-ap" src="../../../cdn/dev/img/app/13.0/settings4-ap.png">
<img class="tablet" id="settings4-at" src="../../../cdn/dev/img/app/13.0/settings4-at.png">
</p>
<br/>
<p>
<img class="phone" id="settings5-ap" src="../../../cdn/dev/img/app/12.0/settings5-ap.png">
<img class="tablet" id="settings5-at" src="../../../cdn/dev/img/app/12.0/settings5-at.png">
<img class="phone" id="settings5-ap" src="../../../cdn/dev/img/app/13.0/settings5-ap.png">
<img class="tablet" id="settings5-at" src="../../../cdn/dev/img/app/13.0/settings5-at.png">
</p>
<br/>
<p>
@ -120,16 +138,16 @@
you'll see a keyboard icon at the bottom right.
</p>
<p>
<img class="phone" id="settings6-ap" src="../../../cdn/dev/img/app/12.0/settings6-ap.png">
<img class="tablet" id="settings6-at" src="../../../cdn/dev/img/app/12.0/settings6-at.png">
<img class="phone" id="settings6-ap" src="../../../cdn/dev/img/app/13.0/settings6-ap.png">
<img class="tablet" id="settings6-at" src="../../../cdn/dev/img/app/13.0/settings6-at.png">
</p>
<br/>
<p>
Click the keyboard icon whenever you want to change the current system keyboard.
</p>
<p>
<img class="phone" id="settings7-ap" src="../../../cdn/dev/img/app/12.0/settings7-ap.png">
<img class="tablet" id="settings7-at" src="../../../cdn/dev/img/app/12.0/settings7-at.png">
<img class="phone" id="settings7-ap" src="../../../cdn/dev/img/app/13.0/settings7-ap.png">
<img class="tablet" id="settings7-at" src="../../../cdn/dev/img/app/13.0/settings7-at.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -85,8 +103,8 @@
<p>
With the keyboard visible, touch the globe key:
<p>
<img class="phone" id="globe-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="globe-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="globe-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="globe-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<p>
This will bring up a list of all currently installed languages (the default is English

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -93,7 +111,7 @@
From the Keyman Settings menu, select 'Installed languages'
</p>
<p>
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-languages-ap.png">
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-languages-ap.png">
</p>
<p>
Step 3)
@ -103,7 +121,7 @@
we will be removing the "MTNT Dictionary" for the English language.
</p>
<p>
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-two-installed-languages-ap.png">
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-two-installed-languages-ap.png">
</p>
<p>
Step 4)
@ -113,7 +131,7 @@
Select the dictionary you want to uninstall at the bottom of the page.
</p>
<p>
<img id="english-settings-ap" src="../../../cdn/dev/img/app/12.0/english-settings-ap.png">
<img id="english-settings-ap" src="../../../cdn/dev/img/app/13.0/english-settings-ap.png">
</p>
<p>
Step 5)
@ -123,7 +141,7 @@
Select the dictionary to display the info menu.
</p>
<p>
<img id="english-dictionaries-ap" src="../../../cdn/dev/img/app/12.0/english-dictionaries-ap.png">
<img id="english-dictionaries-ap" src="../../../cdn/dev/img/app/13.0/english-dictionaries-ap.png">
</p>
<p>
Step 6)
@ -133,7 +151,7 @@
Select 'Uninstall dictionary' to get a prompt to delete the dictionary.
</p>
<p>
<img id="english-dictionary-info-ap" src="../../../cdn/dev/img/app/12.0/english-dictionary-info-ap.png">
<img id="english-dictionary-info-ap" src="../../../cdn/dev/img/app/13.0/english-dictionary-info-ap.png">
</p>
<p>
Step 7)
@ -142,13 +160,13 @@
Press "Delete" to uninstall the dictionary.
</p>
<p>
<img id="confirm-english-dictionary-delete-ap" src="../../../cdn/dev/img/app/12.0/confirm-english-dictionary-delete-ap.png">
<img id="confirm-english-dictionary-delete-ap" src="../../../cdn/dev/img/app/13.0/confirm-english-dictionary-delete-ap.png">
</p>
<p>
You'll see a notification when the dictionary is deleted.
</p>
<p>
<img id="uninstall-dictionary-notification-ap" src="../../../cdn/dev/img/app/12.0/uninstall-dictionary-notification-ap.png">
<img id="uninstall-dictionary-notification-ap" src="../../../cdn/dev/img/app/13.0/uninstall-dictionary-notification-ap.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -87,20 +105,20 @@
</p><p>
From the Keyman Settings menu, select 'Installed languages'
</p><p>
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-languages-ap.png">
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-languages-ap.png">
</p><p>
Step 3)
</p><p>
From the 'Installed languages' menu, select the language for the keyboard you want to remove.
</p><p>
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-two-installed-languages-ap.png">
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-two-installed-languages-ap.png">
</p><p>
Step 4)
</p><p>
The language Settings menu lists currently installed keyboards associated with the language.
Select the keyboard you want to uninstall
</p><p>
<img id="khmer-settings-ap" src="../../../cdn/dev/img/app/12.0/khmer-settings-ap.png">
<img id="khmer-settings-ap" src="../../../cdn/dev/img/app/13.0/khmer-settings-ap.png">
</p><p>
Step 5)
</p><p>
@ -109,18 +127,18 @@
</p><p>
Note: the default 'SIL EuroLatin' keyboard for English cannot be removed.
</p><p>
<img id="settings-khmer-info-ap" src="../../../cdn/dev/img/app/12.0/settings-khmer-info-ap.png">
<img id="settings-khmer-info-ap" src="../../../cdn/dev/img/app/13.0/settings-khmer-info-ap.png">
</p><p>
Step 6)
</p><p>
Press "Delete" to uninstall the keyboard.
</p><p>
<img id="confirm-khmer-delete-ap" src="../../../cdn/dev/img/app/12.0/confirm-khmer-delete-ap.png">
<img id="confirm-khmer-delete-ap" src="../../../cdn/dev/img/app/13.0/confirm-khmer-delete-ap.png">
</p><p>
You'll see a notification when the keyboard is deleted.
</p><p>
<img class="phone" id="uninstall-notification-ap" src="../../../cdn/dev/img/app/12.0/uninstall-notification-ap.png">
<img class="tablet" id="uninstall-notification-at" src="../../../cdn/dev/img/app/12.0/uninstall-notification-at.png">
<img class="phone" id="uninstall-notification-ap" src="../../../cdn/dev/img/app/13.0/uninstall-notification-ap.png">
<img class="tablet" id="uninstall-notification-at" src="../../../cdn/dev/img/app/13.0/uninstall-notification-at.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -89,36 +107,36 @@
</tr>
<tr>
<td>
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</td>
<td>Select another language/keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/12.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/12.0/hide-keyboard-at.png">
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/13.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/13.0/hide-keyboard-at.png">
</td>
<td>Hide the keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/12.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/12.0/backspace-at.png">
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/13.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/13.0/backspace-at.png">
</td>
<td>Backspace</td>
</tr>
<tr>
<td>
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/12.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/12.0/return-at.png">
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/13.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/13.0/return-at.png">
</td>
<td>Return</td>
</tr>
<tr>
<td>
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/12.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/12.0/shift-at.png">
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/13.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/13.0/shift-at.png">
</td>
<td>Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys
(which can access additional key layers)
@ -126,8 +144,8 @@
</tr>
<tr>
<td>
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/12.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/12.0/touch-hold-at.png">
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/13.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/13.0/touch-hold-at.png">
</td>
<td>Keys with a small dot in the top right corner indicate a long press key. Access
further functionality by long pressing the key
@ -137,37 +155,41 @@
<th colspan="2" id="toolbar-ap">Toolbar Icons</th>
</tr>
<tr>
<td><img id="share-ap" src="../../../cdn/dev/img/app/12.0/share-a.png"></td>
<td><img id="share-ap" src="../../../cdn/dev/img/app/13.0/share-a.png"></td>
<td>Share your text via Mail, Text, or Twitter</td>
</tr>
<tr>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/12.0/browser-a.png"></td>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/13.0/browser-a.png"></td>
<td>Open the Keyman Browser to use the web in your language</td>
</tr>
<tr>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/12.0/menu-icon-a.png"></td>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/13.0/menu-icon-a.png"></td>
<td>Open the menu for additional options</td>
</tr>
<tr>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/12.0/font-size-a.png"></td>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/13.0/font-size-a.png"></td>
<td>Adjust the font size</td>
</tr>
<tr>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/12.0/delete-a.png"></td>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/13.0/delete-a.png"></td>
<td>Delete all current text</td>
</tr>
<tr>
<td><img id="info-ap" src="../../../cdn/dev/img/app/12.0/info-a.png"></td>
<td><img id="info-ap" src="../../../cdn/dev/img/app/13.0/info-a.png"></td>
<td>Load this help page</td>
</tr>
<tr>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/12.0/get-started-a.png"></td>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/13.0/get-started-a.png"></td>
<td>Open the initial setup screen</td>
</tr>
<tr>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/12.0/settings-a.png"></td>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/13.0/settings-a.png"></td>
<td>Open the Keyman Settings screen</td>
</tr>
<tr>
<td><img id="cloud-download-ap" src="../../../cdn/dev/img/app/13.0/ic_cloud_download.png"></td>
<td>Update available to download for keyboard / dictionary</td>
</tr>
</table>
<h2>Accessing Keyboard Help</h2>
@ -175,14 +197,14 @@
Step 1) Open the keyboard list by touching the globe key.
</p>
<p>
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<br/>
<p>
Step 2) Touch the info icon for your keyboard.
</p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/12.0/info-a-gray.png"></p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/13.0/info-a-gray.png"></p>
<br/>
<h2>Help Index</h2>
@ -217,6 +239,7 @@
<ul>
<li><a href='index.html'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/12.0/'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/11.0/'>Keyman for Android 11.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/10.0/'>Keyman for Android 10.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/2.0/'>Keyman for Android 2.0 Documentation</a></li>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -89,36 +107,36 @@
</tr>
<tr>
<td>
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</td>
<td>Select another language/keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/12.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/12.0/hide-keyboard-at.png">
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/13.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/13.0/hide-keyboard-at.png">
</td>
<td>Hide the keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/12.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/12.0/backspace-at.png">
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/13.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/13.0/backspace-at.png">
</td>
<td>Backspace</td>
</tr>
<tr>
<td>
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/12.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/12.0/return-at.png">
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/13.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/13.0/return-at.png">
</td>
<td>Return</td>
</tr>
<tr>
<td>
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/12.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/12.0/shift-at.png">
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/13.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/13.0/shift-at.png">
</td>
<td>Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys
(which can access additional key layers)
@ -126,8 +144,8 @@
</tr>
<tr>
<td>
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/12.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/12.0/touch-hold-at.png">
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/13.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/13.0/touch-hold-at.png">
</td>
<td>Keys with a small dot in the top right corner indicate a long press key. Access
further functionality by long pressing the key
@ -137,37 +155,41 @@
<th colspan="2" id="toolbar-ap">Toolbar Icons</th>
</tr>
<tr>
<td><img id="share-ap" src="../../../cdn/dev/img/app/12.0/share-a.png"></td>
<td><img id="share-ap" src="../../../cdn/dev/img/app/13.0/share-a.png"></td>
<td>Share your text via Mail, Text, or Twitter</td>
</tr>
<tr>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/12.0/browser-a.png"></td>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/13.0/browser-a.png"></td>
<td>Open the Keyman Browser to use the web in your language</td>
</tr>
<tr>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/12.0/menu-icon-a.png"></td>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/13.0/menu-icon-a.png"></td>
<td>Open the menu for additional options</td>
</tr>
<tr>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/12.0/font-size-a.png"></td>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/13.0/font-size-a.png"></td>
<td>Adjust the font size</td>
</tr>
<tr>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/12.0/delete-a.png"></td>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/13.0/delete-a.png"></td>
<td>Delete all current text</td>
</tr>
<tr>
<td><img id="info-ap" src="../../../cdn/dev/img/app/12.0/info-a.png"></td>
<td><img id="info-ap" src="../../../cdn/dev/img/app/13.0/info-a.png"></td>
<td>Load this help page</td>
</tr>
<tr>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/12.0/get-started-a.png"></td>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/13.0/get-started-a.png"></td>
<td>Open the initial setup screen</td>
</tr>
<tr>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/12.0/settings-a.png"></td>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/13.0/settings-a.png"></td>
<td>Open the Keyman Settings screen</td>
</tr>
<tr>
<td><img id="cloud-download-ap" src="../../../cdn/dev/img/app/13.0/ic_cloud_download.png"></td>
<td>Update available to download for keyboard / dictionary</td>
</tr>
</table>
<h2>Accessing Keyboard Help</h2>
@ -175,14 +197,14 @@
Step 1) Open the keyboard list by touching the globe key.
</p>
<p>
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<br/>
<p>
Step 2) Touch the info icon for your keyboard.
</p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/12.0/info-a-gray.png"></p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/13.0/info-a-gray.png"></p>
<br/>
<h2>Help Index</h2>
@ -217,6 +239,7 @@
<ul>
<li><a href='index.html'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/12.0/'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/11.0/'>Keyman for Android 11.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/10.0/'>Keyman for Android 10.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/2.0/'>Keyman for Android 2.0 Documentation</a></li>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -89,36 +107,36 @@
</tr>
<tr>
<td>
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="install-keyboard-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="install-keyboard-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</td>
<td>Select another language/keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/12.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/12.0/hide-keyboard-at.png">
<img class="phone" id="hide-keyboard-ap" src="../../../cdn/dev/img/app/13.0/hide-keyboard-ap.png">
<img class="tablet" id="hide-keyboard-at" src="../../../cdn/dev/img/app/13.0/hide-keyboard-at.png">
</td>
<td>Hide the keyboard</td>
</tr>
<tr>
<td>
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/12.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/12.0/backspace-at.png">
<img class="phone" id="backspace-ap" src="../../../cdn/dev/img/app/13.0/backspace-ap.png">
<img class="tablet" id="backspace-at" src="../../../cdn/dev/img/app/13.0/backspace-at.png">
</td>
<td>Backspace</td>
</tr>
<tr>
<td>
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/12.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/12.0/return-at.png">
<img class="phone" id="return-ap" src="../../../cdn/dev/img/app/13.0/return-ap.png">
<img class="tablet" id="return-at" src="../../../cdn/dev/img/app/13.0/return-at.png">
</td>
<td>Return</td>
</tr>
<tr>
<td>
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/12.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/12.0/shift-at.png">
<img class="phone" id="shift-ap" src="../../../cdn/dev/img/app/13.0/shift-ap.png">
<img class="tablet" id="shift-at" src="../../../cdn/dev/img/app/13.0/shift-at.png">
</td>
<td>Shift key. Long press this key to access the CTRL, ALT and CTRL ALT keys
(which can access additional key layers)
@ -126,8 +144,8 @@
</tr>
<tr>
<td>
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/12.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/12.0/touch-hold-at.png">
<img class="phone" id="touch-hold-ap" src="../../../cdn/dev/img/app/13.0/touch-hold-ap.png">
<img class="tablet" id="touch-hold-at" src="../../../cdn/dev/img/app/13.0/touch-hold-at.png">
</td>
<td>Keys with a small dot in the top right corner indicate a long press key. Access
further functionality by long pressing the key
@ -137,37 +155,41 @@
<th colspan="2" id="toolbar-ap">Toolbar Icons</th>
</tr>
<tr>
<td><img id="share-ap" src="../../../cdn/dev/img/app/12.0/share-a.png"></td>
<td><img id="share-ap" src="../../../cdn/dev/img/app/13.0/share-a.png"></td>
<td>Share your text via Mail, Text, or Twitter</td>
</tr>
<tr>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/12.0/browser-a.png"></td>
<td><img id="browser-ap" src="../../../cdn/dev/img/app/13.0/browser-a.png"></td>
<td>Open the Keyman Browser to use the web in your language</td>
</tr>
<tr>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/12.0/menu-icon-a.png"></td>
<td><img id="menu-ap" src="../../../cdn/dev/img/app/13.0/menu-icon-a.png"></td>
<td>Open the menu for additional options</td>
</tr>
<tr>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/12.0/font-size-a.png"></td>
<td><img id="font-size-ap" src="../../../cdn/dev/img/app/13.0/font-size-a.png"></td>
<td>Adjust the font size</td>
</tr>
<tr>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/12.0/delete-a.png"></td>
<td><img id="delete-ap" src="../../../cdn/dev/img/app/13.0/delete-a.png"></td>
<td>Delete all current text</td>
</tr>
<tr>
<td><img id="info-ap" src="../../../cdn/dev/img/app/12.0/info-a.png"></td>
<td><img id="info-ap" src="../../../cdn/dev/img/app/13.0/info-a.png"></td>
<td>Load this help page</td>
</tr>
<tr>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/12.0/get-started-a.png"></td>
<td><img id="get-started-ap" src="../../../cdn/dev/img/app/13.0/get-started-a.png"></td>
<td>Open the initial setup screen</td>
</tr>
<tr>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/12.0/settings-a.png"></td>
<td><img id="settings-ap" src="../../../cdn/dev/img/app/13.0/settings-a.png"></td>
<td>Open the Keyman Settings screen</td>
</tr>
<tr>
<td><img id="cloud-download-ap" src="../../../cdn/dev/img/app/13.0/ic_cloud_download.png"></td>
<td>Update available to download for keyboard / dictionary</td>
</tr>
</table>
<h2>Accessing Keyboard Help</h2>
@ -175,14 +197,14 @@
Step 1) Open the keyboard list by touching the globe key.
</p>
<p>
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="keyboard-help1-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="keyboard-help1-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<br/>
<p>
Step 2) Touch the info icon for your keyboard.
</p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/12.0/info-a-gray.png"></p>
<p><img id="keyboard-help2-ap" src="../../../cdn/dev/img/app/13.0/info-a-gray.png"></p>
<br/>
<h2>Help Index</h2>
@ -217,6 +239,7 @@
<ul>
<li><a href='index.html'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/12.0/'>Keyman for Android 12.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/11.0/'>Keyman for Android 11.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/10.0/'>Keyman for Android 10.0 Documentation</a></li>
<li><a href='http://help.keyman.com.local/products/android/2.0/'>Keyman for Android 2.0 Documentation</a></li>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -84,8 +102,8 @@
Step 1) Click the link to your custom package file.
</p>
<p>
<img class="phone" id="dist-url-screen-ap" src="../../../cdn/dev/img/app/12.0/dist-url-screen-ap.png">
<img class="tablet" id="dist-url-screen-at" src="../../../cdn/dev/img/app/12.0/dist-url-screen-at.png">
<img class="phone" id="dist-url-screen-ap" src="../../../cdn/dev/img/app/13.0/dist-url-screen-ap.png">
<img class="tablet" id="dist-url-screen-at" src="../../../cdn/dev/img/app/13.0/dist-url-screen-at.png">
</p>
<p>
Step 2) Once the KMP file is on your device, you will need to browse to the KMP file and select it.
@ -93,14 +111,14 @@
<br/>
From the Keyman Settings menu, select 'Add Keyboard from Device'.
</p>
<p><img id="settings-add-keyboard-from-device-ap" src="../../../cdn/dev/img/app/12.0/settings-language-ap.png"></p>
<p><img id="settings-add-keyboard-from-device-ap" src="../../../cdn/dev/img/app/13.0/settings-language-ap.png"></p>
<p>
The device will launch a file browser where you'll browse to the directory of your KMP file.
A common place to look is the "Downloads" folder.
</p>
<p>
<img class="phone" id="dist-file-browser-ap" src="../../../cdn/dev/img/app/12.0/dist-file-browser-ap.png">
<img class="tablet" id="dist-file-browser-at" src="../../../cdn/dev/img/app/12.0/dist-file-browser-at.png">
<img class="phone" id="dist-file-browser-ap" src="../../../cdn/dev/img/app/13.0/dist-file-browser-ap.png">
<img class="tablet" id="dist-file-browser-at" src="../../../cdn/dev/img/app/13.0/dist-file-browser-at.png">
</p>
<p>
Selecting the KMP file should bring you to Step 3)
@ -111,36 +129,48 @@
Keyman for Android won't need to ask for storage permission again, unless the user revokes or uninstalls the app.
</p>
<p>
<img class="phone" id="dist-storrage-permission-ap" src="../../../cdn/dev/img/app/12.0/dist-storage-permission-ap.png">
<img class="tablet" id="dist-storrage-permission-at" src="../../../cdn/dev/img/app/12.0/dist-storage-permission-at.png">
<img class="phone" id="dist-storrage-permission-ap" src="../../../cdn/dev/img/app/13.0/dist-storage-permission-ap.png">
<img class="tablet" id="dist-storrage-permission-at" src="../../../cdn/dev/img/app/13.0/dist-storage-permission-at.png">
</p>
<p>
Older versions of Android grant Storage permissions at app installation time, so those users can skip this step.
</p>
<p>
Step 4) Keyman for Android will parse the metadata in the package. If the keyboard package includes a "welcome.htm"
file, this will be displayed at the confirmation to install the keyboard package.
Step 4) Keyman for Android will verify the package, and display more information about it, including package version and 'readme' notes if available.
This will be displayed at the confirmation to install the keyboard package.
</p>
<p>
<img class="phone" id="dist-welcome-ap" src="../../../cdn/dev/img/app/12.0/dist-welcome-ap.png">
<img class="tablet" id="dist-welcome-at" src="../../../cdn/dev/img/app/12.0/dist-welcome-at.png">
If "readme.htm" is not included, a generic page with the package ID and package version will be shown. Click the
"Install" button to install the entire keyboard package.
</p>
<p>
If "welcome.htm" is not included, a generic page with the package ID and package version will be shown. Click the
left "Install" button to install the entire keyboard package.
<img class="phone" id="dist-readme-ap" src="../../../cdn/dev/img/app/13.0/dist-readme-ap.png">
<img class="tablet" id="dist-readme-at" src="../../../cdn/dev/img/app/13.0/dist-readme-at.png">
</p>
<p>
Step 5) All the keyboards in the package are installed as a group. In this example, the package only has the
"Khmer Angkor" keyboard, so it becomes the active keyboard. For custom dictionary packages, only one dictionary
will be installed.
</p>
<p>
<img class="phone" id="dist-install1-ap" src="../../../cdn/dev/img/app/12.0/dist-install1-ap.png">
<img class="tablet" id="dist-install1-at" src="../../../cdn/dev/img/app/12.0/dist-install1-at.png">
If the keyboard package includes Welcome documentation, it will be displayed after the keyboard package is installed.
This documentation helps you to get started using the keyboard.
</p>
<p>
<img class="phone" id="dist-welcome-ap" src="../../../cdn/dev/img/app/13.0/dist-welcome-ap.png">
<img class="tablet" id="dist-welcome-at" src="../../../cdn/dev/img/app/13.0/dist-welcome-at.png">
</p>
<p>
Click the "OK" button to finish installing the keyboard. You should be able to select it from the Keyman globe
and start typing with it in any app.
</p>
<p>
<img class="phone" id="dist-install1-ap" src="../../../cdn/dev/img/app/13.0/dist-install1-ap.png">
<img class="tablet" id="dist-install1-at" src="../../../cdn/dev/img/app/13.0/dist-install1-at.png">
</p>
<p>
Once the keyboard has been installed, you should be able to use it as normal.
<br/>
To learn how to create a custom installable keyboard,
<a href="https://help.keyman.com/developer/12.0/guides/distribute/">click here</a>.
</p>
@ -157,8 +187,8 @@
storage permission. The screenshot below is from Android 9.0 Pie.
</p>
<p>
<img class="phone" id="keyman-storage-permission-ap" src="../../../cdn/dev/img/app/12.0/keyman-storage-permission-ap.png">
<img class="tablet" id="keyman-storage-permission-at" src="../../../cdn/dev/img/app/12.0/keyman-storage-permission-at.png">
<img class="phone" id="keyman-storage-permission-ap" src="../../../cdn/dev/img/app/13.0/keyman-storage-permission-ap.png">
<img class="tablet" id="keyman-storage-permission-at" src="../../../cdn/dev/img/app/13.0/keyman-storage-permission-at.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -87,14 +105,14 @@
</p><p>
From the Keyman Settings menu, select 'Installed languages'
</p><p>
<img id="settings-language-ap" src="../../../cdn/dev/img/app/12.0/settings-language-ap.png">
<img id="settings-language-ap" src="../../../cdn/dev/img/app/13.0/settings-language-ap.png">
</p><p>
Step 3)
</p><p>
From the 'Installed languages' menu, touch the <span class="command">+</span>
button in the bottom right corner of your screen.
</p><p>
<img id="plus-a" src="../../../cdn/dev/img/app/12.0/plus-a.png">
<img id="plus-a" src="../../../cdn/dev/img/app/13.0/plus-a.png">
</p><p>
Step 4)
</p><p>
@ -102,29 +120,29 @@
the language you want to install. Languages marked with a right arrow have multiple keyboards - for
example we have 10+ different Tamil keyboards.
</p><p>
<img class="phone" id="lang-list-ap" src="../../../cdn/dev/img/app/12.0/lang-list-ap.png">
<img class="tablet" id="lang-list-at" src="../../../cdn/dev/img/app/12.0/lang-list-at.png">
<img class="phone" id="lang-list-ap" src="../../../cdn/dev/img/app/13.0/lang-list-ap.png">
<img class="tablet" id="lang-list-at" src="../../../cdn/dev/img/app/13.0/lang-list-at.png">
</p><p>
Select the language and keyboard you want to install - a popup will ask for confirmation,
hit the <span class="command">Download</span> button.
</p><p>
<img class="phone" id="confirm-dl-ap" src="../../../cdn/dev/img/app/12.0/confirm-dl-ap.png">
<img class="tablet" id="confirm-dl-at" src="../../../cdn/dev/img/app/12.0/confirm-dl-at.png">
<img class="phone" id="confirm-dl-ap" src="../../../cdn/dev/img/app/13.0/confirm-dl-ap.png">
<img class="tablet" id="confirm-dl-at" src="../../../cdn/dev/img/app/13.0/confirm-dl-at.png">
</p><p>
Step 5)
</p><p>
Once the download is complete, the new keyboard will be selected. Touch the <span class="command">&larr;</span>
button on the top left corner of the popup several times and the new keyboard will become active.
</p><p>
<img class="phone" id="success-ap" src="../../../cdn/dev/img/app/12.0/dl-success-ap.png">
<img class="tablet" id="success-at" src="../../../cdn/dev/img/app/12.0/dl-success-at.png">
<img class="phone" id="success-ap" src="../../../cdn/dev/img/app/13.0/dl-success-ap.png">
<img class="tablet" id="success-at" src="../../../cdn/dev/img/app/13.0/dl-success-at.png">
</p><p>
Alternate Step for System Keyboard)
</p><p>
The Keyman system keyboard has an additional <span class="command">CLOSE KEYMAN</span> button at the bottom left of
the "Keyboards" menu. Pushing this button will close Keyman and switch to the next non-Keyman system keyboard.
</p><p>
<img id="close-keyman-a" src="../../../cdn/dev/img/app/12.0/close-keyman-a.png"/>
<img id="close-keyman-a" src="../../../cdn/dev/img/app/13.0/close-keyman-a.png"/>
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -81,24 +99,24 @@
The screenshots below are of a device running Android 9.0 Pie.
</p>
<p>
<img class="phone" id="settings1-ap" src="../../../cdn/dev/img/app/12.0/settings1-ap.png">
<img class="tablet" id="settings1-at" src="../../../cdn/dev/img/app/12.0/settings1-at.png">
<img class="phone" id="settings1-ap" src="../../../cdn/dev/img/app/13.0/settings1-ap.png">
<img class="tablet" id="settings1-at" src="../../../cdn/dev/img/app/13.0/settings1-at.png">
</p>
<br/>
<p>
Step 2) Select 'Get Started' and then select 'Enable Keyman as system-wide keyboard'.
</p>
<p>
<img class="phone" id="settings2-ap" src="../../../cdn/dev/img/app/12.0/settings2-ap.png">
<img class="tablet" id="settings2-at" src="../../../cdn/dev/img/app/12.0/settings2-at.png">
<img class="phone" id="settings2-ap" src="../../../cdn/dev/img/app/13.0/settings2-ap.png">
<img class="tablet" id="settings2-at" src="../../../cdn/dev/img/app/13.0/settings2-at.png">
</p>
<br/>
<p>
This will open an Android settings screen for 'Available virtual keyboard'.
</p>
<p>
<img class="phone" id="settings3-ap" src="../../../cdn/dev/img/app/12.0/settings3-ap.png">
<img class="tablet" id="settings3-at" src="../../../cdn/dev/img/app/12.0/settings3-at.png">
<img class="phone" id="settings3-ap" src="../../../cdn/dev/img/app/13.0/settings3-ap.png">
<img class="tablet" id="settings3-at" src="../../../cdn/dev/img/app/13.0/settings3-at.png">
</p>
<br/>
<p>
@ -106,13 +124,13 @@
This will bring up two confirmation dialogs.
</p>
<p>
<img class="phone" id="settings4-ap" src="../../../cdn/dev/img/app/12.0/settings4-ap.png">
<img class="tablet" id="settings4-at" src="../../../cdn/dev/img/app/12.0/settings4-at.png">
<img class="phone" id="settings4-ap" src="../../../cdn/dev/img/app/13.0/settings4-ap.png">
<img class="tablet" id="settings4-at" src="../../../cdn/dev/img/app/13.0/settings4-at.png">
</p>
<br/>
<p>
<img class="phone" id="settings5-ap" src="../../../cdn/dev/img/app/12.0/settings5-ap.png">
<img class="tablet" id="settings5-at" src="../../../cdn/dev/img/app/12.0/settings5-at.png">
<img class="phone" id="settings5-ap" src="../../../cdn/dev/img/app/13.0/settings5-ap.png">
<img class="tablet" id="settings5-at" src="../../../cdn/dev/img/app/13.0/settings5-at.png">
</p>
<br/>
<p>
@ -120,16 +138,16 @@
you'll see a keyboard icon at the bottom right.
</p>
<p>
<img class="phone" id="settings6-ap" src="../../../cdn/dev/img/app/12.0/settings6-ap.png">
<img class="tablet" id="settings6-at" src="../../../cdn/dev/img/app/12.0/settings6-at.png">
<img class="phone" id="settings6-ap" src="../../../cdn/dev/img/app/13.0/settings6-ap.png">
<img class="tablet" id="settings6-at" src="../../../cdn/dev/img/app/13.0/settings6-at.png">
</p>
<br/>
<p>
Click the keyboard icon whenever you want to change the current system keyboard.
</p>
<p>
<img class="phone" id="settings7-ap" src="../../../cdn/dev/img/app/12.0/settings7-ap.png">
<img class="tablet" id="settings7-at" src="../../../cdn/dev/img/app/12.0/settings7-at.png">
<img class="phone" id="settings7-ap" src="../../../cdn/dev/img/app/13.0/settings7-ap.png">
<img class="tablet" id="settings7-at" src="../../../cdn/dev/img/app/13.0/settings7-at.png">
</p>
<h2>Help Index</h2>

View file

@ -1,3 +1,13 @@
<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: session_start(): ps_files_cleanup_dir: opendir(C:\Windows\temp) failed: No such file or directory (2) in C:\src\sites\help.keyman.com\_includes\includes\session-embed.php on line <i>3</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0002</td><td bgcolor='#eeeeec' align='right'>142536</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\src\sites\help.keyman.com\products\android\13.0\switching-between-keyboards.php' bgcolor='#eeeeec'>...\switching-between-keyboards.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0008</td><td bgcolor='#eeeeec' align='right'>186544</td><td bgcolor='#eeeeec'>require_once( <font color='#00bb00'>'C:\src\sites\help.keyman.com\_includes\includes\session-embed.php'</font> )</td><td title='C:\src\sites\help.keyman.com\products\android\13.0\switching-between-keyboards.php' bgcolor='#eeeeec'>...\switching-between-keyboards.php<b>:</b>3</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.0008</td><td bgcolor='#eeeeec' align='right'>186576</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.session-start' target='_new'>session_start</a>
( )</td><td title='C:\src\sites\help.keyman.com\_includes\includes\session-embed.php' bgcolor='#eeeeec'>...\session-embed.php<b>:</b>3</td></tr>
</table></font>
<!DOCTYPE html>
<html>
@ -15,19 +25,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +45,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -85,8 +113,8 @@
<p>
With the keyboard visible, touch the globe key:
<p>
<img class="phone" id="globe-ap" src="../../../cdn/dev/img/app/12.0/globe-ap.png">
<img class="tablet" id="globe-at" src="../../../cdn/dev/img/app/12.0/globe-at.png">
<img class="phone" id="globe-ap" src="../../../cdn/dev/img/app/13.0/globe-ap.png">
<img class="tablet" id="globe-at" src="../../../cdn/dev/img/app/13.0/globe-at.png">
</p>
<p>
This will bring up a list of all currently installed languages (the default is English

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -93,7 +111,7 @@
From the Keyman Settings menu, select 'Installed languages'
</p>
<p>
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-languages-ap.png">
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-languages-ap.png">
</p>
<p>
Step 3)
@ -103,7 +121,7 @@
we will be removing the "MTNT Dictionary" for the English language.
</p>
<p>
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-two-installed-languages-ap.png">
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-two-installed-languages-ap.png">
</p>
<p>
Step 4)
@ -113,7 +131,7 @@
Select the dictionary you want to uninstall at the bottom of the page.
</p>
<p>
<img id="english-settings-ap" src="../../../cdn/dev/img/app/12.0/english-settings-ap.png">
<img id="english-settings-ap" src="../../../cdn/dev/img/app/13.0/english-settings-ap.png">
</p>
<p>
Step 5)
@ -123,7 +141,7 @@
Select the dictionary to display the info menu.
</p>
<p>
<img id="english-dictionaries-ap" src="../../../cdn/dev/img/app/12.0/english-dictionaries-ap.png">
<img id="english-dictionaries-ap" src="../../../cdn/dev/img/app/13.0/english-dictionaries-ap.png">
</p>
<p>
Step 6)
@ -133,7 +151,7 @@
Select 'Uninstall dictionary' to get a prompt to delete the dictionary.
</p>
<p>
<img id="english-dictionary-info-ap" src="../../../cdn/dev/img/app/12.0/english-dictionary-info-ap.png">
<img id="english-dictionary-info-ap" src="../../../cdn/dev/img/app/13.0/english-dictionary-info-ap.png">
</p>
<p>
Step 7)
@ -142,13 +160,13 @@
Press "Delete" to uninstall the dictionary.
</p>
<p>
<img id="confirm-english-dictionary-delete-ap" src="../../../cdn/dev/img/app/12.0/confirm-english-dictionary-delete-ap.png">
<img id="confirm-english-dictionary-delete-ap" src="../../../cdn/dev/img/app/13.0/confirm-english-dictionary-delete-ap.png">
</p>
<p>
You'll see a notification when the dictionary is deleted.
</p>
<p>
<img id="uninstall-dictionary-notification-ap" src="../../../cdn/dev/img/app/12.0/uninstall-dictionary-notification-ap.png">
<img id="uninstall-dictionary-notification-ap" src="../../../cdn/dev/img/app/13.0/uninstall-dictionary-notification-ap.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">
@ -87,20 +105,20 @@
</p><p>
From the Keyman Settings menu, select 'Installed languages'
</p><p>
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-languages-ap.png">
<img id="settings-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-languages-ap.png">
</p><p>
Step 3)
</p><p>
From the 'Installed languages' menu, select the language for the keyboard you want to remove.
</p><p>
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/12.0/settings-two-installed-languages-ap.png">
<img id="settings-two-installed-languages-ap" src="../../../cdn/dev/img/app/13.0/settings-two-installed-languages-ap.png">
</p><p>
Step 4)
</p><p>
The language Settings menu lists currently installed keyboards associated with the language.
Select the keyboard you want to uninstall
</p><p>
<img id="khmer-settings-ap" src="../../../cdn/dev/img/app/12.0/khmer-settings-ap.png">
<img id="khmer-settings-ap" src="../../../cdn/dev/img/app/13.0/khmer-settings-ap.png">
</p><p>
Step 5)
</p><p>
@ -109,18 +127,18 @@
</p><p>
Note: the default 'SIL EuroLatin' keyboard for English cannot be removed.
</p><p>
<img id="settings-khmer-info-ap" src="../../../cdn/dev/img/app/12.0/settings-khmer-info-ap.png">
<img id="settings-khmer-info-ap" src="../../../cdn/dev/img/app/13.0/settings-khmer-info-ap.png">
</p><p>
Step 6)
</p><p>
Press "Delete" to uninstall the keyboard.
</p><p>
<img id="confirm-khmer-delete-ap" src="../../../cdn/dev/img/app/12.0/confirm-khmer-delete-ap.png">
<img id="confirm-khmer-delete-ap" src="../../../cdn/dev/img/app/13.0/confirm-khmer-delete-ap.png">
</p><p>
You'll see a notification when the keyboard is deleted.
</p><p>
<img class="phone" id="uninstall-notification-ap" src="../../../cdn/dev/img/app/12.0/uninstall-notification-ap.png">
<img class="tablet" id="uninstall-notification-at" src="../../../cdn/dev/img/app/12.0/uninstall-notification-at.png">
<img class="phone" id="uninstall-notification-ap" src="../../../cdn/dev/img/app/13.0/uninstall-notification-ap.png">
<img class="tablet" id="uninstall-notification-at" src="../../../cdn/dev/img/app/13.0/uninstall-notification-at.png">
</p>
<h2>Help Index</h2>

View file

@ -15,19 +15,19 @@
<script type='text/javascript' src='../../../cdn/dev/js/keyrenderer.js'></script>
<script type="text/javascript">
// Add a script element as a child of the body
function downloadJS(src) {
var element = document.createElement("script");
element.src = src;
document.body.appendChild(element);
}
function downloadJSAtOnload() {
downloadJS("/cdn/dev/js/jquery1-11-1.min.js");
downloadJS("/cdn/dev/js/kmlive.js");
//downloadJS("/cdn/dev/js/keyrenderer.js");
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
@ -35,23 +35,41 @@
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
<script>
function isIEOnWin81orEarlier() {
// If we are running IE11/or earlier on Windows 8.1 or earlier, then
// the autolink generates filenames that are misrecognised for download links,
// meaning users on those browesrs cannot easily download Keyman.
// Easiest way to test this is to test against navigator.userAgent
// Yes, we get some muddled analytics of cross-site of IE visitors but
// it's a small enough percentage that we don't need to worry about it.
return (navigator.userAgent.indexOf('Trident/') >= 0 && navigator.userAgent.indexOf('Windows NT 6') >= 0) ||
(document.documentMode < 11);
}
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-249828-1', 'auto', {'allowLinker': true});
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
ga('send', 'pageview');
</script>
</head>
ga('create', 'UA-249828-1', 'auto', {'allowLinker': !isIEOnWin81orEarlier()});
if(!isIEOnWin81orEarlier()) {
ga('require', 'linker');
ga('linker:autoLink',
['keyman.com', 'www.keyman.com',
'keymanweb.com', 'www.keymanweb.com',
'help.keyman.com',
'blog.keyman.com',
'donate.keyman.com',
'downloads.keyman.com',
'developer.keyman.com',
'keyman.dev',
'keyman.blog',
'blog.tavultesoft.com',
'www.tavultesoft.com', 'tavultesoft.com', 'secure.tavultesoft.com'] );
}
ga('send', 'pageview');
</script>
</head>
<body data-device="Unknown">
<div id="container">
<div class="header">

View file

@ -60,7 +60,7 @@ android {
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'
implementation 'com.google.android.material:material:1.0.0'
implementation 'commons-io:commons-io:2.6'

View file

@ -56,7 +56,12 @@ public class CloudDownloadMgr{
{
if(isInitialized)
return;
aContext.registerReceiver(completeListener,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
try {
aContext.registerReceiver(completeListener, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
} catch (IllegalStateException e) {
String message = "initialize error: ";
Log.e(TAG, message + e);
}
isInitialized = true;
}
@ -68,7 +73,12 @@ public class CloudDownloadMgr{
{
if(!isInitialized)
return;
aContext.unregisterReceiver(completeListener);
try {
aContext.unregisterReceiver(completeListener);
} catch (IllegalStateException e) {
String message = "shutdown error: ";
Log.e(TAG, message + e);
}
isInitialized = false;
}
@ -184,8 +194,10 @@ public class CloudDownloadMgr{
ICloudDownloadCallback<ModelType,ResultType> aCallback,
CloudApiTypes.CloudApiParam... params)
{
if(!isInitialized)
throw new IllegalStateException("Downloadmanager is not initialize. Call KMManger.initialize before");
if(!isInitialized) {
Log.w(TAG, "Downloadmanager not initialized. Initializing CloudDownloadMgr.");
initialize(aContext);
}
synchronized (downloadSetByDownloadIdentifier) {

View file

@ -140,7 +140,7 @@ public class ResourcesUpdateTool implements KeyboardEventHandler.OnKeyboardDownl
public static void createNotificationChannel(Context aContext) {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && SEND_UPDATE_NOTIFICATIONS) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && SEND_UPDATE_NOTIFICATIONS && aContext != null) {
CharSequence name = aContext.getString(R.string.keyboard_updates_channel);
String description = aContext.getString(R.string.keyboard_updates_available);
int importance = NotificationManager.IMPORTANCE_DEFAULT;

View file

@ -33,7 +33,7 @@ repositories {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'
implementation 'com.google.android.material:material:1.0.0'
api(name: 'keyman-engine', ext: 'aar')
implementation "com.google.firebase:firebase-core:17.2.1"

Some files were not shown because too many files have changed in this diff Show more