feat(ios): adds a good comparison unit test for the no-defaults one

This commit is contained in:
jahorton 2021-03-12 15:51:51 +07:00
parent 28c26b03c9
commit 6f75842e1e
49 changed files with 3540 additions and 2 deletions

View file

@ -214,6 +214,7 @@
CEA1486D2407808F00C6ECD2 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CEA1486F2407808F00C6ECD2 /* Localizable.strings */; };
CEA14870240780E100C6ECD2 /* ResourceInfoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEA14872240780E100C6ECD2 /* ResourceInfoView.xib */; };
CEA31E5825FB51D500534484 /* No-defaults early 14.0.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CEA31E5725FB51D400534484 /* No-defaults early 14.0.bundle */; };
CEA31E6025FB5BC200534484 /* Early 14.0 with defaults.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CEA31E5F25FB5BC200534484 /* Early 14.0 with defaults.bundle */; };
CEA6BA9D249872E8002D44CE /* Simple 13.0 Migration.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CEA6BA9C249872E7002D44CE /* Simple 13.0 Migration.bundle */; };
CEA70CCF24CAC3AE001C12E6 /* Obsoletions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA70CCE24CAC3AE001C12E6 /* Obsoletions.swift */; };
CEA9670924BEC4030035AACF /* ResourceUpdateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA9670824BEC4030035AACF /* ResourceUpdateTests.swift */; };
@ -516,6 +517,7 @@
CEA14874240780EF00C6ECD2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/ResourceInfoView.strings; sourceTree = "<group>"; };
CEA148772407869200C6ECD2 /* km */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = km; path = km.lproj/ResourceInfoView.strings; sourceTree = "<group>"; };
CEA31E5725FB51D400534484 /* No-defaults early 14.0.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = "No-defaults early 14.0.bundle"; sourceTree = "<group>"; };
CEA31E5F25FB5BC200534484 /* Early 14.0 with defaults.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = "Early 14.0 with defaults.bundle"; sourceTree = "<group>"; };
CEA6BA9C249872E7002D44CE /* Simple 13.0 Migration.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = "Simple 13.0 Migration.bundle"; sourceTree = "<group>"; };
CEA70CCE24CAC3AE001C12E6 /* Obsoletions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Obsoletions.swift; sourceTree = "<group>"; };
CEA9670824BEC4030035AACF /* ResourceUpdateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResourceUpdateTests.swift; sourceTree = "<group>"; };
@ -889,6 +891,7 @@
CE37C38923FCC9AF007031C6 /* resources */ = {
isa = PBXGroup;
children = (
CEA31E5F25FB5BC200534484 /* Early 14.0 with defaults.bundle */,
CEA31E5725FB51D400534484 /* No-defaults early 14.0.bundle */,
CEA9670C24BEEFF80035AACF /* khmer_angkor update-base.bundle */,
CE02EE0B24A5863100D58F92 /* Queries.bundle */,
@ -1349,6 +1352,7 @@
CE02EE0C24A5863100D58F92 /* Queries.bundle in Resources */,
CEA6BA9D249872E8002D44CE /* Simple 13.0 Migration.bundle in Resources */,
CEF888D323FE6ADF00667693 /* Simple 10.0 Migration.bundle in Resources */,
CEA31E6025FB5BC200534484 /* Early 14.0 with defaults.bundle in Resources */,
CE37C38F23FCD52F007031C6 /* Lexical Models.bundle in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;

View file

@ -18,12 +18,25 @@ class MigrationTests: XCTestCase {
// Uncomment this and set up whatever resources are needed for your test bundle in order to build one!
func testForMigrationBundleConstruction() {
do {
if let sil_euro_latin = try ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.Keyboards.silEuroLatinKMP) as? KeyboardKeymanPackage {
try ResourceFileManager.shared.install(resourceWithID: TestUtils.Keyboards.sil_euro_latin.fullID, from: sil_euro_latin)
} else {
XCTFail()
}
if let sencoten_kbd_kmp = try ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.Keyboards.fvSencotenKMP) as? KeyboardKeymanPackage {
try ResourceFileManager.shared.install(resourceWithID: TestUtils.Keyboards.fv_sencoten.fullID, from: sencoten_kbd_kmp)
} else {
XCTFail()
}
if let mtntKMP = try ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.LexicalModels.mtntKMP) as? LexicalModelKeymanPackage {
try ResourceFileManager.shared.install(resourceWithID: TestUtils.LexicalModels.mtnt.fullID,
from: mtntKMP)
} else {
XCTFail()
}
if let sencoten_lm_kmp = try ResourceFileManager.shared.prepareKMPInstall(from: TestUtils.LexicalModels.sencotenKMP) as? LexicalModelKeymanPackage {
try ResourceFileManager.shared.install(resourceWithID: TestUtils.LexicalModels.sencoten.fullID,
from: sencoten_lm_kmp)
@ -31,7 +44,6 @@ class MigrationTests: XCTestCase {
XCTFail()
}
} catch {
XCTFail("File system commands failed.")
}
@ -43,13 +55,37 @@ class MigrationTests: XCTestCase {
// Note: you may need to manually pause at a certain (marked) point within this method
// for everything to successfully write out!
if let saveState = try? TestUtils.EngineStateBundler.createBundle(withName: "No-defaults early 14.0") {
if let saveState = try? TestUtils.EngineStateBundler.createBundle(withName: "Early 14.0 with defaults") {
self.add(saveState)
} else {
XCTFail()
}
}
func testSimpleEarly14Migration() {
// A case where the user only has SENCOTEN installed for both keyboard & lexical model.
// sil_euro_latin was explicitly removed by the user.
TestUtils.Migrations.applyBundleToFileSystem(TestUtils.Migrations.simple_14)
Migrations.migrate(storage: Storage.active)
Migrations.updateResources(storage: Storage.active)
let userDefaults = Storage.active.userDefaults
let userKeyboards = userDefaults.userKeyboards ?? []
let userLexicalModels = userDefaults.userLexicalModels ?? []
XCTAssertEqual(userKeyboards.count, 2)
XCTAssertEqual(userLexicalModels.count, 2)
let kbdSEU = userKeyboards.first(where: { $0.fullID == TestUtils.Keyboards.sil_euro_latin.fullID })
XCTAssertNotNil(kbdSEU)
// Enable once auto-updating
//XCTAssertGreaterThan(Version(kbdSEU!.version)!, Version(TestUtils.Keyboards.sil_euro_latin.version)!)
XCTAssertTrue(userLexicalModels.contains(where: { $0.fullID == TestUtils.LexicalModels.mtnt.fullID }))
XCTAssertTrue(userKeyboards.contains(where: { $0.fullID == TestUtils.Keyboards.fv_sencoten.fullID }))
XCTAssertTrue(userLexicalModels.contains(where: { $0.fullID == TestUtils.LexicalModels.sencoten.fullID }))
}
func testNoDefaultsEarly14Migration() {
// A case where the user only has SENCOTEN installed for both keyboard & lexical model.
// sil_euro_latin was explicitly removed by the user.

View file

@ -30,6 +30,7 @@ extension TestUtils {
static let simple_10 = TestUtils.findSubBundle(forResource: "Simple 10.0 Migration", ofType: ".bundle")
static let noDefault_10 = TestUtils.findSubBundle(forResource: "No-defaults 10.0 Migration", ofType: ".bundle")
static let noDefault_14 = TestUtils.findSubBundle(forResource: "No-defaults early 14.0", ofType: "bundle")
static let simple_14 = TestUtils.findSubBundle(forResource: "Early 14.0 with defaults", ofType: "bundle")
// The default keyboard in version 10.0.
static let european2_font = Font(family: "LatinWeb", source: ["DejaVuSans.ttf"], size: nil)

View file

@ -0,0 +1,39 @@
[Package]
Version=7.0
ExecuteProgram=
ReadMeFile=readme.htm
[StartMenu]
Path=
Create=0
AddUninstallEntry=0
[Info]
Name="SENCOTEN",""
Copyright="(c) 2008-2018 FirstVoices, SIL International. Portions (c) 2006 Chris Harvey",""
Version="9.1",""
Author="",""
WebSite="https://www.firstvoices.com","https://www.firstvoices.com"
[Files]
0="Font Aboriginal Sans Bold","AboriginalSansBOLD.ttf",0
1="Font Aboriginal Sans Bold Italic","AboriginalSansBOLDITALIC.ttf",0
2="Font Aboriginal Sans Italic","AboriginalSansITALIC.ttf",0
3="Font Aboriginal Sans","AboriginalSansREGULAR.ttf",0
4="Font Aboriginal Serif Bold","AboriginalSerifBOLD.ttf",0
5="Font Aboriginal Serif Bold Italic","AboriginalSerifBOLDITALIC.ttf",0
6="Font Aboriginal Serif Italic","AboriginalSerifITALIC.ttf",0
7="Font Aboriginal Serif","AboriginalSerifREGULAR.ttf",0
8="File readme.htm","readme.htm",0
9="File FVLogo.gif","FVLogo.gif",0
10="File keyman.png","keyman.png",0
11="File lgBlue162x31.png","lgBlue162x31.png",0
12="File Sencoten.png","Sencoten.png",0
13="File welcome.htm","welcome.htm",0
14="File fv_sencoten.js","fv_sencoten.js",0
15="File fv_sencoten.kvk","fv_sencoten.kvk",0
16="Keyboard SENCOTEN","fv_sencoten.kmx",0
17="Package information","kmp.inf",0
18="Package information (JSON)","kmp.json",0
[Keyboard0]
Name=SENCOTEN
ID=fv_sencoten
Version=9.1
Language0=str-Latn,Straits Salish (Latin)

View file

@ -0,0 +1,118 @@
{
"system": {
"keymanDeveloperVersion": "10.0.1202.0",
"fileVersion": "7.0"
},
"options": {
"readmeFile": "readme.htm"
},
"info": {
"name": {
"description": "SEN\u0106O\u0166EN"
},
"copyright": {
"description": "(c) 2008-2018 FirstVoices, SIL International. Portions (c) 2006 Chris Harvey"
},
"version": {
"description": "9.1"
},
"author": {
"description": ""
},
"website": {
"description": "https://www.firstvoices.com",
"url": "https://www.firstvoices.com"
}
},
"files": [
{
"name": "AboriginalSansBOLD.ttf",
"description": "Font Aboriginal Sans Bold"
},
{
"name": "AboriginalSansBOLDITALIC.ttf",
"description": "Font Aboriginal Sans Bold Italic"
},
{
"name": "AboriginalSansITALIC.ttf",
"description": "Font Aboriginal Sans Italic"
},
{
"name": "AboriginalSansREGULAR.ttf",
"description": "Font Aboriginal Sans"
},
{
"name": "AboriginalSerifBOLD.ttf",
"description": "Font Aboriginal Serif Bold"
},
{
"name": "AboriginalSerifBOLDITALIC.ttf",
"description": "Font Aboriginal Serif Bold Italic"
},
{
"name": "AboriginalSerifITALIC.ttf",
"description": "Font Aboriginal Serif Italic"
},
{
"name": "AboriginalSerifREGULAR.ttf",
"description": "Font Aboriginal Serif"
},
{
"name": "readme.htm",
"description": "File readme.htm"
},
{
"name": "FVLogo.gif",
"description": "File FVLogo.gif"
},
{
"name": "keyman.png",
"description": "File keyman.png"
},
{
"name": "lgBlue162x31.png",
"description": "File lgBlue162x31.png"
},
{
"name": "Sencoten.png",
"description": "File Sencoten.png"
},
{
"name": "welcome.htm",
"description": "File welcome.htm"
},
{
"name": "fv_sencoten.js",
"description": "File fv_sencoten.js"
},
{
"name": "fv_sencoten.kvk",
"description": "File fv_sencoten.kvk"
},
{
"name": "fv_sencoten.kmx",
"description": "Keyboard SEN\u0106O\u0166EN"
},
{
"name": "kmp.inf",
"description": "Package information"
},
{
"name": "kmp.json",
"description": "Package information (JSON)"
}
],
"keyboards": [
{
"name": "SEN\u0106O\u0166EN",
"id": "fv_sencoten",
"version": "9.1",
"languages": [
{
"name": "Straits Salish (Latin)",
"id": "str-Latn"
}
]
}
]
}

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<title>SENĆOŦEN Keyboard</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<h1>SENĆOŦEN Keyboard</h1>
<p>This keyboard is designed for the SENĆOŦEN language of the BC Coast region of Canada. This is part of a set of keyboards from FirstVoices.</p>
</body>
</html>

View file

@ -0,0 +1,55 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>SENĆOŦEN</title>
<style type="text/css"> <!--
li {font-size: medium; margin-bottom: 5px; font-family: "Aboriginal Sans"; }
p {font-family: "Aboriginal Sans"; }
h2 {font-family: "Aboriginal Sans"; }
.legalese { font-size: x-small; }
h3 {font-family: "Aboriginal Sans";}
a:link {color: #0000ee; text-decoration:none;}
a:visited { color: rgb(0,150,0); text-decoration:none;}
a:active { color: rgb(102,117,184); text-decoration:none;}
--> </style>
</head>
<body>
<table width="100%" border="0" cellpadding="0">
<tr>
<td colspan="2"><a href="http://www.firstvoices.ca"><img src="FVLogo.gif" width="200" height="48" border="0" /></a>
<h2><img src="Sencoten.png" alt="" height="198" width="514" border="0" /></h2>
<ul>
<li>All accents are typed after the base character: Ṯ is typed T then Equals =</li>
<li>To type the acute accent use the Apostrophe key — Ć is typed C then Apostophe </li>
<li>To type the slash accent use the Slash key / — Ⱥ is typed A then Slash /</li>
<li>To type the dash accent use the Hyphen key - — Ŧ is typed T then Hyphen -</li>
<li>To type the low line accent use the Equals key = — Ṉ is typed N then Equals =</li>
<li>The original English punctuation keys can be typed by holding down the Right-Alt or Option key. The slash / is typed Right-Alt+Slash (Windows) Option+Slash (Mac).</li>
<li>Opening and closing quotes. For Mac users, Right-Alt is either of the Option Keys.</li>
<ul>
<li>single: Left-Bracket — Right-Bracket</li>
<li>double: “ Shift+Left-Bracket — ” Shift+Right-Bracket</li>
<li>single Right-Alt+Shift+9 — Right-Alt+Shift+0</li>
<li>double « Right-Alt+9 — » Right-Alt+0</li>
</ul>
<h2>Unicode Fonts</h2>
<p>The following fonts have been installed on your computer: <strong>Aboriginal Sans, Aboriginal Serif.</strong> Please use these fonts when typing in your language as they have been specially built to represent your language as accurately as possible. </p>
<h3><a href="http://www.languagegeek.com/font/fontdownload.html">Download the latest version of Aboriginal Sans and Aboriginal Serif</a></h3>
<hr></td>
</tr>
<tr>
<td style="padding: 15px" valign="middle"><a href="https://keyman.com/"><img src="keyman.png" height="31" border="0"/></a></td>
<td valign="middle"><a href="http://www.languagegeek.com"><img src="lgBlue162x31.png" width="162" height="31" border="0"/></a></td>
</tr>
<tr>
<td colspan="2"><p class="legalese">Development of this keyboard layout was funded by FirstVoices and the First Peoples Heritage Language and Culture Council. This keyboard is provided free of charge. </p></td>
</tr>
</table>
</body>
</html>

View file

@ -0,0 +1,187 @@
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
Bitstream Vera Fonts Copyright
------------------------------
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license ("Fonts") and associated
documentation files (the "Font Software"), to reproduce and distribute the
Font Software, including without limitation the rights to use, copy, merge,
publish, distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to the
following conditions:
The above copyright and trademark notices and this permission notice shall
be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional glyphs or characters may be added to the Fonts, only if the fonts
are renamed to names not containing either the words "Bitstream" or the word
"Vera".
This License becomes null and void to the extent applicable to Fonts or Font
Software that has been modified and is distributed under the "Bitstream
Vera" names.
The Font Software may be sold as part of a larger software package but no
copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font Software
without prior written authorization from the Gnome Foundation or Bitstream
Inc., respectively. For further information, contact: fonts at gnome dot
org.
Arev Fonts Copyright
------------------------------
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the fonts accompanying this license ("Fonts") and
associated documentation files (the "Font Software"), to reproduce
and distribute the modifications to the Bitstream Vera Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to
the following conditions:
The above copyright and trademark notices and this permission notice
shall be included in all copies of one or more of the Font Software
typefaces.
The Font Software may be modified, altered, or added to, and in
particular the designs of glyphs or characters in the Fonts may be
modified and additional glyphs or characters may be added to the
Fonts, only if the fonts are renamed to names not containing either
the words "Tavmjong Bah" or the word "Arev".
This License becomes null and void to the extent applicable to Fonts
or Font Software that has been modified and is distributed under the
"Tavmjong Bah Arev" names.
The Font Software may be sold as part of a larger software package but
no copy of one or more of the Font Software typefaces may be sold by
itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the name of Tavmjong Bah shall not
be used in advertising or otherwise to promote the sale, use or other
dealings in this Font Software without prior written authorization
from Tavmjong Bah. For further information, contact: tavmjong @ free
. fr.
TeX Gyre DJV Math
-----------------
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
(on behalf of TeX users groups) are in public domain.
Letters imported from Euler Fraktur from AMSfonts are (c) American
Mathematical Society (see below).
Bitstream Vera Fonts Copyright
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
is a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license (“Fonts”) and associated
documentation
files (the “Font Software”), to reproduce and distribute the Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute,
and/or sell copies of the Font Software, and to permit persons to whom
the Font Software is furnished to do so, subject to the following
conditions:
The above copyright and trademark notices and this permission notice
shall be
included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional
glyphs or characters may be added to the Fonts, only if the fonts are
renamed
to names not containing either the words “Bitstream” or the word “Vera”.
This License becomes null and void to the extent applicable to Fonts or
Font Software
that has been modified and is distributed under the “Bitstream Vera”
names.
The Font Software may be sold as part of a larger software package but
no copy
of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
INABILITY TO USE
THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the names of GNOME, the GNOME
Foundation,
and Bitstream Inc., shall not be used in advertising or otherwise to promote
the sale, use or other dealings in this Font Software without prior written
authorization from the GNOME Foundation or Bitstream Inc., respectively.
For further information, contact: fonts at gnome dot org.
AMSFonts (v. 2.2) copyright
The PostScript Type 1 implementation of the AMSFonts produced by and
previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
available for general use. This has been accomplished through the
cooperation
of a consortium of scientific publishers with Blue Sky Research and Y&Y.
Members of this consortium include:
Elsevier Science IBM Corporation Society for Industrial and Applied
Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
In order to assure the authenticity of these fonts, copyright will be
held by
the American Mathematical Society. This is not meant to restrict in any way
the legitimate use of the fonts, such as (but not limited to) electronic
distribution of documents containing these fonts, inclusion of these fonts
into other public domain or commercial font collections or computer
applications, use of the outline data to create derivative fonts and/or
faces, etc. However, the AMS does require that the AMS copyright notice be
removed from any derivative versions of the fonts which have been altered in
any way. In addition, to ensure the fidelity of TeX documents using Computer
Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
has requested that any alterations which yield different font metrics be
given a different name.
$Id$

View file

@ -0,0 +1,418 @@
[Package]
Version=7.0
ExecuteProgram=
ReadMeFile=readme.htm
[StartMenu]
Path=
Create=0
AddUninstallEntry=0
[Info]
Version="1.9.1",""
Name="EuroLatin (SIL)",""
Copyright="Copyright (C) 1994-2020 SIL International",""
[Files]
0="File sil_euro_latin.js","sil_euro_latin.js",0
1="Keyboard EuroLatin (SIL)","sil_euro_latin.kmx",0
2="File readme.htm","readme.htm",0
3="File usage.htm","usage.htm",0
4="File lowercase.png","lowercase.png",0
5="File numbers.png","numbers.png",0
6="File prefix.png","prefix.png",0
7="File symbols.png","symbols.png",0
8="File welcome.htm","welcome.htm",0
9="File digraphs.png","digraphs.png",0
10="File currency.png","currency.png",0
11="File uppercase.png","uppercase.png",0
12="File options.htm","options.htm",0
13="File touch-currency.png","touch-currency.png",0
14="File touch-default.png","touch-default.png",0
15="File touch-numeric.png","touch-numeric.png",0
16="File touch-shift.png","touch-shift.png",0
17="File touch-symbol.png","touch-symbol.png",0
18="Font DejaVu Sans","DejaVuSans.ttf",0
19="File LICENSE.txt","LICENSE.txt",0
20="Package information","kmp.inf",0
21="Package information (JSON)","kmp.json",0
[Keyboard0]
Name=EuroLatin (SIL)
ID=sil_euro_latin
Version=1.9.1
Language0=aae-Latn,Arbëreshë Albanian
Language1=acf-Latn,Saint Lucian Creole French
Language2=act-Latn,Achterhoeks
Language3=af,Afrikaans
Language4=aig-Latn,Antigua and Barbuda Creole English
Language5=ale-Latn,Aleut
Language6=aln-Latn,Gheg Albanian
Language7=als-Latn,Tosk Albanian
Language8=an-Latn,Aragonese
Language9=ast-Latn,Asturian
Language10=bah-Latn,Bahamas Creole English
Language11=bar-Latn,Bavarian
Language12=bch-Latn,Bariai
Language13=bda-Latn,Bayot
Language14=bgx-Latn,Balkan Gagauz Turkish
Language15=bi-Latn,Bislama
Language16=bjt-Latn,Balanta-Ganja
Language17=ble-Latn,Balanta-Kentohe
Language18=bs,Bosnian
Language19=br-Latn,Breton
Language20=bsc-Latn,Bassari
Language21=bzj-Latn,Belize Kriol English
Language22=bzk-Latn,Nicaragua Creole English
Language23=cae-Latn,Lehar
Language24=ca,Catalan
Language25=cs,Czech
Language26=cim-Latn,Cimbrian
Language27=cks-Latn,Tayo
Language28=kw-Latn,Cornish
Language29=co-Latn,Corsican
Language30=cou-Latn,Wamey
Language31=crh-Latn,Crimean Tatar
Language32=crs-Latn,Seselwa Creole French
Language33=csb-Latn,Kashubian
Language34=csk-Latn,Jola-Kasa
Language35=cwt-Latn,Kuwaataay
Language36=cy,Welsh
Language37=da,Danish
Language38=de,German
Language39=drt-Latn,Drents
Language40=dsb,Lower Sorbian
Language41=dyo-Latn,Jola-Fonyi
Language42=eja-Latn,Ejamat
Language43=ems-Latn,Pacific Gulf Yupik
Language44=en,English
Language45=eo,Esperanto
Language46=esi-Latn,North Alaskan Inupiatun
Language47=ess-Latn,Central Siberian Yupik
Language48=et,Estonian
Language49=esu-Latn,Central Yupik
Language50=eu,Basque
Language51=ext-Latn,Extremaduran
Language52=fo,Faroese
Language53=fap-Latn,Palor
Language54=fax-Latn,Fala
Language55=ffm-Latn,Maasina Fulfulde
Language56=fil-Latn,Filipino
Language57=fi,Finnish
Language58=fit-Latn,Tornedalen Finnish
Language59=fkv-Latn,Kven Finnish
Language60=fly-Latn,Flaaitaal
Language61=fr,French
Language62=frc-Latn,Cajun French
Language63=frk-Latn,Frankish
Language64=frp-Latn,Arpitan
Language65=frr,Northern Frisian
Language66=frs,Eastern Frisian
Language67=fy,Western Frisian
Language68=fub-Latn,Adamawa Fulfulde
Language69=fue-Latn,Borgu Fulfulde
Language70=fuf-Latn,Pular
Language71=fuh-Latn,Western Niger Fulfulde
Language72=ff-Latn,Fulah
Language73=fuq-Latn,Central-Eastern Niger Fulfulde
Language74=fur-Latn,Friulian
Language75=fuv-Latn,Nigerian Fulfulde
Language76=gag-Latn,Gagauz
Language77=gcf-Latn,Guadeloupean Creole French
Language78=gcr-Latn,Guianese Creole French
Language79=gct-Latn,Colonia Tovar German
Language80=geh-Latn,Hutterite German
Language81=ghc-Latn,Hiberno-Scottish Gaelic
Language82=gd-Latn,Scottish Gaelic
Language83=ga,Irish
Language84=gl,Galician
Language85=gv,Manx
Language86=gos-Latn,Gronings
Language87=gsl-Latn,Gusilay
Language88=gsw,Swiss German
Language89=gul-Latn,Sea Island Creole English
Language90=gyn-Latn,Guyanese Creole English
Language91=ht,Haitian
Language92=sh-Latn,Serbo-Croatian
Language93=hr,Croatian
Language94=hsb,Upper Sorbian
Language95=hu,Hungarian
Language96=hwc-Latn,Hawai'i Creole English
Language97=icr-Latn,Islander Creole English
Language98=ikt-Latn,Inuinnaqtun
Language99=esk-Latn,Northwest Alaska Inupiatun
Language100=is,Icelandic
Language101=it,Italian
Language102=jam-Latn,Jamaican Creole English
Language103=jut-Latn,Jutish
Language104=kl,Kalaallisut
Language105=kea-Latn,Kabuverdianu
Language106=kmv-Latn,Karipúna Creole French
Language107=knf-Latn,Mankanya
Language108=kqe-Latn,Kalagan
Language109=krl-Latn,Karelian
Language110=krx-Latn,Karon
Language111=ksh-Latn,Kölsch
Language112=ktu-Latn,Kituba (Democratic Republic of Congo)
Language113=lad-Latn,Ladino
Language114=la,Latin
Language115=lv,Latvian
Language116=lij-Latn,Ligurian
Language117=li-Latn,Limburgan
Language118=lt,Lithuanian
Language119=liv-Latn,Liv
Language120=lld-Latn,Ladin
Language121=lmo-Latn,Lombard
Language122=lou-Latn,Louisiana Creole
Language123=lb,Luxembourgish
Language124=lud-Latn,Ludian
Language125=mey-Latn,Hassaniyya
Language126=mfe-Latn,Morisyen
Language127=mfv-Latn,Mandjak
Language128=mkw-Latn,Kituba (Congo)
Language129=mt,Maltese
Language130=mwl-Latn,Mirandese
Language131=nap-Latn,Neapolitan
Language132=nd,North Ndebele
Language133=nds,Low German
Language134=ndv-Latn,Ndut
Language135=nl,Dutch
Language136=no,Norwegian
Language137=oc-Latn,Occitan (post 1500)
Language138=olo-Latn,Livvi
Language139=oor-Latn,Oorlams
Language140=pap-Latn,Papiamento
Language141=pbo-Latn,Papel
Language142=pbp-Latn,Badyara
Language143=pcd-Latn,Picard
Language144=pdc-Latn,Pennsylvania German
Language145=pdt-Latn,Plautdietsch
Language146=pfl-Latn,Pfaelzisch
Language147=pis-Latn,Pijin
Language148=pms-Latn,Piemontese
Language149=pl,Polish
Language150=pt,Portuguese
Language151=prg-Latn,Prussian
Language152=qub-Latn,Huallaga Huánuco Quechua
Language153=qud-Latn,Calderón Highland Quichua
Language154=qu,Quechua
Language155=quf-Latn,Lambayeque Quechua
Language156=qug-Latn,Chimborazo Highland Quichua
Language157=quh-Latn,South Bolivian Quechua
Language158=quk-Latn,Chachapoyas Quechua
Language159=qul-Latn,North Bolivian Quechua
Language160=qup-Latn,Southern Pastaza Quechua
Language161=qur-Latn,Yanahuanca Pasco Quechua
Language162=qus-Latn,Santiago del Estero Quichua
Language163=quw-Latn,Tena Lowland Quichua
Language164=qux-Latn,Yauyos Quechua
Language165=quy-Latn,Ayacucho Quechua
Language166=qva-Latn,Ambo-Pasco Quechua
Language167=qvc-Latn,Cajamarca Quechua
Language168=qve-Latn,Eastern Apurímac Quechua
Language169=qvh-Latn,Huamalíes-Dos de Mayo Huánuco Quechua
Language170=qvi-Latn,Imbabura Highland Quichua
Language171=qvj-Latn,Loja Highland Quichua
Language172=qvl-Latn,Cajatambo North Lima Quechua
Language173=qvm-Latn,Margos-Yarowilca-Lauricocha Quechua
Language174=qvn-Latn,North Junín Quechua
Language175=qvo-Latn,Napo Lowland Quechua
Language176=qvp-Latn,Pacaraos Quechua
Language177=qvs-Latn,San Martín Quechua
Language178=qvw-Latn,Huaylla Wanca Quechua
Language179=qvz-Latn,Northern Pastaza Quichua
Language180=qwa-Latn,Corongo Ancash Quechua
Language181=qwc-Latn,Classical Quechua
Language182=qwh-Latn,Huaylas Ancash Quechua
Language183=qws-Latn,Sihuas Ancash Quechua
Language184=qxa-Latn,Chiquián Ancash Quechua
Language185=qxc-Latn,Chincha Quechua
Language186=qxh-Latn,Panao Huánuco Quechua
Language187=qxl-Latn,Salasaca Highland Quichua
Language188=qxn-Latn,Northern Conchucos Ancash Quechua
Language189=qxo-Latn,Southern Conchucos Ancash Quechua
Language190=qxp-Latn,Puno Quechua
Language191=qxr-Latn,Cañar Highland Quichua
Language192=qxt-Latn,Santa Ana de Tusi Pasco Quechua
Language193=qxu-Latn,Arequipa-La Unión Quechua
Language194=qxw-Latn,Jauja Wanca Quechua
Language195=rcf-Latn,Réunion Creole French
Language196=rmc-Latn,Carpathian Romani
Language197=rmf-Latn,Kalo Finnish Romani
Language198=rmn-Latn,Balkan Romani
Language199=rmo-Latn,Sinte Romani
Language200=rmw-Latn,Welsh Romani
Language201=rm,Romansh
Language202=rmy-Latn,Vlax Romani
Language203=ro,Romanian
Language204=rop-Latn,Kriol
Language205=rup-Latn,Macedo-Romanian
Language206=ruq-Latn,Megleno Romanian
Language207=sg,Sango
Language208=sav-Latn,Saafi-Saafi
Language209=scn-Latn,Sicilian
Language210=sco-Latn,Scots
Language211=sdc-Latn,Sassarese Sardinian
Language212=sdn-Latn,Gallurese Sardinian
Language213=sju-Latn,Ume Sami
Language214=sli-Latn,Lower Silesian
Language215=sk,Slovak
Language216=sl,Slovenian
Language217=sma-Latn,Southern Sami
Language218=se-Latn,Northern Sami
Language219=smj-Latn,Lule Sami
Language220=smn-Latn,Inari Sami
Language221=sms-Latn,Skolt Sami
Language222=snf-Latn,Noon
Language223=es,Spanish
Language224=spq-Latn,Loreto-Ucayali Spanish
Language225=sq,Albanian
Language226=srm-Latn,Saramaccan
Language227=srn-Latn,Sranan Tongo
Language228=sro-Latn,Campidanese Sardinian
Language229=sr-Latn,Serbian
Language230=srr-Latn,Serer
Language231=ss,Swati
Language232=stq-Latn,Saterfriesisch
Language233=svc-Latn,Vincentian Creole English
Language234=sv,Swedish
Language235=swg-Latn,Swabian
Language236=swh-Latn,Swahili (individual language)
Language237=sxu-Latn,Upper Saxon
Language238=szl-Latn,Silesian
Language239=tcs-Latn,Torres Strait Creole
Language240=tl,Tagalog
Language241=tpi,Tok Pisin
Language242=tk-Latn,Turkmen
Language243=tr,Turkish
Language244=twd-Latn,Twents
Language245=vec-Latn,Venetian
Language246=vep-Latn,Veps
Language247=vic-Latn,Virgin Islands Creole English
Language248=vls-Latn,Vlaams
Language249=vmf-Latn,Mainfränkisch
Language250=vot-Latn,Votic
Language251=wae-Latn,Walser
Language252=wep-Latn,Westphalien
Language253=wa-Latn,Walloon
Language254=wof-Latn,Gambian Wolof
Language255=wo-Latn,Wolof
Language256=wym-Latn,Wymysorys
Language257=xav-Latn,Xavánte
Language258=xh,Xhosa
Language259=yo-Latn,Yoruba
Language260=zaa-Latn,Sierra de Juárez Zapotec
Language261=zab-Latn,Western Tlacolula Valley Zapotec
Language262=zac-Latn,Ocotlán Zapotec
Language263=zad-Latn,Cajonos Zapotec
Language264=zae-Latn,Yareni Zapotec
Language265=zaf-Latn,Ayoquesco Zapotec
Language266=zam-Latn,Miahuatlán Zapotec
Language267=zao-Latn,Ozolotepec Zapotec
Language268=zai-Latn,Isthmus Zapotec
Language269=zaq-Latn,Aloápam Zapotec
Language270=zar-Latn,Rincón Zapotec
Language271=zas-Latn,Santo Domingo Albarradas Zapotec
Language272=zat-Latn,Tabaa Zapotec
Language273=zav-Latn,Yatzachi Zapotec
Language274=zaw-Latn,Mitla Zapotec
Language275=zax-Latn,Xadani Zapotec
Language276=zca-Latn,Coatecas Altas Zapotec
Language277=zch-Hani,Central Hongshuihe Zhuang
Language278=zea-Latn,Zeeuws
Language279=zeh-Hani,Eastern Hongshuihe Zhuang
Language280=zgb-Hani,Guibei Zhuang
Language281=zgm-Hani,Minz Zhuang
Language282=zgn-Hani,Guibian Zhuang
Language283=zyb-Latn,Yongbei Zhuang
Language284=zhd-Latn,Dai Zhuang
Language285=zhn-Latn,Nong Zhuang
Language286=zlj-Latn,Liujiang Zhuang
Language287=zln-Hani,Lianshan Zhuang
Language288=zlq-Hani,Liuqian Zhuang
Language289=zoo-Latn,Asunción Mixtepec Zapotec
Language290=zpa-Latn,Lachiguiri Zapotec
Language291=zpb-Latn,Yautepec Zapotec
Language292=zpc-Latn,Choapan Zapotec
Language293=zpd-Latn,Southeastern Ixtlán Zapotec
Language294=zpe-Latn,Petapa Zapotec
Language295=zpf-Latn,San Pedro Quiatoni Zapotec
Language296=zpg-Latn,Guevea De Humboldt Zapotec
Language297=zph-Latn,Totomachapan Zapotec
Language298=zpi-Latn,Santa María Quiegolani Zapotec
Language299=zpj-Latn,Quiavicuzas Zapotec
Language300=zpk-Latn,Tlacolulita Zapotec
Language301=zpl-Latn,Lachixío Zapotec
Language302=zpm-Latn,Mixtepec Zapotec
Language303=zpn-Latn,Santa Inés Yatzechi Zapotec
Language304=zpo-Latn,Amatlán Zapotec
Language305=zpp-Latn,El Alto Zapotec
Language306=zpq-Latn,Zoogocho Zapotec
Language307=zpr-Latn,Santiago Xanica Zapotec
Language308=zps-Latn,Coatlán Zapotec
Language309=zpt-Latn,San Vicente Coatlán Zapotec
Language310=zpu-Latn,Yalálag Zapotec
Language311=zpv-Latn,Chichicapan Zapotec
Language312=zpw-Latn,Zaniza Zapotec
Language313=zpx-Latn,San Baltazar Loxicha Zapotec
Language314=zpy-Latn,Mazaltepec Zapotec
Language315=zpz-Latn,Texmelucan Zapotec
Language316=zqe-Latn,Qiubei Zhuang
Language317=zsr-Latn,Southern Rincon Zapotec
Language318=zte-Latn,Elotepec Zapotec
Language319=ztg-Latn,Xanaguía Zapotec
Language320=ztl-Latn,Lapaguía-Guivini Zapotec
Language321=ztm-Latn,San Agustín Mixtepec Zapotec
Language322=ztn-Latn,Santa Catarina Albarradas Zapotec
Language323=ztp-Latn,Loxicha Zapotec
Language324=ztq-Latn,Quioquitani-Quierí Zapotec
Language325=zts-Latn,Tilquiapan Zapotec
Language326=ztt-Latn,Tejalapan Zapotec
Language327=ztu-Latn,Güilá Zapotec
Language328=ztx-Latn,Zaachila Zapotec
Language329=zty-Latn,Yatee Zapotec
Language330=zu,Zulu
Language331=zyg-Nshu,Yang Zhuang
Language332=zyj-Latn,Youjiang Zhuang
Language333=zyn-Hani,Yongnan Zhuang
Language334=gn,Guarani
Language335=nhd-Latn,Chiripá
Language336=gui-Latn,Eastern Bolivian Guaraní
Language337=gun-Latn,Mbyá Guaraní
Language338=gnw-Latn,Western Bolivian Guaraní
Language339=nhn-Latn,Central Nahuatl
Language340=nch-Latn,Central Huasteca Nahuatl
Language341=ncx-Latn,Central Puebla Nahuatl
Language342=nci-Latn,Classical Nahuatl
Language343=naz-Latn,Coatepec Nahuatl
Language344=nhe-Latn,Eastern Huasteca Nahuatl
Language345=ngu-Latn,Guerrero Nahuatl
Language346=azz-Latn,Highland Puebla Nahuatl
Language347=nhq-Latn,Huaxcaleca Nahuatl
Language348=nhk-Latn,Isthmus-Cosoleacaque Nahuatl
Language349=nhx-Latn,Isthmus-Mecayapan Nahuatl
Language350=nhp-Latn,Isthmus-Pajapan Nahuatl
Language351=ncl-Latn,Michoacán Nahuatl
Language352=nhm-Latn,Morelos Nahuatl
Language353=nhy-Latn,Northern Oaxaca Nahuatl
Language354=ncj-Latn,Northern Puebla Nahuatl
Language355=nht-Latn,Ometepec Nahuatl
Language356=nlv-Latn,Orizaba Nahuatl
Language357=nhz-Latn,Santa María La Alta Nahuatl
Language358=nsu-Latn,Sierra Negra Nahuatl
Language359=npl-Latn,Southeastern Puebla Nahuatl
Language360=nhv-Latn,Temascaltepec Nahuatl
Language361=nhg-Latn,Tetelcingo Nahuatl
Language362=nuz-Latn,Tlamacazapa Nahuatl
Language363=nhw-Latn,Western Huasteca Nahuatl
Language364=nhi-Latn,Zacatlán-Ahuacatlán-Tepetzintla Nahuatl
Language365=chy-Latn,Cheyenne (Latin)
Language366=azd-Latn,Eastern Durango Nahuatl (Latin)
Language367=azn-Latn,Western Durango Nahuatl (Latin)
Language368=egl-Latn,Emilian (Latin)
Language369=fuc-Latn,Pulaar (Latin)
Language370=gaz-Latn,West Central Oromo (Latin)
Language371=gug-Latn,Paraguayan Guaraní (Latin)
Language372=ik-Latn,Inupiaq (Latin)
Language373=quz-Latn,Cusco Quechua (Latin)
Language374=rgn-Latn,Romagnol (Latin)
Language375=rom-Latn,Romany (Latin)
Language376=stl-Latn,Stellingwerfs (Latin)
Language377=za-Latn,Zhuang (Latin)
Language378=zap-Latn,Zapotec (Latin)

View file

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>European Latin Keyboard Options</title>
<style type='text/css'>
html,
body {
padding: 0;
margin: 0;
overflow: hidden
}
#size {
padding: 12px;
border: solid 1px black;
background: #ffffff
}
p {
font: 10pt Tahoma
}
h1 {
font: bold 16pt Tahoma;
margin-top: 4px;
}
#ok_button,
#cancel_button {
width: 100px
}
#buttons {
text-align: right;
}
#formopt {
padding: 2px 24px
}
</style>
</head>
<body>
<div id='size'>
<h1>European Latin Keyboard Options</h1>
<form method='get' action='keyman:ok'>
<div id='formopt'>
<p>Select the modifier for 'action' keys:</p>
<p>
<input type='radio' value='' name='option_key' id='option_key_unshifted' checked='checked' /><label for='option_key_unshifted'> Unshifted</label><br />
<input type='radio' value='RALT' name='option_key' id='option_key_ralt' /><label for='option_key_ralt'> Right Alt</label> (note: this may not be compatible with some European base layouts)<br />
<input type='radio' value='RCTRL' name='option_key' id='option_key_rctrl' /><label for='option_key_rctrl'> Right Ctrl</label> (some laptops do not have a right Ctrl key)
</p>
</div>
<p id='buttons'><input id='ok_button' type='submit' value='OK' /> <input id='cancel_button' type='reset' onclick='location.href="keyman:cancel"; return false;' value='Cancel' /></p>
</form>
</div>
<script type='text/javascript'>
(function() {
var loc = window.location.search.substr(1).split('&');
for (var i = 0; i < loc.length; i++) {
var param = loc[i].split('=');
var key = decodeURIComponent(param[0]);
var val = decodeURIComponent(param[1]);
var elem = document.forms[0].elements[key];
if (elem) {
if (typeof elem !== 'object' || typeof elem.length !== 'number') elem = [elem];
for (var j = 0; j < elem.length; j++)
if (elem[j].type == 'checkbox' || elem[j].type == 'radio')
elem[j].checked = elem[j].value == val;
else
elem[j].value = val;
}
}
})();
</script>
</body>
</html>

View file

@ -0,0 +1,227 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EuroLatin Keyboard</title>
<style type='text/css'>
table.chars {
border-collapse: collapse;
}
table.chars td {
border: solid 1px #c0c0c0;
font: 1.2em Tahoma;
width: 1.5em;
text-align: center;
cursor: default
}
table.chars th {
border: solid 1px #c0c0c0;
font: bold 1.2em Arial;
width: 1.5em;
background: #c0c0c0
}
p {
font: 10pt Tahoma;
}
h1 {
font: bold 16pt Tahoma;
color: #4444cc
}
h2 {
font: bold 12pt Tahoma;
color: #4444cc
}
table.display tr td {
font: 10pt Tahoma;
border: solid 1px #ccccff;
padding: 4px
}
table.display tr th {
font: bold 10pt Tahoma;
border: solid 1px #ccccff;
padding: 4px;
text-align: left
}
table.display {
border-collapse: collapse;
}
#info {
position: absolute;
background-color: #F6FAB8;
border: solid 1px gray;
padding: 2px;
font: 8pt Arial
}
/* Languages List */
.langs {
clear: right;
float: left;
margin: 0 0 0 16px;
}
.langs div {
font: 8pt Tahoma;
padding: 1px 4px;
}
</style>
</head>
<body>
<h1>EuroLatin keyboard</h1>
<p>This keyboard enables you to type in most Latin-script languages, including all European Latin-script languages. The keyboard uses simple sequences of <code>symbol + character</code> to type letters and other characters not available on a standard
keyboard. It is designed for use with any Latin-script hardware keyboard.</p>
<h1 id='languages'>Supported Languages</h1>
<p>Languages supported by this keyboard include:</p>
<div class='langs'>
<div>Afrikaans</div>
<div>Albanian (Arbëreshë,<br/>Arvanitika, Gheg, Tosk)</div>
<div>Aragonese</div>
<div>Arpitan</div>
<div>Asturian</div>
<div>Aluet</div>
<div>Bahamas Creole</div>
<div>Balearic</div>
<div>Basque</div>
<div>Bavarian</div>
<div>Bislama</div>
<div>Breton</div>
<div>Bosnian</div>
<div>Catalan</div>
<div>Cimbrian</div>
<div>Corsican</div>
<div>Cornish</div>
<div>Crimean Tatar</div>
<div>Croatian</div>
<div>Czech</div>
<div>Danish</div>
<div>Drents</div>
<div>Dutch</div>
<div>Emiliano-Romagnolo</div>
<div>Esperanto</div>
<div>Estonian</div>
<div>Extremaduran</div>
<div>Fala</div>
<div>Faroese</div>
<div>Finnish (Standard,<br/>Kven, Tornedalen)</div>
<div>Franconian</div>
<div>French</div>
<div>Frisian</div>
<div>Friulian</div>
<div>Gaelic, Scottish</div>
<div>Gagauz (Latin script)</div>
<div>Galician</div>
<div>German</div>
<div>Greenlandic</div>
</div>
<div class='langs'>
<div>Gronings</div>
<div>Guarani</div>
<div>Gullah</div>
<div>Hawaiian</div>
<div>Haitian</div>
<div>Hungarian</div>
<div>Icelandic</div>
<div>Inuktitut</div>
<div>Irish</div>
<div>Istriot</div>
<div>Italian</div>
<div>Jamaican Creole</div>
<div>Jutish</div>
<div>Karelian</div>
<div>Kashubian</div>
<div>Kölsch</div>
<div>Ladin</div>
<div>Latin</div>
<div>Latvian</div>
<div>Ligurian</div>
<div>Limburgish</div>
<div>Lithuanian</div>
<div>Lombard</div>
<div>Luxembourgish</div>
<div>Maltese</div>
<div>Manx</div>
<div>Mirandese</div>
<div>Mócheno</div>
<div>Neapolitan-Calabrese</div>
<div>Norwegian</div>
<div>Nynorsk</div>
<div>Occitan</div>
<div>Oromo</div>
<div>Papiamentu</div>
<div>Pfaelzisch</div>
<div>Picard</div>
<div>Piemontese</div>
<div>Polish</div>
<div>Portuguese</div>
<div>Prussian</div>
<div>Quechua</div>
</div>
<div class='langs'>
<div>Romani</div>
<div>Romanian</div>
<div>Romansch</div>
<div>Saami (Latin Script)</div>
<div>Sallands</div>
<div>Sardinian</div>
<div>Saterfriesisch</div>
<div>Saxon</div>
<div>Scots</div>
<div>Serbian (Latin script)</div>
<div>Sicilian</div>
<div>Silesian</div>
<div>Slovak</div>
<div>Slovenian</div>
<div>Sorbian</div>
<div>Spanish</div>
<div>Stellingwerfs</div>
<div>Swabian</div>
<div>Swahili</div>
<div>Swedish</div>
<div>Swiss German</div>
<div>Tagalog</div>
<div>Tok Pisin</div>
<div>Turkish</div>
<div>Twents</div>
<div>Valencian</div>
<div>Veluws</div>
<div>Venetian</div>
<div>Vlaams</div>
<div>Walloon</div>
<div>Walser</div>
<div>Welsh</div>
<div>Westphalien</div>
<div>Wolof</div>
<div>Xhosa</div>
<div>Yupik</div>
<div>Zapotec</div>
<div>Zeeuws</div>
<div>Zhuang</div>
<div>Zulu</div>
</div>
<div style='clear: both'></div>
<p>This keyboard is available online at <a href='https://keyman.com/keyboards/sil_euro_latin'>keyman.com/keyboards/sil_euro_latin</a></p>
<p>You can access help for this keyboard from the Keyboard Usage tool on the Keyman Desktop toolbar, or from the EuroLatin folder in your Windows Start Menu.</p>
<p>Email <a href='mailto:support@keyman.com'>technical support</a> if you have any further questions.</p>
<p>&copy; 1994-2020 SIL International</p>
</body>
</html>

View file

@ -0,0 +1,328 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EuroLatin (SIL) Keyboard</title>
<style type='text/css'>
html, body { margin: 0; padding: 0; }
#keyboard_europeanlatin_help { text-align: left; background: #f5e3de; font-size: 8pt; font-family: Tahoma; cursor: default; padding: 4px 4px 200px;}
#keyboard_europeanlatin_help table { margin-top: 0; }
#keyboard_europeanlatin_help tr.out td { padding: 4px; border: solid 1px #ad4a28; font-size: 10pt; font-family: Cambria, Tahoma; font-weight: bold; text-align: center; background: white; }
#keyboard_europeanlatin_help th { padding: 2px 2px; font-size: 8pt; font-family: Tahoma; }
#keyboard_europeanlatin_help span.elkey { font-weight: normal; background: #e0e0e0; border: outset 1px; padding: 2px 6px; }
#keyboard_europeanlatin_help th.prompt { text-align: left; white-space: nowrap; }
#keyboard_europeanlatin_help tr.key th.prompt { background: white; border: none; font-weight: normal; text-align: right; }
#keyboard_europeanlatin_help tr.key th.title { background: white; border: none; font-weight: bold; vertical-align: middle; text-align: left; padding: 1px; }
#keyboard_europeanlatin_help tr.key th { min-width: 14px; margin: 2px; font-weight: normal; text-align: center; background: #e0e0e0; border: outset 1px; padding: 2px 2px; }
#keyboard_europeanlatin_help tr.out th.prompt { background: white; border: none; font-weight: normal; text-align: right; }
#keyboard_europeanlatin_help tr.gap th { background: white; border: none; height: 7px; }
#keyboard_europeanlatin_help p { font-weight: bold; }
#keyboard_eurolatin_tabsheets { color: black; border: solid 1px #ad4a28; margin: 0 4px 4px 4px; background: white; z-index: 101; }
.keyboard_eurolatin_tabsheet_selected { display: block; padding: 6px; width: 600px;}
.keyboard_eurolatin_tabsheet { display: none; }
#keyboard_eurolatin_tabs { margin: 4px 4px 0 4px; z-index: 100; }
.keyboard_eurolatin_tab { background: white; color: #ad4a28; border: solid 1px #ad4a28; display: inline; padding: 1px 4px 0px 4px; height: 16px; }
.keyboard_eurolatin_tab_selected { background: white; color: #ad4a28; border: solid 1px #ad4a28; display: inline; padding: 1px 4px; border-bottom: none; margin-top: -1px; height: 18px;}
</style>
<script type='text/javascript'><!--
var KeymanWeb_KeyHoverColor = '#c0c0c0';
/**
toUni: converts string to Unicode U+xxxx characters for callback to Keyman
*/
function touni(t)
{
var s = '';
for(var i = 0; i < t.length; i++)
{
var v = t.charCodeAt(i);
ch = v.toString(16).toUpperCase();
while(ch.length < 4) ch='0'+ch;
if(s != '') s += ' ';
s += 'U+'+ch;
}
return s;
}
function Eurolatin_KT(a,b)
{
var url = 'keyman:insertchars?chars='+encodeURIComponent(touni(a));
location.href = url;
}
function Eurolatin_KSF()
{
}
window.onload = function() {
var e=document.body;
if (typeof e.onselectstart!="undefined") //IE route
e.onselectstart=function(){return false;};
else
{
e.style.MozUserSelect="none";
e.style.KhtmlUserSelect="none";
e.style.UserSelect="none";
}
var ch = e.getElementsByTagName('td');
for(var i = 0; i < ch.length; i++)
{
if(ch[i].attributes['o'])
{
var sxv = ch[i].attributes['x'].value, so = ch[i].attributes['o'].value, sc = ch[i].attributes['c'].value;
if(ch[i].attributes['p']) var sp = ch[i].attributes['p'].value; else var sp = '';
// ch[i].title = 'The following combinations are available: '+so;
var ce = function(tag){return document.createElement(tag);}
var sx = '<table><tr class="key">', sy = '<tr class="out">', sz = (sp == '' ? '' : sy);
var e2 = ce('div');
for(var j = 0; j < sc.length; j++)
{
var chvo = so.charAt(j), chvc = sc.charAt(j), chvp = sp.charAt(j);
/* Special case for characters p umlaut, g tilde because they aren't precomposed */
if(sxv == ':' && chvo == 'p') { chvo = 'p̈'; chvp = 'P̈'; }
if(sxv == '~' && chvo == 'g') { chvo = 'g̃'; chvp = 'G̃'; }
sx += '<th>'+sxv+chvc+'</th>';
sy += '<td>'+chvo+'</td>';
if(sp != '') sz += '<td>'+chvp+'</td>';
}
e2.innerHTML = sx+'</tr>'+sy+'</tr>'+sz+(sz == '' ? '' : '</tr>')+'</table>';
var es = e2.style;
es.background = '#f3ffdf';
es.border = 'solid 1px #ad4a28';
es.padding = '2px';
es.display = 'none';
es.position = 'absolute';
es.left = (ch[i].offsetLeft+4)+'px';
es.top = '24px';
e2.onclick = function() { Eurolatin_KT(); window.event.cancelBubble=true; return false; }
ch[i].kmw_subitems = e2;
ch[i].appendChild(e2);
ch[i].onmouseover = function() { this.style.background = KeymanWeb_KeyHoverColor; this.kmw_subitems.style.left=this.offsetLeft+4+'px'; this.kmw_subitems.style.top=(this.offsetParent.offsetTop+this.offsetTop+this.offsetHeight-2)+'px'; this.kmw_subitems.style.display = 'block'; return false; }
ch[i].onmouseout = function() { this.style.background = ''; this.kmw_subitems.style.display = 'none'; return false; }
}
else
{
ch[i].onmouseover = function() { this.style.background = KeymanWeb_KeyHoverColor; return false; }
ch[i].onmouseout = function() { this.style.background = ''; return false; }
}
ch[i].onclick = function(e) { with(this) { if(attributes['x']) Eurolatin_KT(attributes['x'].value,0); else if(innerHTML != '&nbsp;') Eurolatin_KT(innerHTML); else Eurolatin_KT(''); } if(!e)e=window.event;if(e) e.cancelBubble=true; }
ch[i].onmousedown = function(e) { Eurolatin_KSF(); if(!e)e=window.event;if(e) e.cancelBubble=true; }
}
//e.onclick=function() { Eurolatin_KT(''); return false; }
//e.onmousedown=function() { Eurolatin_KSF(); return false; }
e = document.getElementById('keyboard_eurolatin_tabs');
e2 = document.getElementById('keyboard_eurolatin_tabsheets');
var ch = [document.getElementById('keyboard_eurolatin_letters_tab'), document.getElementById('keyboard_eurolatin_symbols_tab')];
var ch2 = [document.getElementById('keyboard_eurolatin_letters_tabsheet'), document.getElementById('keyboard_eurolatin_symbols_tabsheet')];
for(var i = 0; i < ch.length; i++)
ch[i].onclick = (function(i) { return function(e)
{
for(var j = 0; j < ch.length; j++)
{
ch[j].className = "keyboard_eurolatin_tab" + (i == j ? "_selected" : "");
ch2[j].className = "keyboard_eurolatin_tabsheet" + (i == j ? "_selected" : "");
}
}
})(i);
}
--></script>
</head>
<body>
<div id='keyboard_europeanlatin_help'>
<p style="position: absolute; right: 9px; margin: 0px;"><a href='keyman:welcome'>More help</a></p>
<div id='keyboard_eurolatin_tabs'>
<div class='keyboard_eurolatin_tab_selected' id='keyboard_eurolatin_letters_tab'><b>Letters</b></div>
<div class='keyboard_eurolatin_tab' id='keyboard_eurolatin_symbols_tab'><b>Symbols</b></div>
</div>
<div id='keyboard_eurolatin_tabsheets'>
<div class='keyboard_eurolatin_tabsheet_selected' id='keyboard_eurolatin_letters_tabsheet'>
<table>
<tr class='key'>
<th class='title' rowspan='2'>Accent<br />Marks</th>
<th class='prompt'>Type</th><th>`</th><th>#</th><th>'</th><th>"</th><th>^</th><th>%</th><th>&amp;</th><th>*</th><th>~</th><th>-</th><th>_</th><th>:</th><th>@</th><th>.</th><th>|</th><th>,</th>
</tr>
<tr class='out'>
<th class='prompt'>Result</th>
<td x="`" c="aeinouwy" o="àèìǹòùẁỳ" p="ÀÈÌǸÒÙẀỲ">`</td>
<td x="#" c="aeioru" o="ȁȅȉȍȑȕ" p="ȀȄȈȌȐȔ">&nbsp;̏</td>
<td x="'" c="acegiklmnoprsuwyz" o="áćéǵíḱĺḿńóṕŕśúẃýź" p="ÁĆÉǴÍḰĹḾŃÓṔŔŚÚẂÝŹ">´</td>
<td x='"' c="ou" o="őű" p="ŐŰ">˝</td>
<td x="^" c="aceghijosuwyz" o="âĉêĝĥîĵôŝûŵŷẑ" p="ÂĈÊĜĤÎĴÔŜÛŴŶẐ">ˆ</td>
<td x="%" c="acdeghijklnorstuxz" o="ǎčďěǧȟǐǰǩľňǒřšťǔǯž" p="ǍČĎĚǦȞǏ ǨĽŇǑŘŠŤǓǮŽ">ˇ</td>
<td x="&" c="aeioru" o="ȃȇȋȏȓȗ" p="ȂȆȊȎȒȖ">&nbsp;̑</td>
<td x="*" c="aeghiou" o="ăĕğḫĭŏŭ" p="ĂĔĞḪĬŎŬ">˘</td>
<td x="~" c="aegilnouvy" o="ãẽgĩɫñõũṽỹ" p="ÃẼGĨⱢÑÕŨṼỸ">˜</td>
<td x="-" c="abdeghijlortuyz" o="āƀđēḡħīɉłōɍŧūȳƶ" p="ĀɃĐĒḠĦĪɈŁŌɌŦŪȲƵ">ˉ</td>
<td x='_' c="bdhklnrtz" o="ḇḏẖḵḻṉṟṯẕ" p="ḆḎ ḴḺṈṞṮẔ">&nbsp;̱</td>
<td x=":" c="aehioptuwxy" o="äëḧïöpẗüẅẍÿ" p="ÄËḦÏÖP ÜẄẌŸ">¨</td>
<td x="@" c="auwy" o="åůẘẙ" p="ÅŮ ">˚</td>
<td x="." c="abcdefghijlmnoprstwxyz" o="ȧḃċḋėḟġḣıȷŀṁṅȯṗṙṡṫẇẋẏż" p="ȦḂĊḊĖḞĠḢİ ĿṀṄȮṖṘṠṪẆẊẎŻ">˙</td>
<td x="|" c="abdehiklmnorstuvwyz" o="ạḅḍẹḥịḳḷṃṇọṛṣṭụṿẉỵẓ" p="ẠḄḌẸḤỊḲḶṂṆỌṚṢṬỤṾẈỴẒ">.</td>
<td x="," c="acdeghiklnorstuz" o="ąçḑęģḩįķļņǫŗşţųⱬ" p="ĄÇḐĘĢḨĮĶĻŅǪŖŞŢŲⱫ">¸</td>
</tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='3'>Other<br />Letters</th>
<th class='prompt'>Type <span class='elkey'>=</span> then</th><th>c</th><th>e</th><th>g</th><th>j</th><th>n</th><th>o</th><th>s</th><th>t</th><th>y</th><th>z</th><th>'</th></tr>
<tr class='out'>
<th class='prompt'>Result</th>
<td>ɔ</td>
<td>ə</td>
<td>ɂ</td>
<td>ɲ</td>
<td>ŋ</td>
<td>ɵ</td>
<td>ß</td>
<td>þ</td>
<td>ȝ</td>
<td>ʒ</td>
<td></td>
</tr>
<tr class='out'>
<th class='prompt'></th>
<td>Ɔ</td>
<td>Ə</td>
<td>Ɂ</td>
<td>Ɲ</td>
<td>Ŋ</td>
<td>Ɵ</td>
<td></td>
<td>Þ</td>
<td>Ȝ</td>
<td>Ʒ</td>
<td></td>
</tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='3'><br /></th>
<th class='prompt'>Type <span class='elkey'>\</span> then</th><th>d</th><th>e</th><th>g</th><th>k</th><th>n</th><th>o</th><th>s</th></tr>
<tr class='out'>
<th class='prompt'>Result</th>
<td>ð</td>
<td>ɛ</td>
<td>ǥ</td>
<td rowspan='2'>ĸ</td>
<td rowspan='2'>ʼn</td>
<td>ø</td>
<td rowspan='2'>ſ</td>
</tr>
<tr class='out'>
<th class='prompt'></th>
<td>Ð</td>
<td>Ɛ</td>
<td>Ǥ</td>
<td>Ø</td>
</tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='3'>Digraphs</th>
<th class='prompt'>Type</th><th>a\e</th><th colspan='2'>d\z</th><th>f\i</th><th>f\l</th><th>i\j</th><th colspan='2'>l\j</th><th colspan='2'>n\j</th><th>o\e</th><th>o\i</th></tr>
<tr class='out'>
<th class='prompt'>Result</th>
<td>æ</td>
<td colspan='2'>dž</td>
<td rowspan='2'></td>
<td rowspan='2'></td>
<td>ij</td>
<td colspan='2'>lj</td>
<td colspan='2'>nj</td>
<td>œ</td>
<td>ƣ</td>
</tr>
<tr class='out'>
<th class='prompt'></th>
<td>Æ</td>
<td>Dž</td>
<td>DŽ</td>
<td>IJ</td>
<td>Lj</td>
<td>LJ</td>
<td>Nj</td>
<td>NJ</td>
<td>Œ</td>
<td>Ƣ</td>
</tr>
<tr class='gap'><th colspan='16'></th></tr>
</table>
</div>
<div class='keyboard_eurolatin_tabsheet' id='keyboard_eurolatin_symbols_tabsheet'>
<table>
<tr class='key'>
<th class='title' rowspan='2'>Punctuation<br />and Symbols</th>
<th class='prompt'>Type</th><th>\?</th><th>\!</th><th>&lt;&lt;</th><th>&gt;&gt;</th><th>\f</th><th>\m</th><th>\P</th><th>\S</th><th>\T</th><th>\t</th><th>\|</th><th>\c</th><th>\p</th><th>\r</th><th>t\m</th></tr>
<tr class='out'><th class='prompt'>Result</th><td>¿</td><td>¡</td><td>«</td><td>»</td><td>ª</td><td>º</td><td></td><td>§</td><td></td><td></td><td>¦</td><td>©</td><td></td><td>®</td><td></td></tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='3'><br /></th>
<tr class='key'><th class='prompt'>Type</th><th>\:</th><th>\'</th><th>\,</th><th>\_</th><th>\M</th><th>\N</th><th>\-</th><th>\~</th><th>\...</th><th>\.</th><th>\&gt;</th></tr>
<tr class='out'><th class='prompt'>Result</th><td>¨</td><td>´</td><td>¸</td><td>¯</td><td></td><td></td><td>­</td><td>¬</td><td></td><td>·</td><td></td></tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='2'>Numbers<br />and Fractions</th>
<th class='prompt'>Type</th><th>\+</th><th>\x</th><th>\/</th><th>\*</th><th>\%</th><th>\u</th></tr>
<tr class='out'><th class='prompt'>Result</th><td>±</td><td>×</td><td>÷</td><td>°</td><td></td><td>µ</td></tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='2'><br /></th>
<th class='prompt'>Type</th><th>n\o</th><th>\1</th><th>\2</th><th>\3</th><th>\4</th><th>\5</th><th>\6</th><th>\7</th><th>\8</th><th>\9</th><th>\0</th></tr>
<tr class='out'><th class='prompt'>Result</th><td></td><td>¹</td><td>²</td><td>³</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='2'><br /></th>
<th class='prompt'>Type</th><th>1//2</th><th>1//3</th><th>2//3</th><th>1//4</th><th>3//4</th><th>1//5</th><th>2//5</th><th>3//5</th><th>4//5</th><th>1//6</th><th>5//6</th><th>1//8</th><th>3//8</th><th>5//8</th><th>7//8</th></tr>
<tr class='out'><th class='prompt'>Result</th><td>½</td><td></td><td></td><td>¼</td><td>¾</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='2'>Currency<br />Symbols</th>
<th class='prompt'>Type <span class='elkey'>$</span> then</th><th>c</th><th>e</th><th>f</th><th>h</th><th>l</th><th>n</th><th>N</th><th>p</th><th>P</th><th>r</th><th>R</th><th>w</th><th>y</th></tr>
<tr class='out'><th class='prompt'>Result</th><td>¢</td><td></td><td></td><td></td><td></td><td></td><td></td><td>£</td><td></td><td></td><td style='font-family:Symbola, "DejaVu Serif"'></td><td></td><td>¥</td></tr>
<tr class='gap'><th colspan='16'></th></tr>
<tr class='key'>
<th class='title' rowspan='2'><br /></th>
<th class='prompt'>Type <span class='elkey'>$</span> then</th><th>C</th><th>d</th><th>D</th><th>F</th><th>g</th><th>G</th><th>k</th><th>K</th><th>t</th></tr>
<tr class='out'><th class='prompt'>Result</th><td>¤</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
</table>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,144 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EuroLatin (SIL) Keyboard</title>
<style type='text/css'>
p {
font: 10pt Tahoma;
width: 800px;
}
h1 {
font: bold 16pt Tahoma;
color: maroon;
}
h2 {
font: bold 12pt Tahoma;
color: maroon;
}
h3 {
font: bold 12pt Tahoma;
color: maroon;
}
img {
max-width: 650px;
}
/* Languages List */
.langs {
clear: right;
float: left;
margin: 0 0 0 32px;
}
.langs div {
width: 280px;
padding: 1px 4px;
}
.noprint,
.print {
display: none;
}
@media screen {
.noprint,
.printns {
display: block;
}
.print {
display: none;
}
}
@media print {
.print {
display: block;
}
.noprint,
.printns,
{
display: none;
}
.newpage {
page-break-before: always
}
}
</style>
</head>
<body>
<h1>EuroLatin (SIL) Keyboard</h1>
<p>The EuroLatin keyboard enables you to type in <b>all</b> European languages which use Latin-script, and most Latin-script languages from the rest of the world. The keyboard is designed to be used with any Latin hardware keyboard. It uses simple sequences
of <code>symbol + character</code> to type letters and other characters not available on a standard keyboard.</p>
<h1>Fonts</h1>
<p>Most of the characters in this keyboard are included in the fonts Calibri, Cambria, Arial, and Times New Roman, as well as many other fonts. Some of the characters in this keyboard are only supported by specialty fonts, like Code2000.</p>
<h1>Complete Typing Charts</h1>
<h2>Lowercase Letters</h2>
<p>Type the symbol on the left and then the letter (from the bottom row) to get the character in the chart.</p>
<img src="lowercase.png" />
<h2 class="newpage">Uppercase Letters</h2>
<p>Type the symbol on the left and then the letter (from the bottom row) to get the character in the chart.</p>
<img src="uppercase.png" />
<h2 class="newpage">Digraphs</h2>
<p>Type the characters in the bottom box to get the character in the top box.</p>
<img src="digraphs.png" />
<h2>Punctuation and Symbols</h2>
<p>Type the characters in the bottom box to get the character in the top box.</p>
<p>Note that "\-" outputs the code for <i>soft hyphen</i>, code-point (173, U+00AD).</p>
<img src="symbols.png" />
<h2>Numbers and Fractions</h2>
<p>Type the characters in the bottom box to get the character in the top box.</p>
<img src="numbers.png" />
<h2>Currency Symbols</h2>
<p>Type the characters in the bottom box to get the character in the top box.</p>
<img src="currency.png" />
<h2>Prefix keys</h2>
<p>Type the characters in the bottom box to get the character in the top box.</p>
<img src="prefix.png" />
<div id='osk-phone-container'>
<h2>Mobile Keyboard Layout</h2>
<div id="osk-phone">
<h3>Default</h3>
<img src="touch-default.png">
<h3>Shift</h3>
<img src="touch-shift.png">
<h3>Numeric</h3>
<img src="touch-numeric.png">
<h3>Symbol</h3>
<img src="touch-symbol.png">
<h3>Currency</h3>
<img src="touch-currency.png">
</div>
</div>
<div style='clear: both'></div>
<h1 class='newpage'>Technical Support</h1>
<p>You can access this help again from the Keyboard Usage tool on the Keyman Desktop toolbar</p>
<h1>Keyboard Source</h1>
<p>This keyboard is available online at <a href='https://keyman.com/keyboards/sil_euro_latin'>keyman.com/keyboards/sil_euro_latin</a></p>
<p>&copy; 1994-2020 SIL International</p>
</body>
</html>

View file

@ -0,0 +1,52 @@
{
"system": {
"keymanDeveloperVersion": "12.0.1500.0",
"fileVersion": "12.0"
},
"options": {
"followKeyboardVersion": false
},
"info": {
"author": {
"description": "Eddie Antonio Santos",
"url": "mailto:easantos@ualberta.ca"
},
"copyright": {
"description": "© 2019 National Research Council Canada"
},
"name": {
"description": "English language model mined from MTNT"
},
"version": {
"description": "0.1.4"
}
},
"files": [
{
"name": "nrc.en.mtnt.model.js",
"description": "Lexical model nrc.en.mtnt.model.js",
"copyLocation": "0",
"fileType": ".model.js"
}
],
"lexicalModels": [
{
"name": "English dictionary (MTNT)",
"id": "nrc.en.mtnt",
"languages": [
{
"name": "English",
"id": "en"
},
{
"name": "English (US)",
"id": "en-us"
},
{
"name": "English (Canada)",
"id": "en-ca"
}
]
}
]
}

View file

@ -0,0 +1,48 @@
{
"system": {
"keymanDeveloperVersion": "12.0.1500.0",
"fileVersion": "12.0"
},
"options": {
"followKeyboardVersion": false
},
"info": {
"author": {
"description": "Eddie Antonio Santos",
"url": "mailto:Eddie.Santos@nrc-cnrc.gc.ca"
},
"copyright": {
"description": "© 2019 Timothy Montler and the W̱SÁNEĆ School Board"
},
"name": {
"description": "SENĆOŦEN (Saanich Dialect) Lexical Model"
},
"version": {
"description": "1.0.5"
}
},
"files": [
{
"name": "nrc.str.sencoten.model.js",
"description": "Lexical model nrc.str.sencoten.model.js",
"copyLocation": "0",
"fileType": ".model.js"
}
],
"lexicalModels": [
{
"name": "SENĆOŦEN dictionary",
"id": "nrc.str.sencoten",
"languages": [
{
"name": "North Straits Salish",
"id": "str"
},
{
"name": "SENĆOŦEN",
"id": "str-Latn"
}
]
}
]
}