mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-10 10:55:33 +00:00
[Developer] Fixes #183 - workaround for Chrome ladder limitation
This commit is contained in:
parent
4402a2b558
commit
95cdd73fdc
30 changed files with 17443 additions and 42 deletions
|
|
@ -227,8 +227,10 @@ type
|
|||
function JavaScript_Key(fkp: PFILE_KEY; FMnemonic: Boolean): Integer;
|
||||
function JavaScript_KeyAsString(fkp: PFILE_KEY; FMnemonic: Boolean): string;
|
||||
function JavaScript_ContextLength(Context: PWideChar): Integer;
|
||||
function JavaScript_OutputString(fkp: PFILE_KEY; pwszOutput: PWideChar; fgp: PFILE_GROUP): string;
|
||||
function JavaScript_OutputString(FTabstops: string; fkp: PFILE_KEY; pwszOutput: PWideChar; fgp: PFILE_GROUP): string;
|
||||
function JavaScript_ContextMatch(fkp: PFILE_KEY; context: PWideChar): string;
|
||||
function JavaScript_Rule(FTabStops, FElse: string; fgp: PFILE_GROUP; fkp: PFILE_KEY): string;
|
||||
function JavaScript_Rules(fgp: PFILE_GROUP): string;
|
||||
function JavaScript_CompositeContextValue(fkp: PFILE_KEY; pwsz: PWideChar): string;
|
||||
function JavaScript_FullContextValue(fkp: PFILE_KEY; pwsz: PWideChar): string;
|
||||
function RuleIsExcludedByPlatform(fkp: PFILE_KEY): Boolean;
|
||||
|
|
@ -637,6 +639,148 @@ begin
|
|||
else Result := JavaScript_CompositeContextValue(fkp, context);
|
||||
end;
|
||||
|
||||
function TCompileKeymanWeb.JavaScript_Rule(FTabStops, FElse: string; fgp: PFILE_GROUP; fkp: PFILE_KEY): string;
|
||||
var
|
||||
linecomment: string;
|
||||
FIndent: string;
|
||||
begin
|
||||
Result := '';
|
||||
|
||||
if (fkp.Line > 0) and FDebug // I4384
|
||||
then linecomment := Format(' // Line %d', [fkp.Line]) // I4373
|
||||
else linecomment := '';
|
||||
|
||||
if xstrlen(fkp.dpContext) > 0 then
|
||||
begin
|
||||
FIndent := FTabStops+FTabStop;
|
||||
Result := Result + Format('%s%sif(%s){%s', [
|
||||
FTabStops,
|
||||
FElse,
|
||||
JavaScript_ContextMatch(fkp, fkp.dpContext),
|
||||
nl
|
||||
]);
|
||||
end
|
||||
else if FElse <> '' then
|
||||
begin
|
||||
FIndent := FTabStops+FTabStop;
|
||||
Result := Result + Format('%s%s{%s', [
|
||||
FTabStops,
|
||||
FElse,
|
||||
nl
|
||||
]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
FIndent := FTabStops;
|
||||
end;
|
||||
|
||||
if(fgp.fUsingKeys) // I1959
|
||||
then Result := Result + Format('%sr=m=1;%s%s', [FIndent,linecomment,JavaScript_OutputString(FIndent, fkp, fkp.dpOutput, fgp)]) // I1959 // I3681
|
||||
else Result := Result + Format('%sm=1;%s%s', [FIndent,linecomment,JavaScript_OutputString(FIndent, fkp, fkp.dpOutput, fgp)]); // I1959 // I3681
|
||||
if FIndent = FTabStops then
|
||||
Result := Result + nl
|
||||
else
|
||||
Result := Result + Format('%s%s}%s', [nl, FTabStops, nl]); // I3681
|
||||
end;
|
||||
|
||||
function TCompileKeymanWeb.JavaScript_Rules(fgp: PFILE_GROUP): string;
|
||||
var
|
||||
j: Integer;
|
||||
HasRules: Boolean;
|
||||
linecomment: string;
|
||||
fkp2, fkp: PFILE_KEY;
|
||||
processed_rule: array of Boolean;
|
||||
i: Integer;
|
||||
LocalHasRules: Boolean;
|
||||
LocalCounter: Integer;
|
||||
Counter: Integer;
|
||||
begin
|
||||
Result := '';
|
||||
fkp := fgp.dpKeyArray;
|
||||
HasRules := False;
|
||||
|
||||
SetLength(processed_rule, fgp.cxKeyArray);
|
||||
for j := 0 to Integer(fgp.cxKeyArray) - 1 do
|
||||
processed_rule[j] := False;
|
||||
|
||||
j := 0;
|
||||
Counter := 0;
|
||||
while j < Integer(fgp.cxKeyArray) do // I1964
|
||||
begin
|
||||
if not processed_rule[j] and not RuleIsExcludedByPlatform(fkp) then
|
||||
begin
|
||||
// Break down by key code
|
||||
// We know the rules are sorted by key code.
|
||||
// First pass, break the grouping down by key code.
|
||||
|
||||
// Result := Result + FTabstop+FTabstop; // I3681
|
||||
// if HasRules then Result := Result + 'else ';
|
||||
// HasRules := True;
|
||||
if fgp.fUsingKeys then
|
||||
begin
|
||||
Result := Result + Format('%s%sif(k.KKM(e,%s,%s)) {%s',
|
||||
[
|
||||
FTabStop+FTabStop,
|
||||
IfThen(HasRules, 'else ', ''),
|
||||
JavaScript_ShiftAsString(fkp, fMnemonic),
|
||||
JavaScript_KeyAsString(fkp, fMnemonic),
|
||||
nl
|
||||
]);
|
||||
|
||||
HasRules := True;
|
||||
Inc(Counter);
|
||||
|
||||
LocalHasRules := False;
|
||||
fkp2 := fkp;
|
||||
LocalCounter := 0;
|
||||
while (j < Integer(fgp.cxKeyArray)) and (fkp2.Key = fkp.Key) and (fkp2.ShiftFlags = fkp.ShiftFlags) do
|
||||
begin
|
||||
//writeln(Format('%d of %d [%d]', [j, fgp.cxKeyArray, fkp.Line]));
|
||||
|
||||
if not RuleIsExcludedByPlatform(fkp) then
|
||||
begin
|
||||
processed_rule[j] := True;
|
||||
Result := Result + JavaScript_Rule(FTabStop + FTabStop + FTabStop, IfThen(LocalHasRules, 'else ', ''), fgp, fkp);
|
||||
Inc(LocalCounter);
|
||||
if (LocalCounter mod 100) = 0 then
|
||||
begin
|
||||
// Break if/else ladders
|
||||
Result := Result + Format('%sif(m) {}%s', [FTabStop + FTabStop + FTabStop, nl]);
|
||||
end;
|
||||
LocalHasRules := True;
|
||||
end;
|
||||
|
||||
Inc(fkp);
|
||||
Inc(j);
|
||||
end;
|
||||
|
||||
Result := Result + FTabStop + FTabStop + '}' + nl;
|
||||
end
|
||||
else
|
||||
begin
|
||||
//TODO
|
||||
Result := Result + JavaScript_Rule(FTabStop + FTabStop + FTabStop, IfThen(HasRules, 'else ', ''), fgp, fkp);
|
||||
HasRules := True;
|
||||
Inc(Counter);
|
||||
Inc(fkp);
|
||||
Inc(j);
|
||||
end;
|
||||
|
||||
if (Counter mod 100) = 0 then
|
||||
begin
|
||||
// Break if/else ladders
|
||||
// We need to only match if no previous line is matched (i.e. m is false)
|
||||
Result := Result + Format('%sif(m) {}%s', [FTabStop + FTabStop + FTabStop, nl]);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Inc(fkp);
|
||||
Inc(j);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
const // I1585 - add space to conversion
|
||||
USEnglishUnshift: WideString = ' `' + '1234567890' + '-' + '=' + 'qwertyuiop' + '[' + ']' + '\' + 'asdfghjkl' + ';' + '''' + 'zxcvbnm' + ',' + '.' + '/';
|
||||
USEnglishShift: WideString = #$FF'~' + '!@#$%^&*()' + '_' + '+' + 'QWERTYUIOP' + '{' + '}' + '|' + 'ASDFGHJKL' + ':' + '"' + 'ZXCVBNM' + '<' + '>' + '?';
|
||||
|
|
@ -738,7 +882,7 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
function TCompileKeymanWeb.JavaScript_OutputString(fkp: PFILE_KEY; pwszOutput: PWideChar; fgp: PFILE_GROUP): string;
|
||||
function TCompileKeymanWeb.JavaScript_OutputString(FTabstops: string; fkp: PFILE_KEY; pwszOutput: PWideChar; fgp: PFILE_GROUP): string;
|
||||
var
|
||||
i, n, len: Integer;
|
||||
InQuotes: Boolean;
|
||||
|
|
@ -816,7 +960,7 @@ var
|
|||
end;
|
||||
|
||||
begin
|
||||
nlt := nl + FTabstop+FTabstop+FTabstop; // I3681
|
||||
nlt := nl + FTabStops; // I3681
|
||||
Result := '';
|
||||
InQuotes := False;
|
||||
|
||||
|
|
@ -1869,47 +2013,55 @@ begin
|
|||
|
||||
fkp := fgp.dpKeyArray;
|
||||
HasRules := False;
|
||||
for j := 0 to Integer(fgp.cxKeyArray) - 1 do // I1964
|
||||
|
||||
if IsKeyboardVersion10OrLater then
|
||||
begin
|
||||
if not RuleIsExcludedByPlatform(fkp) then
|
||||
Result := Result + JavaScript_Rules(fgp);
|
||||
end
|
||||
else
|
||||
begin
|
||||
for j := 0 to Integer(fgp.cxKeyArray) - 1 do // I1964
|
||||
begin
|
||||
Result := Result + FTabstop+FTabstop; // I3681
|
||||
if HasRules then Result := Result + 'else ';
|
||||
HasRules := TRue;
|
||||
if fgp.fUsingKeys then
|
||||
if not RuleIsExcludedByPlatform(fkp) then
|
||||
begin
|
||||
Result := Result + Format('if(k.KKM(e,%s,%s)',
|
||||
[JavaScript_ShiftAsString(fkp, fMnemonic),
|
||||
JavaScript_KeyAsString(fkp, fMnemonic)]);
|
||||
Result := Result + FTabstop+FTabstop; // I3681
|
||||
if HasRules then Result := Result + 'else ';
|
||||
HasRules := TRue;
|
||||
if fgp.fUsingKeys then
|
||||
begin
|
||||
Result := Result + Format('if(k.KKM(e,%s,%s)',
|
||||
[JavaScript_ShiftAsString(fkp, fMnemonic),
|
||||
JavaScript_KeyAsString(fkp, fMnemonic)]);
|
||||
end;
|
||||
|
||||
if xstrlen(fkp.dpContext) > 0 then
|
||||
begin
|
||||
if not fgp.fUsingKeys
|
||||
then Result := Result + 'if('
|
||||
else Result := Result + '&&';
|
||||
|
||||
Result := Result + JavaScript_ContextMatch(fkp, fkp.dpContext);
|
||||
end
|
||||
else if not fgp.fUsingKeys then
|
||||
Result := Result + 'if(1';
|
||||
|
||||
if (fkp.Line > 0) and FDebug // I4384
|
||||
then linecomment := Format(' // Line %d', [fkp.Line]) // I4373
|
||||
else linecomment := '';
|
||||
|
||||
Result := Result + Format(
|
||||
') {%s%s'+
|
||||
'%s',
|
||||
[linecomment, nl,
|
||||
FTabstop+FTabstop+FTabstop]); // I3681
|
||||
if(fgp.fUsingKeys) // I1959
|
||||
then Result := Result + Format('r=m=1;%s', [JavaScript_OutputString(FTabStop + FTabStop + FTabStop, fkp, fkp.dpOutput, fgp)]) // I1959 // I3681
|
||||
else Result := Result + Format('m=1;%s', [JavaScript_OutputString(FTabStop + FTabStop + FTabStop, fkp, fkp.dpOutput, fgp)]); // I1959 // I3681
|
||||
Result := Result + Format('%s%s}%s', [nl, FTabstop+FTabstop, nl]); // I3681
|
||||
end;
|
||||
|
||||
if xstrlen(fkp.dpContext) > 0 then
|
||||
begin
|
||||
if not fgp.fUsingKeys
|
||||
then Result := Result + 'if('
|
||||
else Result := Result + '&&';
|
||||
|
||||
Result := Result + JavaScript_ContextMatch(fkp, fkp.dpContext);
|
||||
end
|
||||
else if not fgp.fUsingKeys then
|
||||
Result := Result + 'if(1';
|
||||
|
||||
if (fkp.Line > 0) and FDebug // I4384
|
||||
then linecomment := Format(' // Line %d', [fkp.Line]) // I4373
|
||||
else linecomment := '';
|
||||
|
||||
Result := Result + Format(
|
||||
') {%s%s'+
|
||||
'%s',
|
||||
[linecomment, nl,
|
||||
FTabstop+FTabstop+FTabstop]); // I3681
|
||||
if(fgp.fUsingKeys) // I1959
|
||||
then Result := Result + Format('r=m=1;%s', [JavaScript_OutputString(fkp, fkp.dpOutput, fgp)]) // I1959 // I3681
|
||||
else Result := Result + Format('m=1;%s', [JavaScript_OutputString(fkp, fkp.dpOutput, fgp)]); // I1959 // I3681
|
||||
Result := Result + Format('%s%s}%s', [nl, FTabstop+FTabstop, nl]); // I3681
|
||||
Inc(fkp);
|
||||
end;
|
||||
Inc(fkp);
|
||||
end;
|
||||
end;
|
||||
|
||||
if Assigned(fgp.dpMatch) then
|
||||
Result := Result + Format(
|
||||
|
|
@ -1917,7 +2069,7 @@ begin
|
|||
'%s%s%s'+
|
||||
'%s}%s',
|
||||
[FTabstop+FTabstop, nl,
|
||||
FTabstop+Ftabstop, JavaScript_OutputString(nil, fgp.dpMatch, fgp), nl,
|
||||
FTabstop+Ftabstop, JavaScript_OutputString(FTabStop + FTabStop + FTabStop, nil, fgp.dpMatch, fgp), nl,
|
||||
FTabstop+FTabstop, nl]); // I3681
|
||||
if Assigned(fgp.dpNoMatch) then
|
||||
if fgp.fUsingKeys then // I1382 - fixup m=1 to m=g()
|
||||
|
|
@ -1926,7 +2078,7 @@ begin
|
|||
'%sr=1;%s%s'+
|
||||
'%s}%s',
|
||||
[FTabstop+FTabstop, nl,
|
||||
FTabstop+FTabstop+FTabstop, JavaScript_OutputString(nil, fgp.dpNoMatch, fgp), nl,
|
||||
FTabstop+FTabstop+FTabstop, JavaScript_OutputString(FTabStop + FTabStop + FTabStop, nil, fgp.dpNoMatch, fgp), nl,
|
||||
FTabstop+FTabstop, nl]) // I1959. part 2, I2224 // I3681
|
||||
else
|
||||
Result := Result + Format(
|
||||
|
|
@ -1934,7 +2086,7 @@ begin
|
|||
'%s%s%s'+
|
||||
'%s}%s',
|
||||
[FTabstop+FTabstop, nl,
|
||||
FTabstop+FTabstop, JavaScript_OutputString(nil, fgp.dpNoMatch, fgp), nl,
|
||||
FTabstop+FTabstop, JavaScript_OutputString(FTabStop + FTabStop + FTabStop, nil, fgp.dpNoMatch, fgp), nl,
|
||||
FTabstop+FTabstop, nl]); // I1959 // I3681
|
||||
|
||||
Result := Result + Format('%sreturn r;%s'+
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
@..\..\..\developer\kmcomp\kmcomp.exe -d simple_keyboard\simple_keyboard.kpj
|
||||
@..\..\..\developer\kmcomp\kmcomp.exe -d hieroglyphic\hieroglyphic.kpj
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
Hieroglyphic Keyboard Change History
|
||||
=======================
|
||||
|
||||
1.3 (1 Jun 2018)
|
||||
-----------------
|
||||
* Migrated to GitHub
|
||||
|
||||
1.0 (2010)
|
||||
-----------------
|
||||
* Initial version
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2010-2018 Christian Casey
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
Hieroglyphic Keyboard
|
||||
=====================
|
||||
|
||||
Copyright (C) 2010-2018 Christian Casey
|
||||
|
||||
Version 1.3
|
||||
|
||||
__DESCRIPTION__
|
||||
This keyboard provides a quick and easy way to enter Ancient Egyptian hieroglyphs and transliteration as Unicode text.
|
||||
|
||||
Supported Platforms
|
||||
-------------------
|
||||
* Windows
|
||||
* macOS
|
||||
* Web
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"license": "mit",
|
||||
"languages": ["egy-Egyp"],
|
||||
"description": "This keyboard provides a quick and easy way to enter Ancient Egyptian hieroglyphs and transliteration as Unicode text."
|
||||
}
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<KeymanDeveloperProject>
|
||||
<Options>
|
||||
<BuildPath>$PROJECTPATH\build</BuildPath>
|
||||
<CompilerWarningsAsErrors>True</CompilerWarningsAsErrors>
|
||||
<WarnDeprecatedCode>True</WarnDeprecatedCode>
|
||||
<CheckFilenameConventions>False</CheckFilenameConventions>
|
||||
</Options>
|
||||
<Files>
|
||||
<File>
|
||||
<ID>id_f4a66deaf296f96fe61883341eba5771</ID>
|
||||
<Filename>hieroglyphic.kmn</Filename>
|
||||
<Filepath>source\hieroglyphic.kmn</Filepath>
|
||||
<FileVersion>1.3</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details>
|
||||
<Name>Hieroglyphic</Name>
|
||||
<Copyright>© 2010-2018 Christian Casey</Copyright>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_cb0f005e3972f310925be5af53259799</ID>
|
||||
<Filename>hieroglyphic.kps</Filename>
|
||||
<Filepath>source\hieroglyphic.kps</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kps</FileType>
|
||||
<Details>
|
||||
<Name>Hieroglyphic</Name>
|
||||
<Copyright>© 2010-2018 Christian Casey</Copyright>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_cf79a8dde59c3d16a79971e6dcb49e60</ID>
|
||||
<Filename>hieroglyphic.ico</Filename>
|
||||
<Filepath>source\hieroglyphic.ico</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.ico</FileType>
|
||||
<ParentFileID>id_f4a66deaf296f96fe61883341eba5771</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_de482877ada47b349fa0c32469b3c4cc</ID>
|
||||
<Filename>hieroglyphic.js</Filename>
|
||||
<Filepath>source\..\build\hieroglyphic.js</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.js</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_b83020f2de7faa33d814d1f7aafb4768</ID>
|
||||
<Filename>hieroglyphic.kvk</Filename>
|
||||
<Filepath>source\..\build\hieroglyphic.kvk</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kvk</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_ea98ffd0241ff60b16faba096e47fb40</ID>
|
||||
<Filename>hieroglyphic.kmx</Filename>
|
||||
<Filepath>source\..\build\hieroglyphic.kmx</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.kmx</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_07e79ced47c1b315948792ebcd87f9e7</ID>
|
||||
<Filename>Aegyptus.pdf</Filename>
|
||||
<Filepath>source\..\assets\Aegyptus.pdf</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.pdf</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_07a7ec86e29e2c5546b8715a294f9d87</ID>
|
||||
<Filename>Aegyptus.ttf</Filename>
|
||||
<Filepath>source\..\assets\Aegyptus.ttf</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.ttf</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_c2ded6274721cc8d6088d095caf29152</ID>
|
||||
<Filename>Gardiner.ttf</Filename>
|
||||
<Filepath>source\..\assets\Gardiner.ttf</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.ttf</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_89263597fffe0ce35e6635cc2f4897aa</ID>
|
||||
<Filename>SignList.pdf</Filename>
|
||||
<Filepath>source\..\assets\SignList.pdf</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.pdf</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_6f245111bde1d607d76895b40e978071</ID>
|
||||
<Filename>style.css</Filename>
|
||||
<Filepath>source\welcome\style.css</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.css</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_724e5b4c63f10bc0abf7077f7c3172fc</ID>
|
||||
<Filename>welcome.htm</Filename>
|
||||
<Filepath>source\welcome\welcome.htm</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.htm</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_8da344c4cea6f467013357fe099006f5</ID>
|
||||
<Filename>readme.htm</Filename>
|
||||
<Filepath>source\readme.htm</Filepath>
|
||||
<FileVersion></FileVersion>
|
||||
<FileType>.htm</FileType>
|
||||
<ParentFileID>id_cb0f005e3972f310925be5af53259799</ParentFileID>
|
||||
</File>
|
||||
</Files>
|
||||
</KeymanDeveloperProject>
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package>
|
||||
<System>
|
||||
<KeymanDeveloperVersion>10.0.1093.0</KeymanDeveloperVersion>
|
||||
<FileVersion>7.0</FileVersion>
|
||||
</System>
|
||||
<Options>
|
||||
<ExecuteProgram></ExecuteProgram>
|
||||
<ReadMeFile>readme.htm</ReadMeFile>
|
||||
<MSIFileName></MSIFileName>
|
||||
<MSIOptions></MSIOptions>
|
||||
<FollowKeyboardVersion/>
|
||||
</Options>
|
||||
<StartMenu>
|
||||
<Folder></Folder>
|
||||
<Items/>
|
||||
</StartMenu>
|
||||
<Info>
|
||||
<Version URL=""></Version>
|
||||
<Name URL="">Hieroglyphic</Name>
|
||||
<Copyright URL="">© 2010-2018 Christian Casey</Copyright>
|
||||
</Info>
|
||||
<Files>
|
||||
<File>
|
||||
<Name>..\build\hieroglyphic.js</Name>
|
||||
<Description>File hieroglyphic.js</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.js</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\style.css</Name>
|
||||
<Description>File style.css</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.css</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome\welcome.htm</Name>
|
||||
<Description>File welcome.htm</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>readme.htm</Name>
|
||||
<Description>File readme.htm</Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
</Files>
|
||||
<Keyboards>
|
||||
<Keyboard>
|
||||
<Name>Hieroglyphic</Name>
|
||||
<ID>hieroglyphic</ID>
|
||||
<Version></Version>
|
||||
<Languages>
|
||||
<Language ID="egy-Egyp">Egyptian (Ancient) (Egyptian hieroglyphs)</Language>
|
||||
</Languages>
|
||||
</Keyboard>
|
||||
</Keyboards>
|
||||
<Strings/>
|
||||
</Package>
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<visualkeyboard>
|
||||
<header>
|
||||
<version>10.0</version>
|
||||
<kbdname></kbdname>
|
||||
<flags>
|
||||
<displayunderlying/>
|
||||
</flags>
|
||||
</header>
|
||||
<encoding name="unicode" fontname="Aegyptus" fontsize="12">
|
||||
<layer shift="">
|
||||
<key vkey="K_BKQUOTE"><LTN></key>
|
||||
<key vkey="K_Q">ḳ</key>
|
||||
<key vkey="K_W">w</key>
|
||||
<key vkey="K_E">e</key>
|
||||
<key vkey="K_R">r</key>
|
||||
<key vkey="K_T">t</key>
|
||||
<key vkey="K_Y">y</key>
|
||||
<key vkey="K_U">u</key>
|
||||
<key vkey="K_I">i</key>
|
||||
<key vkey="K_O">o</key>
|
||||
<key vkey="K_P">p</key>
|
||||
<key vkey="K_LBRKT">[</key>
|
||||
<key vkey="K_RBRKT">]</key>
|
||||
<key vkey="K_BKSLASH">\</key>
|
||||
<key vkey="K_S">s</key>
|
||||
<key vkey="K_D">d</key>
|
||||
<key vkey="K_F">f</key>
|
||||
<key vkey="K_G">g</key>
|
||||
<key vkey="K_H">h</key>
|
||||
<key vkey="K_J">j</key>
|
||||
<key vkey="K_K">k</key>
|
||||
<key vkey="K_L">l</key>
|
||||
<key vkey="K_COLON">;</key>
|
||||
<key vkey="K_QUOTE">'</key>
|
||||
<key vkey="K_Z">z</key>
|
||||
<key vkey="K_C">c</key>
|
||||
<key vkey="K_B">b</key>
|
||||
<key vkey="K_V">v</key>
|
||||
<key vkey="K_N">n</key>
|
||||
<key vkey="K_M">m</key>
|
||||
<key vkey="K_COMMA">,</key>
|
||||
<key vkey="K_PERIOD">.</key>
|
||||
<key vkey="K_SLASH">/</key>
|
||||
<key vkey="K_1">1</key>
|
||||
<key vkey="K_2">2</key>
|
||||
<key vkey="K_3">3</key>
|
||||
<key vkey="K_4">4</key>
|
||||
<key vkey="K_5">5</key>
|
||||
<key vkey="K_6">6</key>
|
||||
<key vkey="K_7">7</key>
|
||||
<key vkey="K_8">8</key>
|
||||
<key vkey="K_9">9</key>
|
||||
<key vkey="K_0">0</key>
|
||||
<key vkey="K_HYPHEN">-</key>
|
||||
<key vkey="K_EQUAL">=</key>
|
||||
<key vkey="K_A">ꜥ</key>
|
||||
<key vkey="K_X">ḫ</key>
|
||||
</layer>
|
||||
<layer shift="S">
|
||||
<key vkey="K_BKQUOTE">~</key>
|
||||
<key vkey="K_1">!</key>
|
||||
<key vkey="K_2">@</key>
|
||||
<key vkey="K_3">#</key>
|
||||
<key vkey="K_4">$</key>
|
||||
<key vkey="K_5">%</key>
|
||||
<key vkey="K_6">^</key>
|
||||
<key vkey="K_7">&</key>
|
||||
<key vkey="K_8">*</key>
|
||||
<key vkey="K_9">(</key>
|
||||
<key vkey="K_0">)</key>
|
||||
<key vkey="K_HYPHEN">_</key>
|
||||
<key vkey="K_EQUAL">+</key>
|
||||
<key vkey="K_Q">Q</key>
|
||||
<key vkey="K_W">W</key>
|
||||
<key vkey="K_E">E</key>
|
||||
<key vkey="K_R">R</key>
|
||||
<key vkey="K_T">T</key>
|
||||
<key vkey="K_Y">Y</key>
|
||||
<key vkey="K_U">U</key>
|
||||
<key vkey="K_I">I</key>
|
||||
<key vkey="K_O">O</key>
|
||||
<key vkey="K_P">P</key>
|
||||
<key vkey="K_LBRKT">{</key>
|
||||
<key vkey="K_RBRKT">}</key>
|
||||
<key vkey="K_BKSLASH">|</key>
|
||||
<key vkey="K_F">F</key>
|
||||
<key vkey="K_G">G</key>
|
||||
<key vkey="K_J">J</key>
|
||||
<key vkey="K_K">K</key>
|
||||
<key vkey="K_L">L</key>
|
||||
<key vkey="K_COLON">:</key>
|
||||
<key vkey="K_QUOTE">"</key>
|
||||
<key vkey="K_Z">Z</key>
|
||||
<key vkey="K_C">C</key>
|
||||
<key vkey="K_V">V</key>
|
||||
<key vkey="K_B">B</key>
|
||||
<key vkey="K_N">N</key>
|
||||
<key vkey="K_M">M</key>
|
||||
<key vkey="K_COMMA"><</key>
|
||||
<key vkey="K_PERIOD">></key>
|
||||
<key vkey="K_SLASH">?</key>
|
||||
<key vkey="K_S">š</key>
|
||||
<key vkey="K_D">ḏ</key>
|
||||
<key vkey="K_A">ꜣ</key>
|
||||
<key vkey="K_X">ẖ</key>
|
||||
</layer>
|
||||
</encoding>
|
||||
</visualkeyboard>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<meta charset="utf-8">
|
||||
<title>Hieroglyphic Keyboard</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Hieroglyphic Keyboard</h1>
|
||||
|
||||
<p style='margin:0px'>Created by Christian Casey</p>
|
||||
|
||||
<p>This keyboard is designed as a quick and easy way to enter Ancient Egyptian
|
||||
hieroglyphs as Unicode text. Signs are entered using Manuel de Codage
|
||||
phonetic values or Gardiner Sign List codes, but they cannot be stacked
|
||||
or grouped. The portability of Unicode text produced with this keyboard
|
||||
makes it especially suitable for contexts in which rendered
|
||||
hieroglyphic text cannot be displayed.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
/*
|
||||
===========
|
||||
==General==
|
||||
===========
|
||||
*/
|
||||
body {
|
||||
margin: 30px;
|
||||
font-family: 'Arial Unicode MS', Helvetica, sans-serif;
|
||||
font-size: 11pt;color: #2D2C2C;}
|
||||
img {border: none; }
|
||||
|
||||
p {font-size: 11pt; margin:5px 0px 0px;}
|
||||
.example {margin-left:40px}
|
||||
section {clear:both;}
|
||||
|
||||
article{clear:left; margin-bottom:60px;}
|
||||
|
||||
/* Headers */
|
||||
h1, h2, h3{color: #AD4A28; font-weight: bold;clear:both;}
|
||||
|
||||
h1 {font-size: 22pt; margin: 22px 0px 11px; padding:0px;}
|
||||
h2 {font-size: 16pt; margin: 14px 0px 7px; padding:0px;}
|
||||
h3 {font-size: 12pt; margin: 12px 0px 6px; padding:0px;}
|
||||
h4 {font-size: 11pt; margin: 10px 0px 5px; padding:0px;}
|
||||
|
||||
/* Links */
|
||||
a:link {color: #AD4A28; text-decoration: none;}
|
||||
a:visited {color: #AD4A28;text-decoration: none;}
|
||||
a:hover {color: #AD4A28;text-decoration: underline;}
|
||||
|
||||
/* Language + Keyboard */
|
||||
samp{font-family: Gardiner, Aegyptus; color:blue;}
|
||||
kbd {color:black;}
|
||||
|
||||
/* Printing */
|
||||
.break {clear:both !important; page-break-before:always !important;}
|
||||
|
||||
/*
|
||||
===========
|
||||
==Welcome==
|
||||
===========
|
||||
*/
|
||||
/* Notes (Asides) */
|
||||
aside {background-color:#eee;border:2px solid #ddd;-webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;margin:10px 0px; padding:0px 10px 5px;font-size:10pt;}
|
||||
aside h4 {color:#AD4A28; text-align:left;padding:0px 0px 5px;margin-top:5px;font-size:11pt;}
|
||||
aside p {font-size:10pt;}
|
||||
aside kbd {color:black; font:9pt Arial; border:solid 1px grey; background:#ccc; margin:0px 1px; padding:2px 4px; vertical-align:middle; line-height:2em; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;}
|
||||
|
||||
|
||||
/* Tables */
|
||||
table {border-collapse:collapse !important; margin:10px 0px 20px 40px;}
|
||||
.grid col {text-align:center; background-color:#ffffff;}
|
||||
.grid th {text-align:center; font-weight:bold}
|
||||
.grid td, .grid th {padding:2px 5px;border-bottom:1px solid #ddd;}
|
||||
.grid tr {text-align:center; font-weight:normal; height:80px;}
|
||||
.grid thead tr,.grid .headrow{height:30px;}
|
||||
.grid .headrow {font-weight:bold; color:#AD4A28; background-color:#eee;}
|
||||
.gardiner {font-family:Gardiner, Aegyptus; font-size:24pt;line-height:20px;vertical-align:-2px;}
|
||||
col.trans {width:60px;}
|
||||
col.keys {width:50px;}
|
||||
col.signs {width:85px;}
|
||||
#guidemdc col.keys {width:120px;}
|
||||
#guidemdc col.signs{width:465px;}
|
||||
#guidegardiner col.signs{width:125px;}
|
||||
#guidegardiner col.keys {width:115px;}
|
||||
tr.halfrow {border-bottom:2px solid white !important;}
|
||||
td samp {font-size:24pt}
|
||||
td samp.hiero {vertical-align:middle;font-size:49pt;}
|
||||
table kbd {color:black; font:12pt Arial; border:solid 1px grey; background:#ccc; margin:0px 1px; padding:2px 4px; vertical-align:middle; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;}
|
||||
|
||||
/* Columns + Psuedo-Columns (Floats)*/
|
||||
.columns {width:375px; -webkit-column-count: 2; -webkit-column-gap: 10px; -moz-column-count: 2; -moz-column-gap: 10px; column-count: 2; column-gap: 10px;}
|
||||
.colleft, .colright {position:relative; float:left;}
|
||||
.colright {padding-left:40px;}
|
||||
|
||||
/* Language Examples */
|
||||
p samp {font-size:22pt; line-height:.8em;}
|
||||
p kbd {color:black; font:9pt Arial; border:solid 1px grey; background:#ccc; margin:0px 1px; padding:0px 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;}
|
||||
samp.hiero {font-size:44pt; line-height:43px; font-family:Gardiner, Aegyptus;}
|
||||
samp .cyc {font-size:30pt; color:#2D2C2C;}
|
||||
|
||||
/* OSK Keys */
|
||||
.key {
|
||||
float: left;
|
||||
display: block;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
height: 35px;
|
||||
margin: 2px 0px 0px 2px;
|
||||
border: solid 1px grey;
|
||||
-webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;
|
||||
}
|
||||
.plain {
|
||||
background-repeat: no-repeat;
|
||||
width: 34px;
|
||||
}
|
||||
.empty {
|
||||
background:#eee;
|
||||
}
|
||||
.K_BKQUOTE {
|
||||
width:34px;
|
||||
}
|
||||
.K_BKSP {
|
||||
width: 60px;
|
||||
}
|
||||
.K_TAB {
|
||||
width: 52px;
|
||||
}
|
||||
.K_BKSLASH {
|
||||
width: 42px;
|
||||
}
|
||||
.K_CAPS {
|
||||
width: 62px;
|
||||
}
|
||||
.K_ENTER {
|
||||
width: 70px;
|
||||
}
|
||||
.K_ENTER-EU1 {
|
||||
width: 42px;
|
||||
-webkit-border-radius: 3px 3px 0px; -moz-border-radius: 3px 3px 0px; border-radius: 3px 3px 0px;
|
||||
}
|
||||
.K_ENTER-EU1 .key kbd {
|
||||
left:3px !important;
|
||||
}
|
||||
.K_ENTER-EU2 {
|
||||
width: 32px;
|
||||
margin-top:-1px !important;
|
||||
border-top:none !important;
|
||||
height:39px !important;
|
||||
-webkit-border-radius: 0px 0px 3px 3px; -moz-border-radius: 0px 0px 3px 3px; border-radius: 0px 0px 3px 3px;
|
||||
}
|
||||
.K_SHIFTL {
|
||||
width: 85px;
|
||||
}
|
||||
.K_SHIFTL-EU {
|
||||
width: 47px;
|
||||
}
|
||||
.K_oE2 {
|
||||
display:none;
|
||||
}
|
||||
.K_SHIFTR {
|
||||
width: 85px;
|
||||
}
|
||||
.K_CTRLL {
|
||||
width:60px;
|
||||
margin-right: 40px;
|
||||
}
|
||||
.K_ALTL {
|
||||
width: 40px;
|
||||
}
|
||||
.K_SPACE , .K_SPACE samp{
|
||||
width: 224px;
|
||||
}
|
||||
.K_ALTR {
|
||||
width: 40px;
|
||||
}
|
||||
.K_CTRLR {
|
||||
width: 60px;
|
||||
margin-left: 76px;
|
||||
}
|
||||
|
||||
|
||||
.special {
|
||||
background-repeat: no-repeat;
|
||||
background: #c0c0c0;
|
||||
}
|
||||
|
||||
.key kbd {
|
||||
font: bold 7pt Arial;
|
||||
position: absolute;
|
||||
left: 3px;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.key kbd {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.special kbd {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.key samp {
|
||||
font-size: 19pt;
|
||||
position: absolute;
|
||||
display: block;
|
||||
right: 5px;
|
||||
bottom: 0px;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.LTN {
|
||||
font-family:Arial !important;
|
||||
font-size:12px !important;
|
||||
color: #AD4A28 !important;
|
||||
right:2px !important;
|
||||
bottom:2px !important;
|
||||
font-variant:small-caps;
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,6 @@
|
|||
Simple Keyboard Change History
|
||||
====================
|
||||
|
||||
1.0 (2019-01-22)
|
||||
----------------
|
||||
* Created by Marc DUrdin
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
© 2019 SIL International
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
Simple Keyboard keyboard
|
||||
==============
|
||||
|
||||
© 2019 SIL International
|
||||
|
||||
Version 1.0
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
Simple Keyboard generated from template
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
Supported Platforms
|
||||
-------------------
|
||||
* Windows
|
||||
* macOS
|
||||
* Linux
|
||||
* Web
|
||||
* iPhone
|
||||
* iPad
|
||||
* Android phone
|
||||
* Android tablet
|
||||
* Mobile devices
|
||||
* Desktop devices
|
||||
* Tablet devices
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"license": "mit",
|
||||
"languages": [
|
||||
|
||||
],
|
||||
"description": "Simple Keyboard generated from template"
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<KeymanDeveloperProject>
|
||||
<Options>
|
||||
<BuildPath>$PROJECTPATH\build</BuildPath>
|
||||
<CompilerWarningsAsErrors>True</CompilerWarningsAsErrors>
|
||||
<WarnDeprecatedCode>True</WarnDeprecatedCode>
|
||||
</Options>
|
||||
<Files>
|
||||
<File>
|
||||
<ID>id_8dc3c3ab6a1e89cc11cc0c9818e41def</ID>
|
||||
<Filename>simple_keyboard.kmn</Filename>
|
||||
<Filepath>source\simple_keyboard.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details>
|
||||
<Name>Simple Keyboard</Name>
|
||||
<Copyright>© 2019 SIL International</Copyright>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_3c55bc5a555faaa642be014322ccdbf4</ID>
|
||||
<Filename>multi_group.kmn</Filename>
|
||||
<Filepath>source\multi_group.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details>
|
||||
<Name>Multiple Groups</Name>
|
||||
<Copyright>© 2019 SIL International</Copyright>
|
||||
</Details>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_8c4274fb61bed09fc289b2a23e5e4f07</ID>
|
||||
<Filename>manykeys.kmn</Filename>
|
||||
<Filepath>source\manykeys.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details/>
|
||||
</File>
|
||||
<File>
|
||||
<ID>id_f63461ab22ad2345f9c85c13e3877aed</ID>
|
||||
<Filename>manynonkeyrules.kmn</Filename>
|
||||
<Filepath>source\manynonkeyrules.kmn</Filepath>
|
||||
<FileVersion>1.0</FileVersion>
|
||||
<FileType>.kmn</FileType>
|
||||
<Details/>
|
||||
</File>
|
||||
</Files>
|
||||
</KeymanDeveloperProject>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
store(&version) '10.0'
|
||||
store(&targets) 'web'
|
||||
|
||||
store(keys) 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^*()-_=+[]{}\|;:,./<>?"' "'" \
|
||||
[CTRL K_A] [CTRL K_B] [CTRL K_C] [CTRL K_D] [CTRL K_E] [CTRL K_F] [CTRL K_G] [CTRL K_H]
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
+ any(keys) > 'foo' index(keys, 1)
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
store(&version) '10.0'
|
||||
store(&targets) 'web'
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
U+0100 + 'a' > 'a' U+0100 c match first rule ;-)
|
||||
+ 'a' > U+0100
|
||||
|
||||
match > use(g2)
|
||||
|
||||
group(g2)
|
||||
|
||||
'a' U+0100 > 'foo' U+1200
|
||||
'b' U+0100 > 'foo' U+1201
|
||||
'c' U+0100 > 'foo' U+1202
|
||||
'd' U+0100 > 'foo' U+1203
|
||||
'e' U+0100 > 'foo' U+1204
|
||||
'f' U+0100 > 'foo' U+1205
|
||||
'g' U+0100 > 'foo' U+1206
|
||||
'h' U+0100 > 'foo' U+1207
|
||||
'i' U+0100 > 'foo' U+1208
|
||||
'j' U+0100 > 'foo' U+1209
|
||||
'k' U+0100 > 'foo' U+120A
|
||||
'l' U+0100 > 'foo' U+120B
|
||||
'm' U+0100 > 'foo' U+120C
|
||||
'n' U+0100 > 'foo' U+120D
|
||||
'o' U+0100 > 'foo' U+120E
|
||||
'p' U+0100 > 'foo' U+120F
|
||||
'q' U+0100 > 'foo' U+1210
|
||||
'r' U+0100 > 'foo' U+1211
|
||||
's' U+0100 > 'foo' U+1212
|
||||
't' U+0100 > 'foo' U+1213
|
||||
'u' U+0100 > 'foo' U+1214
|
||||
'v' U+0100 > 'foo' U+1215
|
||||
'w' U+0100 > 'foo' U+1216
|
||||
'x' U+0100 > 'foo' U+1217
|
||||
'y' U+0100 > 'foo' U+1218
|
||||
'z' U+0100 > 'foo' U+1219
|
||||
'A' U+0100 > 'foo' U+121A
|
||||
'B' U+0100 > 'foo' U+121B
|
||||
'C' U+0100 > 'foo' U+121C
|
||||
'D' U+0100 > 'foo' U+121D
|
||||
'E' U+0100 > 'foo' U+121E
|
||||
'F' U+0100 > 'foo' U+121F
|
||||
'G' U+0100 > 'foo' U+1220
|
||||
'H' U+0100 > 'foo' U+1221
|
||||
'I' U+0100 > 'foo' U+1222
|
||||
'J' U+0100 > 'foo' U+1223
|
||||
'K' U+0100 > 'foo' U+1224
|
||||
'L' U+0100 > 'foo' U+1225
|
||||
'M' U+0100 > 'foo' U+1226
|
||||
'N' U+0100 > 'foo' U+1227
|
||||
'O' U+0100 > 'foo' U+1228
|
||||
'P' U+0100 > 'foo' U+1229
|
||||
'Q' U+0100 > 'foo' U+122A
|
||||
'R' U+0100 > 'foo' U+122B
|
||||
'S' U+0100 > 'foo' U+122C
|
||||
'T' U+0100 > 'foo' U+122D
|
||||
'U' U+0100 > 'foo' U+122E
|
||||
'V' U+0100 > 'foo' U+122F
|
||||
'W' U+0100 > 'foo' U+1230
|
||||
'X' U+0100 > 'foo' U+1231
|
||||
'Y' U+0100 > 'foo' U+1232
|
||||
'Z' U+0100 > 'foo' U+1233
|
||||
'1' U+0100 > 'foo' U+1234
|
||||
'2' U+0100 > 'foo' U+1235
|
||||
'3' U+0100 > 'foo' U+1236
|
||||
'4' U+0100 > 'foo' U+1237
|
||||
'5' U+0100 > 'foo' U+1238
|
||||
'6' U+0100 > 'foo' U+1239
|
||||
'7' U+0100 > 'foo' U+123A
|
||||
'8' U+0100 > 'foo' U+123B
|
||||
'9' U+0100 > 'foo' U+123C
|
||||
'0' U+0100 > 'foo' U+123D
|
||||
'!' U+0100 > 'foo' U+123E
|
||||
'@' U+0100 > 'foo' U+123F
|
||||
'#' U+0100 > 'foo' U+1240
|
||||
'$' U+0100 > 'foo' U+1241
|
||||
'%' U+0100 > 'foo' U+1242
|
||||
'^' U+0100 > 'foo' U+1243
|
||||
'&' U+0100 > 'foo' U+1244
|
||||
'*' U+0100 > 'foo' U+1245
|
||||
'(' U+0100 > 'foo' U+1246
|
||||
')' U+0100 > 'foo' U+1247
|
||||
'-' U+0100 > 'foo' U+1248
|
||||
'=' U+0100 > 'foo' U+1249
|
||||
'_' U+0100 > 'foo' U+124A
|
||||
'+' U+0100 > 'foo' U+124B
|
||||
'[' U+0100 > 'foo' U+124C
|
||||
']' U+0100 > 'foo' U+124D
|
||||
'{' U+0100 > 'foo' U+124E
|
||||
'}' U+0100 > 'foo' U+124F
|
||||
'\' U+0100 > 'foo' U+1250
|
||||
'|' U+0100 > 'foo' U+1251
|
||||
';' U+0100 > 'foo' U+1252
|
||||
':' U+0100 > 'foo' U+1253
|
||||
',' U+0100 > 'foo' U+1254
|
||||
'.' U+0100 > 'foo' U+1255
|
||||
'/' U+0100 > 'foo' U+1256
|
||||
'<' U+0100 > 'foo' U+1257
|
||||
'>' U+0100 > 'foo' U+1258
|
||||
'?' U+0100 > 'foo' U+1259
|
||||
'"' U+0100 > 'foo' U+125A
|
||||
"'" U+0100 > 'foo' U+125B
|
||||
U+1200 U+0100 > 'foo' U+125C
|
||||
U+1201 U+0100 > 'foo' U+125D
|
||||
U+1202 U+0100 > 'foo' U+125E
|
||||
U+1203 U+0100 > 'foo' U+125F
|
||||
U+1204 U+0100 > 'foo' U+1260
|
||||
U+1205 U+0100 > 'foo' U+1261
|
||||
U+1206 U+0100 > 'foo' U+1262
|
||||
U+1207 U+0100 > 'foo' U+1263
|
||||
U+1208 U+0100 > 'foo' U+1264
|
||||
U+1209 U+0100 > 'foo' U+1265
|
||||
U+120A U+0100 > 'foo' U+1266
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
store(&VERSION) '10.0'
|
||||
store(&NAME) 'Multiple Groups'
|
||||
store(&TARGETS) 'web'
|
||||
store(©RIGHT) '© 2019 SIL International'
|
||||
store(&KEYBOARDVERSION) '1.0'
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
+ 'a' > 'rule 1'
|
||||
'b' + 'a' > 'rule 2'
|
||||
+ 'c' > 'rule 3'
|
||||
match > use(group2)
|
||||
|
||||
group(group2)
|
||||
|
||||
'rule 3' > use(group3)
|
||||
nomatch > use(group4)
|
||||
|
||||
group(group3)
|
||||
|
||||
group(group4) using keys
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Simple Keyboard</title>
|
||||
<style type="text/css">
|
||||
p { font: 10pt Tahoma; }
|
||||
h1 { font: bold 16pt Tahoma; color: #4444cc; margin-bottom: 2px }
|
||||
h2 { font: bold 12pt Tahoma; color: #4444cc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Simple Keyboard</h1>
|
||||
|
||||
<p>
|
||||
Simple Keyboard 1.0 generated from template.
|
||||
</p>
|
||||
|
||||
<p>© 2019 SIL International</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,13 @@
|
|||
store(&VERSION) '10.0'
|
||||
store(&NAME) 'Simple Keyboard'
|
||||
store(&TARGETS) 'web'
|
||||
store(©RIGHT) '© 2019 SIL International'
|
||||
store(&KEYBOARDVERSION) '1.0'
|
||||
|
||||
begin Unicode > use(main)
|
||||
|
||||
group(main) using keys
|
||||
|
||||
+ 'a' > 'rule 1'
|
||||
'b' + 'a' > 'rule 2'
|
||||
+ 'c' > 'rule 3'
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package>
|
||||
<System>
|
||||
<KeymanDeveloperVersion>11.0.1500.0</KeymanDeveloperVersion>
|
||||
<FileVersion>7.0</FileVersion>
|
||||
</System>
|
||||
<Options>
|
||||
<ExecuteProgram></ExecuteProgram>
|
||||
<ReadMeFile>readme.htm</ReadMeFile>
|
||||
<MSIFileName></MSIFileName>
|
||||
<MSIOptions></MSIOptions>
|
||||
<FollowKeyboardVersion/>
|
||||
</Options>
|
||||
<StartMenu>
|
||||
<Folder></Folder>
|
||||
<Items/>
|
||||
</StartMenu>
|
||||
<Info>
|
||||
<Name URL="">Simple Keyboard</Name>
|
||||
<Copyright URL="">© 2019 SIL International</Copyright>
|
||||
<Author URL="">Marc DUrdin</Author>
|
||||
</Info>
|
||||
<Files>
|
||||
<File>
|
||||
<Name>..\build\simple_keyboard.js</Name>
|
||||
<Description></Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.js</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>..\build\simple_keyboard.kvk</Name>
|
||||
<Description></Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.kvk</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>welcome.htm</Name>
|
||||
<Description></Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
<File>
|
||||
<Name>readme.htm</Name>
|
||||
<Description></Description>
|
||||
<CopyLocation>0</CopyLocation>
|
||||
<FileType>.htm</FileType>
|
||||
</File>
|
||||
</Files>
|
||||
<Keyboards>
|
||||
<Keyboard>
|
||||
<Name>Simple Keyboard</Name>
|
||||
<ID>simple_keyboard</ID>
|
||||
<Version>1.0</Version>
|
||||
<Languages/>
|
||||
</Keyboard>
|
||||
</Keyboards>
|
||||
<Strings/>
|
||||
</Package>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<visualkeyboard>
|
||||
<header>
|
||||
<version>10.0</version>
|
||||
<kbdname></kbdname>
|
||||
<flags/>
|
||||
</header>
|
||||
</visualkeyboard>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Start Using Simple Keyboard</title>
|
||||
<style type="text/css">
|
||||
p { font: 10pt Tahoma; }
|
||||
h1 { font: bold 16pt Tahoma; color: #4444cc; margin-bottom: 2px }
|
||||
h2 { font: bold 12pt Tahoma; color: #4444cc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Start Using Simple Keyboard</h1>
|
||||
|
||||
<p>
|
||||
Simple Keyboard 1.0 generated from template.
|
||||
</p>
|
||||
|
||||
<h1>Keyboard Layout</h1>
|
||||
|
||||
<!-- Insert Keyboard Layout Images or HTML here -->
|
||||
|
||||
<p>© 2019 SIL International</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Reference in a new issue