diff --git a/web/samples/chirality/chirality.js b/web/samples/chirality/chirality.js new file mode 100644 index 0000000000..377ba73b8c --- /dev/null +++ b/web/samples/chirality/chirality.js @@ -0,0 +1,149 @@ +KeymanWeb.KR(new Keyboard_chirality()); + +function Keyboard_chirality() { + this.KI = "Keyboard_chirality"; + this.KN = "Development Chirality Test Keyboard"; + this.KV = { + KMBM: 0x001F, + F: ' 1em "Arial"', + K102: 0, + KLS: { 'default': new Array("`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "", "", "", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\", "", "", "", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "", "", "", "", "", "", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "", "", "", "", "", "") + } + }; + this.KH = ''; + this.KM = 0; + // this.s18 = "ເແໂໄໃ"; + // this.s20 = "ະຽາ"; + // this.s22 = "່້໊໋໌"; + // this.s24 = "ໆຯ"; + this.gs = function (t, e) { + return 0; //this.g0(t, e); + }; + this.g0 = function (t, e) { + // var k = KeymanWeb, r = 0, m = 0; + // if (k.KKM(e, 16480, 48)) { + // r = m = 1; + // k.KO(0, t, "໘"); + // } else if (k.KKM(e, 16480, 49)) { + // r = m = 1; + // k.KO(0, t, "໑"); + // } else if (k.KKM(e, 16480, 50)) { + // r = m = 1; + // k.KO(0, t, "໒"); + // } else if (k.KKM(e, 16480, 51)) { + // r = m = 1; + // k.KO(0, t, "໓"); + // } else if (k.KKM(e, 16480, 52)) { + // r = m = 1; + // k.KO(0, t, "໔"); + // } else if (k.KKM(e, 16480, 55)) { + // r = m = 1; + // k.KO(0, t, "໕"); + // } else if (k.KKM(e, 16480, 56)) { + // r = m = 1; + // k.KO(0, t, "໖"); + // } else if (k.KKM(e, 16480, 57)) { + // r = m = 1; + // k.KO(0, t, "໗"); + // } else if (k.KKM(e, 16480, 87)) { + // r = m = 1; + // k.KO(0, t, "໐"); + // } else if (k.KKM(e, 16384, 96)) { + // r = m = 1; + // k.KO(0, t, "0"); + // } else if (k.KKM(e, 16384, 97)) { + // r = m = 1; + // k.KO(0, t, "1"); + // } else if (k.KKM(e, 16384, 98)) { + // r = m = 1; + // k.KO(0, t, "2"); + // } else if (k.KKM(e, 16384, 99)) { + // r = m = 1; + // k.KO(0, t, "3"); + // } else if (k.KKM(e, 16384, 100)) { + // r = m = 1; + // k.KO(0, t, "4"); + // } else if (k.KKM(e, 16384, 101)) { + // r = m = 1; + // k.KO(0, t, "5"); + // } else if (k.KKM(e, 16384, 102)) { + // r = m = 1; + // k.KO(0, t, "6"); + // } else if (k.KKM(e, 16384, 103)) { + // r = m = 1; + // k.KO(0, t, "7"); + // } else if (k.KKM(e, 16384, 104)) { + // r = m = 1; + // k.KO(0, t, "8"); + // } else if (k.KKM(e, 16384, 105)) { + // r = m = 1; + // k.KO(0, t, "9"); + // } else if (k.KKM(e, 16384, 106)) { + // r = m = 1; + // k.KO(0, t, "*"); + // } else if (k.KKM(e, 16384, 107)) { + // r = m = 1; + // k.KO(0, t, "+"); + // } else if (k.KKM(e, 16384, 109)) { + // r = m = 1; + // k.KO(0, t, "-"); + // } else if (k.KKM(e, 16384, 110)) { + // r = m = 1; + // k.KO(0, t, "."); + // } else if (k.KKM(e, 16384, 111)) { + // r = m = 1; + // k.KO(0, t, "/"); + // } else if (k.KKM(e, 16480, 187)) { + // r = m = 1; + // k.KO(0, t, "€"); + // } else if (k.KKM(e, 16480, 189)) { + // r = m = 1; + // k.KO(0, t, "໙"); + // } else if (k.KKM(e, 16480, 192)) { + // r = m = 1; + // k.KO(0, t, "₭"); + // } else if (k.KKM(e, 16480, 219)) { + // r = m = 1; + // k.KO(0, t, "["); + // } else if (k.KKM(e, 16480, 221)) { + // r = m = 1; + // k.KO(0, t, "]"); + // } + // if (!m && k.KIK(e)) { + // r = this.g1(t, e); + // } + // return r; + }; + // this.g1 = function (t, e) { + // var k = KeymanWeb, r = 0, m = 0; + // if (k.KKM(e, 16400, 49)) { + // r = m = 1; + // k.KO(0, t, "1"); + // } else if (k.KKM(e, 16400, 222)) { + // r = m = 1; + // k.KO(0, t, "="); + // } else if (k.KKM(e, 16400, 51)) { + // r = m = 1; + // k.KO(0, t, "3"); + // } else if (k.KKM(e, 16400, 52)) { + // r = m = 1; + // k.KO(0, t, "4"); + // } else if (k.KKM(e, 16400, 53) && k.KCM(1, t, "ຳ", 1)) { + // r = m = 1; + // k.KO(1, t, "໌"); + // } else if (k.KKM(e, 16400, 53) && k.KA(0, k.KC(1, 1, t), this.s22)) { + // r = m = 1; + // k.KB(t); + // } else if (k.KKM(e, 16400, 53) && k.KA(0, k.KC(1, 1, t), this.s18)) { + // r = m = 1; + // k.KB(t); + // } else if (k.KKM(e, 16400, 53) && k.KA(0, k.KC(1, 1, t), this.s20)) { + // r = m = 1; + // k.KB(t); + // } else if (k.KKM(e, 16400, 53) && k.KA(0, k.KC(1, 1, t), this.s24)) { + // r = m = 1; + // k.KB(t); + // } + // return r; + // }; +} \ No newline at end of file diff --git a/web/samples/chirality/halfDefined.js b/web/samples/chirality/halfDefined.js new file mode 100644 index 0000000000..9220743b39 --- /dev/null +++ b/web/samples/chirality/halfDefined.js @@ -0,0 +1,19 @@ +KeymanWeb.KR(new Keyboard_halfDefined()); + +function Keyboard_halfDefined() { + this.KI = "Keyboard_halfDefined"; + this.KN = "Development Underspecified Keyboard"; + this.KV = { + KMBM: 0x001F, + F: ' 1em "Arial"', + K102: 0, + KLS: { 'default': new Array("`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "", "", "", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\", "", "", "", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "", "", "", "", "", "", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "", "", "", "", "", "") + } + }; + this.KH = ''; + this.KM = 0; + + this.gs = function (t, e) { + return r = 0; + }; +} \ No newline at end of file diff --git a/web/samples/chirality/index.html b/web/samples/chirality/index.html new file mode 100644 index 0000000000..17ddb742c6 --- /dev/null +++ b/web/samples/chirality/index.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + KeymanWeb Sample Page - Uncompiled Source + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

KeymanWeb Sample Page - Uncompiled Source, Chirality Testing

+

This page is designed to stress-test the new support for chiral modifiers and state keys.

+

Be sure to reference the developer console for additional feedback.

+
+
+ +
+

Type in your language in this text area:

+ + +

or in this input field:

+ +
+
+
+

Return to testing home page

+ + + + diff --git a/web/samples/chirality/utilities.js b/web/samples/chirality/utilities.js new file mode 100644 index 0000000000..76aba87025 --- /dev/null +++ b/web/samples/chirality/utilities.js @@ -0,0 +1,22 @@ +function loadKeyboards() +{ + var kmw=tavultesoft.keymanweb; + + // A testing keyboard handwritten with chirality information. + kmw.addKeyboards({id:'chirality',name:'Chirality Testing', + language:{ + id:'eng',name:'English',region:'North America' + }, + filename:'chirality.js' + }); + + // A testing keyboard using 10.0 format and the KLS layout specifier + // without the 'shift' layer properly defined. + // Add a fully-specified, locally-sourced, keyboard with custom font + kmw.addKeyboards({id:'halfDefined',name:'Undefined Shift Layer Keyboard', + language:{ + id:'eng',name:'English',region:'North America' + }, + filename:'halfDefined.js' + }); +} \ No newline at end of file diff --git a/web/samples/index.html b/web/samples/index.html index 2d5528925f..5aca0f2898 100644 --- a/web/samples/index.html +++ b/web/samples/index.html @@ -29,5 +29,6 @@

Uncompiled Keymanweb - test touch-based keyboards with heterogenous layer structures/row counts.

Uncompiled KeymanWeb - tests keyboard error-handling functionality.

Uncompiled KeymanWeb - tests the new Attachment/Enablement API functionality.

+

Uncompiled KeymanWeb - chirality testing.

diff --git a/web/source/kmwosk.js b/web/source/kmwosk.js index 95b671153d..01b677925b 100644 --- a/web/source/kmwosk.js +++ b/web/source/kmwosk.js @@ -2682,7 +2682,7 @@ if(!window['tavultesoft']['keymanweb']['initialized']) { if(chiral) { layerCnt=32; - offset=0x00; + offset=0x01; } else { layerCnt=8; offset=0x10; @@ -2772,6 +2772,7 @@ if(!window['tavultesoft']['keymanweb']['initialized']) { var layer=layers[n], kx, shiftKey=null, nextKey=null, allText=''; var layerSpec = keyLabels[layer['id']]; var isShift = layer['id'] == 'shift' ? 1 : 0; + var isDefault = layer['id'] == 'default' || isShift ? 1 : 0; rows=layer['row']; for(i=0; i= 0 && kx < layerSpec.length) key['text']=layerSpec[kx]; + if(layerSpec) { + if(kx >= 0 && kx < layerSpec.length) key['text']=layerSpec[kx]; + } // Fall back to US English keycap text as default for the base two layers if not otherwise defined. // (Any 'ghost' keys must be explicitly defined in layout for these layers.) - if(layer['id'] == 'default' || isShift) { - if(key['text'] == '' && key['id'] != 'K_SPACE' && kx+65 * isShift < dfltText.length) { + if(isDefault) { + if((key['text'] == '' || typeof key['text'] == 'undefined') && key['id'] != 'K_SPACE' && kx+65 * isShift < dfltText.length) { key['text']=dfltText[kx+65*isShift]; } }