chore(developer): add some more keyboardtests

This commit is contained in:
Sabine 2022-10-12 17:22:38 +02:00
parent aeb000fbd3
commit f74e69682d
11 changed files with 1386 additions and 23 deletions

View file

@ -1,29 +1,43 @@
#-----------------------------------------
# Tests for kmcompxtest()
#-----------------------------------------
# **Tests for kmcompxtest()**
<br/>
This folder contains several kmn-files that are used for testing resulting Errorcodes.
These tests are all copied from balochi_phonetic and contain alterations of the data to produce (at least) 1 Error.
#-----------------------------------------
# Naming Convention:
# CERR_404D_balochi_phonetic.kmn
#-----------------------------------------
Most of these tests are copied from balochi_phonetic and contain alterations of the data to produce (at least) 1 Error.
<br/>
<br/>
---
## Naming Convention of kmn-files for using with kmcompxtest()
CERR_404D_balochi_phonetic.kmn
The naming convention of the files is as follows:
All Files MUST start with CERR_ followed by 4 characters and an underscore.
After the second underscore all combination of char can be used.
The 4 characters following CERR_ correspond to the last 4 digits of the Error-Code which is expected to be produced by this file.
( e.g. CERR_404D_balochi_phonetic.kmn should produce Error 0x0000404D).
* All Files **MUST** start with CERR_ followed by 4 characters and an underscore.
#-----------------------------------------
While running kmcompxtest extracts the 4 chars of the Filename and compares them to the actual Error found.
If they correspond the test will be marked as OK. (Code 0)
If the file is supposed to produce an Error and does not the test will be marked as FAILED (Code 1)
If the filename is not correct the test will be marked as FAILED (Code 99)
If more than 1 Error is produced only the Error coded in the Filename will be detected
#-----------------------------------------
* After the second underscore all combination of char can be used.
* The 4 characters following CERR_ correspond to the last 4 digits of the Error-Code which is expected to be produced by this file.
( e.g. CERR_404D_balochi_phonetic.kmn should produce Error 0x0000404D).
<br/>
---
<br/>
While running kmcompxtest extracts the 4 chars from the Filename and compares them to the actual Error found.
* If they correspond the test will be marked as OK. (Code 0)
* If the file is supposed to produce an Error and does not the test will be marked as FAILED (Code 1)
* If the filename is not correct the test will be marked as FAILED (Code 1)
* If more than 1 Error is produced only the Error coded in the Filename will be detected

View file

@ -0,0 +1,271 @@
c ***** This test will produce 2 Errors: ***************************
c ***** 1) it will be marked as FAIL when run in kmcompxtest *******
c ***** as a non-existing ErrorNr (0x00001234) is specified *****
c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced *******
c ******************************************************************
store(&VERSION) '10.0'
c ***** CERR_InvalidCharacter 0x00004034 ***************************
store(&NAME) 'Yorùbá 8'
store(&MESSAGE) 'A simple Unicode keyboard for Yorùbá, with the option to use either the modern dot or the traditional bar under the letters e, o, and s.'
store(&COPYRIGHT) '© 2012-2020 SIL International'
c ******************************************************************
store(&mnemoniclayout) '1'
0024
c store(&WINDOWSLANGUAGES) 'x046A'
c store(&LANGUAGE) 'x046A'
c store(&ETHNOLOGUECODE) 'yor'
store(&BITMAP) 'sil_yoruba8.ico'
store(&VISUALKEYBOARD) 'sil_yoruba8.kvks'
store(&TARGETS) 'desktop'
store(&KEYBOARDVERSION) '1.1'
begin Unicode > use(main)
group(main) using keys
c ===========
c ==Options==
c ===========
store(style) 'dot'
if(style='dot') + [CTRL '.'] > set(style='bar')
if(style='bar') + [CTRL '.'] > set(style='dot')
c ==========
c ==Stores==
c ==========
c Letters
store(base) 'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U'
store(grv) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9
store(act) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA
store(crc) U+00E2 U+00EA U+00EE U+00F4 U+00FB U+00C2 U+00CA U+00CE U+00D4 U+00DB
store(crn) U+01CE U+011B U+01D0 U+01D2 U+01D4 U+01CD U+011A U+01CF U+01D1 U+01D3
store(mac) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A
store(grv.all) outs(base) outs(grv) outs(grv) outs(grv) outs(grv) outs(grv)
store(act.all) outs(base) outs(act) outs(act) outs(act) outs(act) outs(act)
store(crc.all) outs(base) outs(crc) outs(crc) outs(crc) outs(crc) outs(crc)
store(crn.all) outs(base) outs(crn) outs(crn) outs(crn) outs(crn) outs(crn)
store(mac.all) outs(base) outs(mac) outs(mac) outs(mac) outs(mac) outs(mac)
store(not.grv) outs(grv) outs(base) outs(act) outs(crc) outs(crn) outs(mac)
store(not.act) outs(act) outs(base) outs(grv) outs(crc) outs(crn) outs(mac)
store(not.crc) outs(crc) outs(base) outs(grv) outs(act) outs(crn) outs(mac)
store(not.crn) outs(crn) outs(base) outs(grv) outs(act) outs(crc) outs(mac)
store(not.mac) outs(mac) outs(base) outs(grv) outs(act) outs(crc) outs(crn)
store(bar) 'e' 'o' 's' 'E' 'O' 'S'
store(v.bar) 'e' 'o' 'E' 'O'
store(dot) U+1EB9 U+1ECD U+1EB8 U+1ECC
store(nsl) 'm' 'n' 'M' 'N'
store(dot+nsl) outs(dot) outs(nsl)
c Accents
store(ac.grv) U+0300
store(ac.act) U+0301
store(ac.crc) U+0302
store(ac.crn) U+030C
store(ac.mac) U+0304
store(ac.all) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(ac.grv.all) nul outs(ac.grv) outs(ac.grv) outs(ac.grv) outs(ac.grv)
store(ac.act.all) nul outs(ac.act) outs(ac.act) outs(ac.act) outs(ac.act)
store(ac.crc.all) nul outs(ac.crc) outs(ac.crc) outs(ac.crc) outs(ac.crc)
store(ac.crn.all) nul outs(ac.crn) outs(ac.crn) outs(ac.crn) outs(ac.crn)
store(ac.mac.all) nul outs(ac.mac) outs(ac.mac) outs(ac.mac) outs(ac.mac)
store(not.ac.grv) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(not.ac.act) outs(ac.act) outs(ac.grv) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(not.ac.crc) outs(ac.crc) outs(ac.grv) outs(ac.act) outs(ac.crn) outs(ac.mac)
store(not.ac.crn) outs(ac.crn) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.mac)
store(not.ac.mac) outs(ac.mac) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn)
c Keys
store(key.grv) '['
store(key.act) ']'
store(key.crc) '{'
store(key.crn) '}'
store(key.mac) '|'
store(key.all) outs(key.grv) outs(key.act) outs(key.crc) outs(key.crn) outs(key.mac)
c ================
c ==Basic Output==
c ================
c Unshifted QWERTY US
+ '=' > '='
+ '-' > '-'
+ '0' > '0'
+ '9' > '9'
+ '8' > '8'
+ '7' > '7'
+ '6' > '6'
+ '5' > '5'
+ '4' > '4'
+ '3' > '3'
+ '2' > '2'
+ '1' > '1'
+ '`' > dk(un) c types underlying character
dk(un) + '`' > '`'
+ '\' > '\'
+ ']' > '´' c acute accent
dk(un) + ']' > ']'
+ '[' > '`' c grave accent
dk(un) + '[' > '['
+ 'p' > 'p'
+ 'o' > 'o'
+ 'i' > 'i'
+ 'u' > 'u'
+ 'y' > 'y'
+ 't' > 't'
+ 'r' > 'r'
+ 'e' > 'e'
+ 'w' > 'w'
+ 'q' > 'gb'
dk(un) + 'q' > 'q'
'gb' + [K_BKSP] > nul
+ "'" > "'"
+ ';' > ';'
+ 'l' > 'l'
+ 'k' > 'k'
+ 'j' > 'j'
+ 'h' > 'h'
+ 'g' > 'g'
+ 'f' > 'f'
+ 'd' > 'd'
+ 's' > 's'
+ 'a' > 'a'
+ '/' > '/'
+ '.' > '.'
+ ',' > ','
+ 'm' > 'm'
+ 'n' > 'n'
+ 'b' > 'b'
if(style='dot') + 'v' > U+1EB9
if(style='bar') + 'v' > U+0065 U+0329
if(style='dot') dk(un) + 'v' > 'v'
if(style='bar') dk(un) + 'v' > 'v'
+ 'c' > 'c'
if(style='dot') + 'x' > U+1ECD
if(style='bar') + 'x' > U+006F U+0329
if(style='dot') dk(un) + 'x' > 'x'
if(style='bar') dk(un) + 'x' > 'x'
if(style='dot') + 'z' > U+1E63
if(style='bar') + 'z' > U+0073 U+0329
if(style='dot') dk(un) + 'z' > 'z'
if(style='bar') dk(un) + 'z' > 'z'
c Shifted QWERTY US
+ '+' > '+'
+ '_' > '_'
+ ')' > ')'
+ '(' > '('
+ '*' > '*'
+ '&' > '&'
+ '^' > U+20A6
dk(un) + '^' > '^'
+ '%' > '%'
+ '$' > '$'
+ '#' > '#'
+ '@' > '@'
+ '!' > '!'
+ '~' > '~'
+ '|' > U+02C9 c macron accent
dk(un) + '|' > '|'
+ '}' > U+02C7 c caron accent
dk(un) + '}' > '}'
+ '{' > U+02C6 c circumflex accent
dk(un) + '{' > '{'
+ 'P' > 'P'
+ 'O' > 'O'
+ 'I' > 'I'
+ 'U' > 'U'
+ 'Y' > 'Y'
+ 'T' > 'T'
+ 'R' > 'R'
+ 'E' > 'E'
+ 'W' > 'W'
+ 'Q' > 'GB'
dk(un) + 'Q' > 'Q'
'GB' + [K_BKSP] > nul
+ '"' > '"'
+ ':' > ':'
+ 'L' > 'L'
+ 'K' > 'K'
+ 'J' > 'J'
+ 'H' > 'H'
+ 'G' > 'G'
+ 'F' > 'F'
+ 'D' > 'D'
+ 'S' > 'S'
+ 'A' > 'A'
+ '?' > '?'
+ '>' > '>'
+ '<' > '<'
+ 'M' > 'M'
+ 'N' > 'N'
+ 'B' > 'B'
if(style='dot') + 'V' > U+1EB8
if(style='bar') + 'V' > U+0045 U+0329
if(style='dot') dk(un) + 'V' > 'V'
if(style='bar') dk(un) + 'V' > 'V
+ 'C' > 'C'
if(style='dot') + 'X' > U+1ECC
if(style='bar') + 'X' > U+004F U+0329
if(style='dot') dk(un) + 'X' > 'X'
if(style='bar') dk(un) + 'X' > 'X
if(style='dot') + 'Z' > U+1E62
if(style='bar') + 'Z' > U+0053 U+0329
if(style='dot') dk(un) + 'Z' > 'Z'
if(style='bar') dk(un) + 'Z' > 'Z'
c Additional: QWERTY UK
+ '¬' > '¬'
+ '£' > '£'
c ===========
c ==Accents==
c ===========
c Backspace
any(bar) U+0329 + [K_BKSP] > nul
any(v.bar) U+0329 any(ac.all) + [K_BKSP] > nul
any(dot+nsl) any(ac.all) + [K_BKSP] > nul
c General
any(v.bar) U+0329 + any(key.all) > index(v.bar, 1) U+0329 index(ac.all, 3)
any(dot+nsl) + any(key.all) > index(dot+nsl, 1) index(ac.all, 2)
c Grave
any(not.grv) + any(key.grv) > index(grv.all, 1)
any(v.bar) U+0329 any(not.ac.grv) + any(key.grv) > index(v.bar, 1) U+0329 index(ac.grv.all, 3)
any(dot+nsl) any(not.ac.grv) + any(key.grv) > index(dot+nsl, 1) index(ac.grv.all, 2)
c Acute
any(not.act) + any(key.act) > index(act.all, 1)
any(v.bar) U+0329 any(not.ac.act) + any(key.act) > index(v.bar, 1) U+0329 index(ac.act.all, 3)
any(dot+nsl) any(not.ac.act) + any(key.act) > index(dot+nsl, 1) index(ac.act.all, 2)
c Circumflex
any(not.crc) + any(key.crc) > index(crc.all, 1)
any(v.bar) U+0329 any(not.ac.crc) + any(key.crc) > index(v.bar, 1) U+0329 index(ac.crc.all, 3)
any(dot+nsl) any(not.ac.crc) + any(key.crc) > index(dot+nsl, 1) index(ac.crc.all, 2)
c Caron
any(not.crn) + any(key.crn) > index(crn.all, 1)
any(v.bar) U+0329 any(not.ac.crn) + any(key.crn) > index(v.bar, 1) U+0329 index(ac.crn.all, 3)
any(dot+nsl) any(not.ac.crn) + any(key.crn) > index(dot+nsl, 1) index(ac.crn.all, 2)
c Macron
any(not.mac) + any(key.mac) > index(mac.all, 1)
any(v.bar) U+0329 any(not.ac.mac) + any(key.mac) > index(v.bar, 1) U+0329 index(ac.mac.all, 3)
any(dot+nsl) any(not.ac.mac) + any(key.mac) > index(dot+nsl, 1) index(ac.mac.all, 2)
c EOF

View file

@ -0,0 +1,136 @@
c ***** This test will produce 2 Errors: ***************************
c ***** 1) it will be marked as FAIL when run in kmcompxtest *******
c ***** as a non-existing ErrorNr (0x00040133) is specified *****
c ***** 2) CERR_InvalidStoreLine 0x00004013 will be produced *******
c ******************************************************************
c ***** CERR_InvalidStoreLine 0x00004013 ***************************
store(&VERSION '10.0'
c ******************************************************************
store(&NAME) 'Balochi Phonetic'
store(&TARGETS) 'any'
store(&KMW_RTL) '1'
store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout'
store(&KEYBOARDVERSION) '1.4.2'
store(&COPYRIGHT) '© 2017-2021 SIL International'
store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).'
store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.'
store(&VISUALKEYBOARD) 'balochi_phonetic.kvks'
store(&BITMAP) 'CERR__balochi_phonetic.ico'
begin Unicode > use(main)
group(main) using keys
+ [CTRL B08] > ''
+ [CTRL B09] > ''
+ [CTRL B10] > ''
+ [SHIFT CTRL E11] > '“'
+ [SHIFT CTRL E12] > '”'
+ [CTRL E11] > ''
+ [CTRL E12] > ''
+ [CTRL K_K] > 'ء'
+ [CTRL K_D] > 'ذ'
+ [K_EQUAL] > '='
+ [SHIFT K_8] > '*'
+ [SHIFT K_7] > '&'
+ [SHIFT K_5] > '%'
+ [SHIFT K_4] > '$'
+ [SHIFT K_3] > '#'
+ [SHIFT K_2] > '@'
+ [SHIFT K_1] > '!'
+ [SHIFT K_N] > 'ں'
+ [K_BKSLASH] > '۔'
+ [K_LBRKT] > ']'
+ [K_RBRKT] > '['
+ [K_F] > 'َ'
+ [K_V] > 'ِ'
+ [K_X] > 'ش'
+ [SHIFT K_H] > 'ح'
+ [SHIFT K_G] > 'ص'
+ [SHIFT K_Y] > 'ي'
+ [CTRL K_0] > '۰'
+ [CTRL K_9] > '۹'
+ [CTRL K_8] > '۸'
+ [CTRL K_7] > '۷'
+ [CTRL K_6] > '۶'
+ [CTRL K_5] > '۵'
+ [CTRL K_4] > '۴'
+ [CTRL K_3] > '۳'
+ [CTRL K_2] > '۲'
+ [CTRL K_1] > '۱'
+ [K_SLASH] > '/'
+ [K_HYPHEN] > '-'
+ [SHIFT K_COLON] > ':'
+ [SHIFT K_QUOTE] > '"'
+ [K_QUOTE] > U+0027
+ [K_O] > 'ُ'
+ [SHIFT K_O] > 'ْ'
+ [K_BKQUOTE] > 'ء'
+ [SHIFT K_W] > 'أ'
+ [SHIFT K_P] > 'ّ'
+ [SHIFT K_BKQUOTE] > 'ٔ'
+ [SHIFT K_J] > 'ض'
+ [SHIFT K_9] > ')'
+ [SHIFT K_RBRKT] > '{'
+ [SHIFT K_LBRKT] > '}'
+ [SHIFT K_0] > '('
+ [SHIFT K_SLASH] > '؟'
+ [SHIFT K_K] > 'ع'
+ [SHIFT K_EQUAL] > '«'
+ [SHIFT K_HYPHEN] > '»'
+ [SHIFT K_I] > 'ً'
+ [SHIFT K_PERIOD] > ''
+ [SHIFT K_COMMA] > ''
+ [SHIFT K_L] > 'ـ'
+ [SHIFT K_U] > 'ۀ'
+ [SHIFT K_B] > 'ة'
+ [SHIFT K_M] > 'غ'
+ [SHIFT K_F] > 'ف'
+ [SHIFT K_E] > 'ۓ'
+ [SHIFT K_Q] > 'ق'
+ [K_0] > '0'
+ [K_9] > '9'
+ [K_8] > '8'
+ [K_7] > '7'
+ [K_6] > '6'
+ [K_5] > '5'
+ [K_4] > '4'
+ [K_3] > '3'
+ [K_2] > '2'
+ [K_1] > '1'
+ [K_I] > 'ێ'
+ [SHIFT K_D] > 'ڈ'
+ [K_G] > 'گ'
+ [K_U] > 'ۆ'
+ [SHIFT K_R] > 'ڑ'
+ [SHIFT K_6] > ''
+ [SHIFT K_T] > 'ٹ'
+ [SHIFT K_V] > 'ظ'
+ [SHIFT K_C] > 'ط'
+ [SHIFT K_X] > 'خ'
+ [SHIFT K_Z] > 'ژ'
+ [SHIFT K_S] > 'ث'
+ [SHIFT K_A] > 'آ'
+ [K_PERIOD] > '.'
+ [K_COMMA] > '،'
+ [K_M] > 'م'
+ [K_N] > 'ن'
+ [K_B] > 'ب'
+ [K_C] > 'چ'
+ [K_Z] > 'ز'
+ [K_P] > 'پ'
+ [K_Y] > 'ی'
+ [K_T] > 'ت'
+ [K_R] > 'ر'
+ [K_E] > 'ے'
+ [K_W] > 'و'
+ [K_Q] > 'ئ'
+ [K_COLON] > '؛'
+ [K_L] > 'ل'
+ [K_K] > 'ک'
+ [K_J] > 'ج'
+ [K_H] > 'ه'
+ [K_D] > 'د'
+ [K_S] > 'س'
+ [K_A] > 'ا'

View file

@ -8,7 +8,7 @@ store(&COPYRIGHT) '© 2017-2021 SIL International'
store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).'
store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.'
store(&VISUALKEYBOARD) 'balochi_phonetic.kvks'
store(&BITMAP) 'CERR__balochi_phonetic.ico'
store(&BITMAP) 'CERR__balochi_phonetic.bmp'
begin Unicode > use(main)

View file

@ -0,0 +1,271 @@
c ***** This test will produce 2 Errors: ***************************
c ***** 1) it will be marked as FAIL when run in kmcompxtest *******
c ***** as the specified ErrorNr (0x0000402D) is not thrown *****
c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced *******
c ******************************************************************
store(&VERSION) '10.0'
c ***** CERR_InvalidCharacter 0x00004034 ***************************
store(&NAME) 'Yorùbá 8'
store(&MESSAGE) 'A simple Unicode keyboard for Yorùbá, with the option to use either the modern dot or the traditional bar under the letters e, o, and s.'
store(&COPYRIGHT) '© 2012-2020 SIL International'
c ******************************************************************
store(&mnemoniclayout) '1'
0024
c store(&WINDOWSLANGUAGES) 'x046A'
c store(&LANGUAGE) 'x046A'
c store(&ETHNOLOGUECODE) 'yor'
store(&BITMAP) 'sil_yoruba8.ico'
store(&VISUALKEYBOARD) 'sil_yoruba8.kvks'
store(&TARGETS) 'desktop'
store(&KEYBOARDVERSION) '1.1'
begin Unicode > use(main)
group(main) using keys
c ===========
c ==Options==
c ===========
store(style) 'dot'
if(style='dot') + [CTRL '.'] > set(style='bar')
if(style='bar') + [CTRL '.'] > set(style='dot')
c ==========
c ==Stores==
c ==========
c Letters
store(base) 'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U'
store(grv) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9
store(act) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA
store(crc) U+00E2 U+00EA U+00EE U+00F4 U+00FB U+00C2 U+00CA U+00CE U+00D4 U+00DB
store(crn) U+01CE U+011B U+01D0 U+01D2 U+01D4 U+01CD U+011A U+01CF U+01D1 U+01D3
store(mac) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A
store(grv.all) outs(base) outs(grv) outs(grv) outs(grv) outs(grv) outs(grv)
store(act.all) outs(base) outs(act) outs(act) outs(act) outs(act) outs(act)
store(crc.all) outs(base) outs(crc) outs(crc) outs(crc) outs(crc) outs(crc)
store(crn.all) outs(base) outs(crn) outs(crn) outs(crn) outs(crn) outs(crn)
store(mac.all) outs(base) outs(mac) outs(mac) outs(mac) outs(mac) outs(mac)
store(not.grv) outs(grv) outs(base) outs(act) outs(crc) outs(crn) outs(mac)
store(not.act) outs(act) outs(base) outs(grv) outs(crc) outs(crn) outs(mac)
store(not.crc) outs(crc) outs(base) outs(grv) outs(act) outs(crn) outs(mac)
store(not.crn) outs(crn) outs(base) outs(grv) outs(act) outs(crc) outs(mac)
store(not.mac) outs(mac) outs(base) outs(grv) outs(act) outs(crc) outs(crn)
store(bar) 'e' 'o' 's' 'E' 'O' 'S'
store(v.bar) 'e' 'o' 'E' 'O'
store(dot) U+1EB9 U+1ECD U+1EB8 U+1ECC
store(nsl) 'm' 'n' 'M' 'N'
store(dot+nsl) outs(dot) outs(nsl)
c Accents
store(ac.grv) U+0300
store(ac.act) U+0301
store(ac.crc) U+0302
store(ac.crn) U+030C
store(ac.mac) U+0304
store(ac.all) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(ac.grv.all) nul outs(ac.grv) outs(ac.grv) outs(ac.grv) outs(ac.grv)
store(ac.act.all) nul outs(ac.act) outs(ac.act) outs(ac.act) outs(ac.act)
store(ac.crc.all) nul outs(ac.crc) outs(ac.crc) outs(ac.crc) outs(ac.crc)
store(ac.crn.all) nul outs(ac.crn) outs(ac.crn) outs(ac.crn) outs(ac.crn)
store(ac.mac.all) nul outs(ac.mac) outs(ac.mac) outs(ac.mac) outs(ac.mac)
store(not.ac.grv) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(not.ac.act) outs(ac.act) outs(ac.grv) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(not.ac.crc) outs(ac.crc) outs(ac.grv) outs(ac.act) outs(ac.crn) outs(ac.mac)
store(not.ac.crn) outs(ac.crn) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.mac)
store(not.ac.mac) outs(ac.mac) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn)
c Keys
store(key.grv) '['
store(key.act) ']'
store(key.crc) '{'
store(key.crn) '}'
store(key.mac) '|'
store(key.all) outs(key.grv) outs(key.act) outs(key.crc) outs(key.crn) outs(key.mac)
c ================
c ==Basic Output==
c ================
c Unshifted QWERTY US
+ '=' > '='
+ '-' > '-'
+ '0' > '0'
+ '9' > '9'
+ '8' > '8'
+ '7' > '7'
+ '6' > '6'
+ '5' > '5'
+ '4' > '4'
+ '3' > '3'
+ '2' > '2'
+ '1' > '1'
+ '`' > dk(un) c types underlying character
dk(un) + '`' > '`'
+ '\' > '\'
+ ']' > '´' c acute accent
dk(un) + ']' > ']'
+ '[' > '`' c grave accent
dk(un) + '[' > '['
+ 'p' > 'p'
+ 'o' > 'o'
+ 'i' > 'i'
+ 'u' > 'u'
+ 'y' > 'y'
+ 't' > 't'
+ 'r' > 'r'
+ 'e' > 'e'
+ 'w' > 'w'
+ 'q' > 'gb'
dk(un) + 'q' > 'q'
'gb' + [K_BKSP] > nul
+ "'" > "'"
+ ';' > ';'
+ 'l' > 'l'
+ 'k' > 'k'
+ 'j' > 'j'
+ 'h' > 'h'
+ 'g' > 'g'
+ 'f' > 'f'
+ 'd' > 'd'
+ 's' > 's'
+ 'a' > 'a'
+ '/' > '/'
+ '.' > '.'
+ ',' > ','
+ 'm' > 'm'
+ 'n' > 'n'
+ 'b' > 'b'
if(style='dot') + 'v' > U+1EB9
if(style='bar') + 'v' > U+0065 U+0329
if(style='dot') dk(un) + 'v' > 'v'
if(style='bar') dk(un) + 'v' > 'v'
+ 'c' > 'c'
if(style='dot') + 'x' > U+1ECD
if(style='bar') + 'x' > U+006F U+0329
if(style='dot') dk(un) + 'x' > 'x'
if(style='bar') dk(un) + 'x' > 'x'
if(style='dot') + 'z' > U+1E63
if(style='bar') + 'z' > U+0073 U+0329
if(style='dot') dk(un) + 'z' > 'z'
if(style='bar') dk(un) + 'z' > 'z'
c Shifted QWERTY US
+ '+' > '+'
+ '_' > '_'
+ ')' > ')'
+ '(' > '('
+ '*' > '*'
+ '&' > '&'
+ '^' > U+20A6
dk(un) + '^' > '^'
+ '%' > '%'
+ '$' > '$'
+ '#' > '#'
+ '@' > '@'
+ '!' > '!'
+ '~' > '~'
+ '|' > U+02C9 c macron accent
dk(un) + '|' > '|'
+ '}' > U+02C7 c caron accent
dk(un) + '}' > '}'
+ '{' > U+02C6 c circumflex accent
dk(un) + '{' > '{'
+ 'P' > 'P'
+ 'O' > 'O'
+ 'I' > 'I'
+ 'U' > 'U'
+ 'Y' > 'Y'
+ 'T' > 'T'
+ 'R' > 'R'
+ 'E' > 'E'
+ 'W' > 'W'
+ 'Q' > 'GB'
dk(un) + 'Q' > 'Q'
'GB' + [K_BKSP] > nul
+ '"' > '"'
+ ':' > ':'
+ 'L' > 'L'
+ 'K' > 'K'
+ 'J' > 'J'
+ 'H' > 'H'
+ 'G' > 'G'
+ 'F' > 'F'
+ 'D' > 'D'
+ 'S' > 'S'
+ 'A' > 'A'
+ '?' > '?'
+ '>' > '>'
+ '<' > '<'
+ 'M' > 'M'
+ 'N' > 'N'
+ 'B' > 'B'
if(style='dot') + 'V' > U+1EB8
if(style='bar') + 'V' > U+0045 U+0329
if(style='dot') dk(un) + 'V' > 'V'
if(style='bar') dk(un) + 'V' > 'V
+ 'C' > 'C'
if(style='dot') + 'X' > U+1ECC
if(style='bar') + 'X' > U+004F U+0329
if(style='dot') dk(un) + 'X' > 'X'
if(style='bar') dk(un) + 'X' > 'X
if(style='dot') + 'Z' > U+1E62
if(style='bar') + 'Z' > U+0053 U+0329
if(style='dot') dk(un) + 'Z' > 'Z'
if(style='bar') dk(un) + 'Z' > 'Z'
c Additional: QWERTY UK
+ '¬' > '¬'
+ '£' > '£'
c ===========
c ==Accents==
c ===========
c Backspace
any(bar) U+0329 + [K_BKSP] > nul
any(v.bar) U+0329 any(ac.all) + [K_BKSP] > nul
any(dot+nsl) any(ac.all) + [K_BKSP] > nul
c General
any(v.bar) U+0329 + any(key.all) > index(v.bar, 1) U+0329 index(ac.all, 3)
any(dot+nsl) + any(key.all) > index(dot+nsl, 1) index(ac.all, 2)
c Grave
any(not.grv) + any(key.grv) > index(grv.all, 1)
any(v.bar) U+0329 any(not.ac.grv) + any(key.grv) > index(v.bar, 1) U+0329 index(ac.grv.all, 3)
any(dot+nsl) any(not.ac.grv) + any(key.grv) > index(dot+nsl, 1) index(ac.grv.all, 2)
c Acute
any(not.act) + any(key.act) > index(act.all, 1)
any(v.bar) U+0329 any(not.ac.act) + any(key.act) > index(v.bar, 1) U+0329 index(ac.act.all, 3)
any(dot+nsl) any(not.ac.act) + any(key.act) > index(dot+nsl, 1) index(ac.act.all, 2)
c Circumflex
any(not.crc) + any(key.crc) > index(crc.all, 1)
any(v.bar) U+0329 any(not.ac.crc) + any(key.crc) > index(v.bar, 1) U+0329 index(ac.crc.all, 3)
any(dot+nsl) any(not.ac.crc) + any(key.crc) > index(dot+nsl, 1) index(ac.crc.all, 2)
c Caron
any(not.crn) + any(key.crn) > index(crn.all, 1)
any(v.bar) U+0329 any(not.ac.crn) + any(key.crn) > index(v.bar, 1) U+0329 index(ac.crn.all, 3)
any(dot+nsl) any(not.ac.crn) + any(key.crn) > index(dot+nsl, 1) index(ac.crn.all, 2)
c Macron
any(not.mac) + any(key.mac) > index(mac.all, 1)
any(v.bar) U+0329 any(not.ac.mac) + any(key.mac) > index(v.bar, 1) U+0329 index(ac.mac.all, 3)
any(dot+nsl) any(not.ac.mac) + any(key.mac) > index(dot+nsl, 1) index(ac.mac.all, 2)
c EOF

View file

@ -0,0 +1,130 @@
store(&VERSION) '10.0'
store(&NAME) 'Balochi Phonetic'
store(&TARGETS) 'any'
store(&KMW_RTL) '1'
store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout'
store(&KEYBOARDVERSION) '1.4.2'
c ***** CERR_InvalidCharacter 0x00004034 ***************************
store(&COPYRIGHT) '<27> 2012 U+1234 -2020 SIL International'
c ******************************************************************
store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).'
store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.'
store(&VISUALKEYBOARD) 'balochi_phonetic.kvks'
store(&BITMAP) 'CERR__balochi_phonetic.ico'
begin Unicode > use(main)
group(main) using keys
+ [CTRL B08] > ''
+ [CTRL B09] > ''
+ [CTRL B10] > ''
+ [SHIFT CTRL E11] > '“'
+ [SHIFT CTRL E12] > '”'
+ [CTRL E11] > ''
+ [CTRL E12] > ''
+ [CTRL K_K] > 'ء'
+ [CTRL K_D] > 'ذ'
+ [K_EQUAL] > '='
+ [SHIFT K_8] > '*'
+ [SHIFT K_7] > '&'
+ [SHIFT K_5] > '%'
+ [SHIFT K_4] > '$'
+ [SHIFT K_3] > '#'
+ [SHIFT K_2] > '@'
+ [SHIFT K_1] > '!'
+ [SHIFT K_N] > 'ں'
+ [K_BKSLASH] > '۔'
+ [K_LBRKT] > ']'
+ [K_RBRKT] > '['
+ [K_F] > 'َ'
+ [K_V] > 'ِ'
+ [K_X] > 'ش'
+ [SHIFT K_H] > 'ح'
+ [SHIFT K_G] > 'ص'
+ [SHIFT K_Y] > 'ي'
+ [CTRL K_0] > '۰'
+ [CTRL K_9] > '۹'
+ [CTRL K_8] > '۸'
+ [CTRL K_7] > '۷'
+ [CTRL K_6] > '۶'
+ [CTRL K_5] > '۵'
+ [CTRL K_4] > '۴'
+ [CTRL K_3] > '۳'
+ [CTRL K_2] > '۲'
+ [CTRL K_1] > '۱'
+ [K_SLASH] > '/'
+ [K_HYPHEN] > '-'
+ [SHIFT K_COLON] > ':'
+ [SHIFT K_QUOTE] > '"'
+ [K_QUOTE] > U+0027
+ [K_O] > 'ُ'
+ [SHIFT K_O] > 'ْ'
+ [K_BKQUOTE] > 'ء'
+ [SHIFT K_W] > 'أ'
+ [SHIFT K_P] > 'ّ'
+ [SHIFT K_BKQUOTE] > 'ٔ'
+ [SHIFT K_J] > 'ض'
+ [SHIFT K_9] > ')'
+ [SHIFT K_RBRKT] > '{'
+ [SHIFT K_LBRKT] > '}'
+ [SHIFT K_0] > '('
+ [SHIFT K_SLASH] > '؟'
+ [SHIFT K_K] > 'ع'
+ [SHIFT K_EQUAL] > '«'
+ [SHIFT K_HYPHEN] > '»'
+ [SHIFT K_I] > 'ً'
+ [SHIFT K_PERIOD] > ''
+ [SHIFT K_COMMA] > ''
+ [SHIFT K_L] > 'ـ'
+ [SHIFT K_U] > 'ۀ'
+ [SHIFT K_B] > 'ة'
+ [SHIFT K_M] > 'غ'
+ [SHIFT K_F] > 'ف'
+ [SHIFT K_E] > 'ۓ'
+ [SHIFT K_Q] > 'ق'
+ [K_0] > '0'
+ [K_9] > '9'
+ [K_8] > '8'
+ [K_7] > '7'
+ [K_6] > '6'
+ [K_5] > '5'
+ [K_4] > '4'
+ [K_3] > '3'
+ [K_2] > '2'
+ [K_1] > '1'
+ [K_I] > 'ێ'
+ [SHIFT K_D] > 'ڈ'
+ [K_G] > 'گ'
+ [K_U] > 'ۆ'
+ [SHIFT K_R] > 'ڑ'
+ [SHIFT K_6] > ''
+ [SHIFT K_T] > 'ٹ'
+ [SHIFT K_V] > 'ظ'
+ [SHIFT K_C] > 'ط'
+ [SHIFT K_X] > 'خ'
+ [SHIFT K_Z] > 'ژ'
+ [SHIFT K_S] > 'ث'
+ [SHIFT K_A] > 'آ'
+ [K_PERIOD] > '.'
+ [K_COMMA] > '،'
+ [K_M] > 'م'
+ [K_N] > 'ن'
+ [K_B] > 'ب'
+ [K_C] > 'چ'
+ [K_Z] > 'ز'
+ [K_P] > 'پ'
+ [K_Y] > 'ی'
+ [K_T] > 'ت'
+ [K_R] > 'ر'
+ [K_E] > 'ے'
+ [K_W] > 'و'
+ [K_Q] > 'ئ'
+ [K_COLON] > '؛'
+ [K_L] > 'ل'
+ [K_K] > 'ک'
+ [K_J] > 'ج'
+ [K_H] > 'ه'
+ [K_D] > 'د'
+ [K_S] > 'س'
+ [K_A] > 'ا'

View file

@ -0,0 +1,133 @@
c ***** This test will produce 1 Error: ****************************
c ***** It will be marked as FAIL when run in kmcompxtest **********
c ***** as a non-existing ErrorNr (0x00001234) is specified *****
c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced *******
c ******************************************************************
store(&VERSION) '10.0'
store(&NAME) 'Balochi Phonetic'
store(&TARGETS) 'any'
store(&KMW_RTL) '1'
store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout'
store(&KEYBOARDVERSION) '1.5'
store(&COPYRIGHT) '© SIL International'
store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).'
store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.'
store(&VISUALKEYBOARD) 'balochi_phonetic.kvks'
store(&BITMAP) 'balochi__phonetic.ico'
begin Unicode > use(main)
group(main) using keys
+ [CTRL B08] > ''
+ [CTRL B09] > ''
+ [CTRL B10] > ''
+ [SHIFT CTRL E11] > '“'
+ [SHIFT CTRL E12] > '”'
+ [CTRL E11] > ''
+ [CTRL E12] > ''
+ [CTRL K_K] > 'ء'
+ [CTRL K_D] > 'ذ'
+ [K_EQUAL] > '='
+ [SHIFT K_8] > '*'
+ [SHIFT K_7] > '&'
+ [SHIFT K_5] > '%'
+ [SHIFT K_4] > '$'
+ [SHIFT K_3] > '#'
+ [SHIFT K_2] > '@'
+ [SHIFT K_1] > '!'
+ [SHIFT K_N] > 'ں'
+ [K_BKSLASH] > '۔'
+ [K_LBRKT] > ']'
+ [K_RBRKT] > '['
+ [K_F] > 'َ'
+ [K_V] > 'ِ'
+ [K_X] > 'ش'
+ [SHIFT K_H] > 'ح'
+ [SHIFT K_G] > 'ص'
+ [SHIFT K_Y] > 'ي'
+ [CTRL K_0] > '۰'
+ [CTRL K_9] > '۹'
+ [CTRL K_8] > '۸'
+ [CTRL K_7] > '۷'
+ [CTRL K_6] > '۶'
+ [CTRL K_5] > '۵'
+ [CTRL K_4] > '۴'
+ [CTRL K_3] > '۳'
+ [CTRL K_2] > '۲'
+ [CTRL K_1] > '۱'
+ [K_SLASH] > '/'
+ [K_HYPHEN] > '-'
+ [SHIFT K_COLON] > ':'
+ [SHIFT K_QUOTE] > '"'
+ [K_QUOTE] > U+0027
+ [K_O] > 'ُ'
+ [SHIFT K_O] > 'ْ'
+ [K_BKQUOTE] > 'ء'
+ [SHIFT K_W] > 'أ'
+ [SHIFT K_P] > 'ّ'
+ [SHIFT K_BKQUOTE] > 'ٔ'
+ [SHIFT K_J] > 'ض'
+ [SHIFT K_9] > ')'
+ [SHIFT K_RBRKT] > '{'
+ [SHIFT K_LBRKT] > '}'
+ [SHIFT K_0] > '('
+ [SHIFT K_SLASH] > '؟'
+ [SHIFT K_K] > 'ع'
+ [SHIFT K_EQUAL] > '«'
+ [SHIFT K_HYPHEN] > '»'
+ [SHIFT K_I] > 'ً'
+ [SHIFT K_PERIOD] > ''
+ [SHIFT K_COMMA] > ''
+ [SHIFT K_L] > 'ـ'
+ [SHIFT K_U] > 'ۀ'
+ [SHIFT K_B] > 'ة'
+ [SHIFT K_M] > 'غ'
+ [SHIFT K_F] > 'ف'
+ [SHIFT K_E] > 'ۓ'
+ [SHIFT K_Q] > 'ق'
+ [K_0] > '0'
+ [K_9] > '9'
+ [K_8] > '8'
+ [K_7] > '7'
+ [K_6] > '6'
+ [K_5] > '5'
+ [K_4] > '4'
+ [K_3] > '3'
+ [K_2] > '2'
+ [K_1] > '1'
+ [K_I] > 'ێ'
+ [SHIFT K_D] > 'ڈ'
+ [K_G] > 'گ'
+ [K_U] > 'ۆ'
+ [SHIFT K_R] > 'ڑ'
+ [SHIFT K_6] > ''
+ [SHIFT K_T] > 'ٹ'
+ [SHIFT K_V] > 'ظ'
+ [SHIFT K_C] > 'ط'
+ [SHIFT K_X] > 'خ'
+ [SHIFT K_Z] > 'ژ'
+ [SHIFT K_S] > 'ث'
+ [SHIFT K_A] > 'آ'
+ [K_PERIOD] > '.'
+ [K_COMMA] > '،'
+ [K_M] > 'م'
+ [K_N] > 'ن'
+ [K_B] > 'ب'
+ [K_C] > 'چ'
+ [K_Z] > 'ز'
+ [K_P] > 'پ'
+ [K_Y] > 'ی'
+ [K_T] > 'ت'
+ [K_R] > 'ر'
+ [K_E] > 'ے'
+ [K_W] > 'و'
+ [K_Q] > 'ئ'
+ [K_COLON] > '؛'
+ [K_L] > 'ل'
+ [K_K] > 'ک'
+ [K_J] > 'ج'
+ [K_H] > 'ه'
+ [K_D] > 'د'
+ [K_S] > 'س'
+ [K_A] > 'ا'

View file

@ -0,0 +1,272 @@
c ***** This test will produce 2 Errors: ***************************
c ***** 1) it will be marked as FAIL when run in kmcompxtest *******
c ***** as it does not specify an Error + Nr ( no CERR_xxxx) ****
c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced *******
c ******************************************************************
store(&VERSION) '10.0'
c ***** CERR_InvalidCharacter 0x00004034 ***************************
store(&NAME) 'Yorùbá 8'
store(&MESSAGE) 'A simple Unicode keyboard for Yorùbá, with the option to use either the modern dot or the traditional bar under the letters e, o, and s.'
store(&COPYRIGHT) '© 2012-2020 SIL International'
c ******************************************************************
store(&mnemoniclayout) '1'
c store(&WINDOWSLANGUAGES) 'x046A'
c store(&LANGUAGE) 'x046A'
c store(&ETHNOLOGUECODE) 'yor'
store(&BITMAP) 'sil_yoruba8.ico'
store(&VISUALKEYBOARD) 'sil_yoruba8.kvks'
store(&TARGETS) 'desktop'
store(&KEYBOARDVERSION) '1.1'
begin Unicode > use(main)
group(main) using keys
c ===========
c ==Options==
c ===========
store(style) 'dot'
if(style='dot') + [CTRL '.'] > set(style='bar')
if(style='bar') + [CTRL '.'] > set(style='dot')
c ==========
c ==Stores==
c ==========
c Letters
store(base) 'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U'
store(grv) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9
store(act) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA
store(crc) U+00E2 U+00EA U+00EE U+00F4 U+00FB U+00C2 U+00CA U+00CE U+00D4 U+00DB
store(crn) U+01CE U+011B U+01D0 U+01D2 U+01D4 U+01CD U+011A U+01CF U+01D1 U+01D3
store(mac) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A
store(grv.all) outs(base) outs(grv) outs(grv) outs(grv) outs(grv) outs(grv)
store(act.all) outs(base) outs(act) outs(act) outs(act) outs(act) outs(act)
store(crc.all) outs(base) outs(crc) outs(crc) outs(crc) outs(crc) outs(crc)
store(crn.all) outs(base) outs(crn) outs(crn) outs(crn) outs(crn) outs(crn)
store(mac.all) outs(base) outs(mac) outs(mac) outs(mac) outs(mac) outs(mac)
store(not.grv) outs(grv) outs(base) outs(act) outs(crc) outs(crn) outs(mac)
store(not.act) outs(act) outs(base) outs(grv) outs(crc) outs(crn) outs(mac)
store(not.crc) outs(crc) outs(base) outs(grv) outs(act) outs(crn) outs(mac)
store(not.crn) outs(crn) outs(base) outs(grv) outs(act) outs(crc) outs(mac)
store(not.mac) outs(mac) outs(base) outs(grv) outs(act) outs(crc) outs(crn)
store(bar) 'e' 'o' 's' 'E' 'O' 'S'
store(v.bar) 'e' 'o' 'E' 'O'
store(dot) U+1EB9 U+1ECD U+1EB8 U+1ECC
store(nsl) 'm' 'n' 'M' 'N'
store(dot+nsl) outs(dot) outs(nsl)
c Accents
store(ac.grv) U+0300
store(ac.act) U+0301
store(ac.crc) U+0302
store(ac.crn) U+030C
store(ac.mac) U+0304
store(ac.all) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(ac.grv.all) nul outs(ac.grv) outs(ac.grv) outs(ac.grv) outs(ac.grv)
store(ac.act.all) nul outs(ac.act) outs(ac.act) outs(ac.act) outs(ac.act)
store(ac.crc.all) nul outs(ac.crc) outs(ac.crc) outs(ac.crc) outs(ac.crc)
store(ac.crn.all) nul outs(ac.crn) outs(ac.crn) outs(ac.crn) outs(ac.crn)
store(ac.mac.all) nul outs(ac.mac) outs(ac.mac) outs(ac.mac) outs(ac.mac)
store(not.ac.grv) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(not.ac.act) outs(ac.act) outs(ac.grv) outs(ac.crc) outs(ac.crn) outs(ac.mac)
store(not.ac.crc) outs(ac.crc) outs(ac.grv) outs(ac.act) outs(ac.crn) outs(ac.mac)
store(not.ac.crn) outs(ac.crn) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.mac)
store(not.ac.mac) outs(ac.mac) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn)
c Keys
store(key.grv) '['
store(key.act) ']'
store(key.crc) '{'
store(key.crn) '}'
store(key.mac) '|'
store(key.all) outs(key.grv) outs(key.act) outs(key.crc) outs(key.crn) outs(key.mac)
c ================
c ==Basic Output==
c ================
c Unshifted QWERTY US
+ '=' > '='
+ '-' > '-'
+ '0' > '0'
+ '9' > '9'
+ '8' > '8'
+ '7' > '7'
+ '6' > '6'
+ '5' > '5'
+ '4' > '4'
+ '3' > '3'
+ '2' > '2'
+ '1' > '1'
+ '`' > dk(un) c types underlying character
dk(un) + '`' > '`'
+ '\' > '\'
+ ']' > '´' c acute accent
dk(un) + ']' > ']'
+ '[' > '`' c grave accent
dk(un) + '[' > '['
+ 'p' > 'p'
+ 'o' > 'o'
+ 'i' > 'i'
+ 'u' > 'u'
+ 'y' > 'y'
+ 't' > 't'
+ 'r' > 'r'
+ 'e' > 'e'
+ 'w' > 'w'
+ 'q' > 'gb'
dk(un) + 'q' > 'q'
'gb' + [K_BKSP] > nul
+ "'" > "'"
+ ';' > ';'
+ 'l' > 'l'
+ 'k' > 'k'
+ 'j' > 'j'
+ 'h' > 'h'
+ 'g' > 'g'
+ 'f' > 'f'
+ 'd' > 'd'
+ 's' > 's'
+ 'a' > 'a'
+ '/' > '/'
+ '.' > '.'
+ ',' > ','
+ 'm' > 'm'
+ 'n' > 'n'
+ 'b' > 'b'
if(style='dot') + 'v' > U+1EB9
if(style='bar') + 'v' > U+0065 U+0329
if(style='dot') dk(un) + 'v' > 'v'
if(style='bar') dk(un) + 'v' > 'v'
+ 'c' > 'c'
if(style='dot') + 'x' > U+1ECD
if(style='bar') + 'x' > U+006F U+0329
if(style='dot') dk(un) + 'x' > 'x'
if(style='bar') dk(un) + 'x' > 'x'
if(style='dot') + 'z' > U+1E63
if(style='bar') + 'z' > U+0073 U+0329
if(style='dot') dk(un) + 'z' > 'z'
if(style='bar') dk(un) + 'z' > 'z'
c Shifted QWERTY US
+ '+' > '+'
+ '_' > '_'
+ ')' > ')'
+ '(' > '('
+ '*' > '*'
+ '&' > '&'
+ '^' > U+20A6
dk(un) + '^' > '^'
+ '%' > '%'
+ '$' > '$'
+ '#' > '#'
+ '@' > '@'
+ '!' > '!'
+ '~' > '~'
+ '|' > U+02C9 c macron accent
dk(un) + '|' > '|'
+ '}' > U+02C7 c caron accent
dk(un) + '}' > '}'
+ '{' > U+02C6 c circumflex accent
dk(un) + '{' > '{'
+ 'P' > 'P'
+ 'O' > 'O'
+ 'I' > 'I'
+ 'U' > 'U'
+ 'Y' > 'Y'
+ 'T' > 'T'
+ 'R' > 'R'
+ 'E' > 'E'
+ 'W' > 'W'
+ 'Q' > 'GB'
dk(un) + 'Q' > 'Q'
'GB' + [K_BKSP] > nul
+ '"' > '"'
+ ':' > ':'
+ 'L' > 'L'
+ 'K' > 'K'
+ 'J' > 'J'
+ 'H' > 'H'
+ 'G' > 'G'
+ 'F' > 'F'
+ 'D' > 'D'
+ 'S' > 'S'
+ 'A' > 'A'
+ '?' > '?'
+ '>' > '>'
+ '<' > '<'
+ 'M' > 'M'
+ 'N' > 'N'
+ 'B' > 'B'
if(style='dot') + 'V' > U+1EB8
if(style='bar') + 'V' > U+0045 U+0329
if(style='dot') dk(un) + 'V' > 'V'
if(style='bar') dk(un) + 'V' > 'V
+ 'C' > 'C'
if(style='dot') + 'X' > U+1ECC
if(style='bar') + 'X' > U+004F U+0329
if(style='dot') dk(un) + 'X' > 'X'
if(style='bar') dk(un) + 'X' > 'X
if(style='dot') + 'Z' > U+1E62
if(style='bar') + 'Z' > U+0053 U+0329
if(style='dot') dk(un) + 'Z' > 'Z'
if(style='bar') dk(un) + 'Z' > 'Z'
c Additional: QWERTY UK
+ '¬' > '¬'
+ '£' > '£'
c ===========
c ==Accents==
c ===========
c Backspace
any(bar) U+0329 + [K_BKSP] > nul
any(v.bar) U+0329 any(ac.all) + [K_BKSP] > nul
any(dot+nsl) any(ac.all) + [K_BKSP] > nul
c General
any(v.bar) U+0329 + any(key.all) > index(v.bar, 1) U+0329 index(ac.all, 3)
any(dot+nsl) + any(key.all) > index(dot+nsl, 1) index(ac.all, 2)
c Grave
any(not.grv) + any(key.grv) > index(grv.all, 1)
any(v.bar) U+0329 any(not.ac.grv) + any(key.grv) > index(v.bar, 1) U+0329 index(ac.grv.all, 3)
any(dot+nsl) any(not.ac.grv) + any(key.grv) > index(dot+nsl, 1) index(ac.grv.all, 2)
c Acute
any(not.act) + any(key.act) > index(act.all, 1)
any(v.bar) U+0329 any(not.ac.act) + any(key.act) > index(v.bar, 1) U+0329 index(ac.act.all, 3)
any(dot+nsl) any(not.ac.act) + any(key.act) > index(dot+nsl, 1) index(ac.act.all, 2)
c Circumflex
any(not.crc) + any(key.crc) > index(crc.all, 1)
any(v.bar) U+0329 any(not.ac.crc) + any(key.crc) > index(v.bar, 1) U+0329 index(ac.crc.all, 3)
any(dot+nsl) any(not.ac.crc) + any(key.crc) > index(dot+nsl, 1) index(ac.crc.all, 2)
c Caron
any(not.crn) + any(key.crn) > index(crn.all, 1)
any(v.bar) U+0329 any(not.ac.crn) + any(key.crn) > index(v.bar, 1) U+0329 index(ac.crn.all, 3)
any(dot+nsl) any(not.ac.crn) + any(key.crn) > index(dot+nsl, 1) index(ac.crn.all, 2)
c Macron
any(not.mac) + any(key.mac) > index(mac.all, 1)
any(v.bar) U+0329 any(not.ac.mac) + any(key.mac) > index(v.bar, 1) U+0329 index(ac.mac.all, 3)
any(dot+nsl) any(not.ac.mac) + any(key.mac) > index(dot+nsl, 1) index(ac.mac.all, 2)
c EOF

View file

@ -0,0 +1,136 @@
c ***** This test will produce 2 Errors: ***************************
c ***** 1) it will be marked as FAIL when run in kmcompxtest *******
c ***** as the Name starts with xCERR instead of CERR ***********
c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced *******
c ******************************************************************
store(&VERSION) '10.0'
store(&NAME) 'Balochi Phonetic'
store(&TARGETS) 'any'
store(&KMW_RTL) '1'
store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout'
store(&KEYBOARDVERSION) '1.4.2'
c ***** CERR_InvalidCharacter 0x00004034 ***************************
store(&COPYRIGHT) U+11FFFF
c ******************************************************************
store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).'
store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.'
store(&VISUALKEYBOARD) 'balochi_phonetic.kvks'
store(&BITMAP) 'CERR__balochi_phonetic.ico'
begin Unicode > use(main)
group(main) using keys
+ [CTRL B08] > ''
+ [CTRL B09] > ''
+ [CTRL B10] > ''
+ [SHIFT CTRL E11] > '“'
+ [SHIFT CTRL E12] > '”'
+ [CTRL E11] > ''
+ [CTRL E12] > ''
+ [CTRL K_K] > 'ء'
+ [CTRL K_D] > 'ذ'
+ [K_EQUAL] > '='
+ [SHIFT K_8] > '*'
+ [SHIFT K_7] > '&'
+ [SHIFT K_5] > '%'
+ [SHIFT K_4] > '$'
+ [SHIFT K_3] > '#'
+ [SHIFT K_2] > '@'
+ [SHIFT K_1] > '!'
+ [SHIFT K_N] > 'ں'
+ [K_BKSLASH] > '۔'
+ [K_LBRKT] > ']'
+ [K_RBRKT] > '['
+ [K_F] > 'َ'
+ [K_V] > 'ِ'
+ [K_X] > 'ش'
+ [SHIFT K_H] > 'ح'
+ [SHIFT K_G] > 'ص'
+ [SHIFT K_Y] > 'ي'
+ [CTRL K_0] > '۰'
+ [CTRL K_9] > '۹'
+ [CTRL K_8] > '۸'
+ [CTRL K_7] > '۷'
+ [CTRL K_6] > '۶'
+ [CTRL K_5] > '۵'
+ [CTRL K_4] > '۴'
+ [CTRL K_3] > '۳'
+ [CTRL K_2] > '۲'
+ [CTRL K_1] > '۱'
+ [K_SLASH] > '/'
+ [K_HYPHEN] > '-'
+ [SHIFT K_COLON] > ':'
+ [SHIFT K_QUOTE] > '"'
+ [K_QUOTE] > U+0027
+ [K_O] > 'ُ'
+ [SHIFT K_O] > 'ْ'
+ [K_BKQUOTE] > 'ء'
+ [SHIFT K_W] > 'أ'
+ [SHIFT K_P] > 'ّ'
+ [SHIFT K_BKQUOTE] > 'ٔ'
+ [SHIFT K_J] > 'ض'
+ [SHIFT K_9] > ')'
+ [SHIFT K_RBRKT] > '{'
+ [SHIFT K_LBRKT] > '}'
+ [SHIFT K_0] > '('
+ [SHIFT K_SLASH] > '؟'
+ [SHIFT K_K] > 'ع'
+ [SHIFT K_EQUAL] > '«'
+ [SHIFT K_HYPHEN] > '»'
+ [SHIFT K_I] > 'ً'
+ [SHIFT K_PERIOD] > ''
+ [SHIFT K_COMMA] > ''
+ [SHIFT K_L] > 'ـ'
+ [SHIFT K_U] > 'ۀ'
+ [SHIFT K_B] > 'ة'
+ [SHIFT K_M] > 'غ'
+ [SHIFT K_F] > 'ف'
+ [SHIFT K_E] > 'ۓ'
+ [SHIFT K_Q] > 'ق'
+ [K_0] > '0'
+ [K_9] > '9'
+ [K_8] > '8'
+ [K_7] > '7'
+ [K_6] > '6'
+ [K_5] > '5'
+ [K_4] > '4'
+ [K_3] > '3'
+ [K_2] > '2'
+ [K_1] > '1'
+ [K_I] > 'ێ'
+ [SHIFT K_D] > 'ڈ'
+ [K_G] > 'گ'
+ [K_U] > 'ۆ'
+ [SHIFT K_R] > 'ڑ'
+ [SHIFT K_6] > ''
+ [SHIFT K_T] > 'ٹ'
+ [SHIFT K_V] > 'ظ'
+ [SHIFT K_C] > 'ط'
+ [SHIFT K_X] > 'خ'
+ [SHIFT K_Z] > 'ژ'
+ [SHIFT K_S] > 'ث'
+ [SHIFT K_A] > 'آ'
+ [K_PERIOD] > '.'
+ [K_COMMA] > '،'
+ [K_M] > 'م'
+ [K_N] > 'ن'
+ [K_B] > 'ب'
+ [K_C] > 'چ'
+ [K_Z] > 'ز'
+ [K_P] > 'پ'
+ [K_Y] > 'ی'
+ [K_T] > 'ت'
+ [K_R] > 'ر'
+ [K_E] > 'ے'
+ [K_W] > 'و'
+ [K_Q] > 'ئ'
+ [K_COLON] > '؛'
+ [K_L] > 'ل'
+ [K_K] > 'ک'
+ [K_J] > 'ج'
+ [K_H] > 'ه'
+ [K_D] > 'د'
+ [K_S] > 'س'
+ [K_A] > 'ا'

View file

@ -6,8 +6,8 @@ rem no *bmp file included in Folder
rem - eKwTamil99UniUpdt
rem use of other folders than /source
rem - vn_telex/raw/header
rem - vn_vni/raw/header
rem - vietnamese_telex_legacy\extras\vn_kmn_compiler\vn_telex\raw
rem - vietnamese_vni\extras\vn_kmn_compiler\keyboard\vn_vni\raw
rem need more time to prevent TIMEOUT ( run while debugging in VS)
rem - vietnamese_telex

View file

@ -6,7 +6,7 @@
#include <windows.h>
#include <stdio.h>
#include <kmcompx.h>
#include "kmcompx.h"
#include <iostream>
#include <vector>
#include <string>