From 33a2e230f6aeb8da91dcbdda4334a9ba99bdf4fc Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 11 Nov 2021 13:26:56 +1100 Subject: [PATCH] chore(developer): enforce file versions for feature --- common/core/desktop/src/kmx/kmx_file.h | 4 +++- common/test/keyboards/.gitignore | 1 + .../{u_xxxx_yyyy_2858 => }/HISTORY.md | 0 .../{u_xxxx_yyyy_2858 => }/LICENSE.md | 0 .../{u_xxxx_yyyy_2858 => }/README.md | 0 .../{u_xxxx_yyyy_2858 => }/source/readme.htm | 0 .../source/u_xxxx_yyyy_2858.keyman-touch-layout | 0 .../source/u_xxxx_yyyy_2858.kmn | 2 +- .../source/u_xxxx_yyyy_2858.kps | 0 .../source/u_xxxx_yyyy_2858.kvks | 0 .../{u_xxxx_yyyy_2858 => }/source/welcome.htm | 0 .../u_xxxx_yyyy_2858.keyboard_info | 0 .../{u_xxxx_yyyy_2858 => }/u_xxxx_yyyy_2858.kpj | 0 .../u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.js | 1 - .../u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kmx | Bin 538 -> 0 bytes .../u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kvk | Bin 93 -> 0 bytes .../KeymanEngine4Mac/KME/KMBinaryFileFormat.h | 8 +++----- .../developer/TIKE/compile/CompileKeymanWeb.pas | 8 ++++++++ windows/src/developer/TIKE/main/RedistFiles.pas | 10 +++++++++- windows/src/developer/kmcmpdll/Compiler.cpp | 1 + .../src/global/delphi/general/kmxfileconsts.pas | 3 ++- windows/src/global/inc/Compiler.h | 3 ++- 22 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 common/test/keyboards/.gitignore rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/HISTORY.md (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/LICENSE.md (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/README.md (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/source/readme.htm (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/source/u_xxxx_yyyy_2858.keyman-touch-layout (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/source/u_xxxx_yyyy_2858.kmn (94%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/source/u_xxxx_yyyy_2858.kps (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/source/u_xxxx_yyyy_2858.kvks (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/source/welcome.htm (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/u_xxxx_yyyy_2858.keyboard_info (100%) rename common/test/keyboards/u_xxxx_yyyy_2858/{u_xxxx_yyyy_2858 => }/u_xxxx_yyyy_2858.kpj (100%) delete mode 100644 common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.js delete mode 100644 common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kmx delete mode 100644 common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kvk diff --git a/common/core/desktop/src/kmx/kmx_file.h b/common/core/desktop/src/kmx/kmx_file.h index 819db4787a..35de8329cc 100644 --- a/common/core/desktop/src/kmx/kmx_file.h +++ b/common/core/desktop/src/kmx/kmx_file.h @@ -42,9 +42,11 @@ namespace kmx { #define VERSION_80 0x00000800 #define VERSION_90 0x00000900 #define VERSION_100 0x00000A00 +#define VERSION_140 0x00000E00 +#define VERSION_150 0x00000F00 #define VERSION_MIN VERSION_50 -#define VERSION_MAX VERSION_100 +#define VERSION_MAX VERSION_150 // // Backspace types diff --git a/common/test/keyboards/.gitignore b/common/test/keyboards/.gitignore new file mode 100644 index 0000000000..ef4be49c85 --- /dev/null +++ b/common/test/keyboards/.gitignore @@ -0,0 +1 @@ +*/build/ \ No newline at end of file diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/HISTORY.md b/common/test/keyboards/u_xxxx_yyyy_2858/HISTORY.md similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/HISTORY.md rename to common/test/keyboards/u_xxxx_yyyy_2858/HISTORY.md diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/LICENSE.md b/common/test/keyboards/u_xxxx_yyyy_2858/LICENSE.md similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/LICENSE.md rename to common/test/keyboards/u_xxxx_yyyy_2858/LICENSE.md diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/README.md b/common/test/keyboards/u_xxxx_yyyy_2858/README.md similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/README.md rename to common/test/keyboards/u_xxxx_yyyy_2858/README.md diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/readme.htm b/common/test/keyboards/u_xxxx_yyyy_2858/source/readme.htm similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/readme.htm rename to common/test/keyboards/u_xxxx_yyyy_2858/source/readme.htm diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.keyman-touch-layout b/common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.keyman-touch-layout similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.keyman-touch-layout rename to common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.keyman-touch-layout diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kmn b/common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kmn similarity index 94% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kmn rename to common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kmn index 0cc5464bde..87dc1273dd 100644 --- a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kmn +++ b/common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kmn @@ -1,6 +1,6 @@ c u_xxxx_yyyy_2858 generated from template at 2021-11-11 12:27:04 c with name "U_xxxx_yyyy_2858" -store(&VERSION) '10.0' +store(&VERSION) '15.0' store(&NAME) 'U_xxxx_yyyy_2858' store(©RIGHT) '©' store(&KEYBOARDVERSION) '1.0' diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kps b/common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kps similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kps rename to common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kps diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kvks b/common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kvks similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kvks rename to common/test/keyboards/u_xxxx_yyyy_2858/source/u_xxxx_yyyy_2858.kvks diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/welcome.htm b/common/test/keyboards/u_xxxx_yyyy_2858/source/welcome.htm similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/source/welcome.htm rename to common/test/keyboards/u_xxxx_yyyy_2858/source/welcome.htm diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.keyboard_info b/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.keyboard_info similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.keyboard_info rename to common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.keyboard_info diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.kpj b/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.kpj similarity index 100% rename from common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.kpj rename to common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858.kpj diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.js b/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.js deleted file mode 100644 index e253ae4c80..0000000000 --- a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.js +++ /dev/null @@ -1 +0,0 @@ -if(typeof keyman === 'undefined') {console.log('Keyboard requires KeymanWeb 10.0 or later');if(typeof tavultesoft !== 'undefined') tavultesoft.keymanweb.util.alert("This keyboard requires KeymanWeb 10.0 or later");} else {KeymanWeb.KR(new Keyboard_u_xxxx_yyyy_2858());}function Keyboard_u_xxxx_yyyy_2858(){this._v=(typeof keyman!="undefined"&&typeof keyman.version=="string")?parseInt(keyman.version,10):9;this.KI="Keyboard_u_xxxx_yyyy_2858";this.KN="U_xxxx_yyyy_2858";this.KMINVER="10.0";this.KV={F:' 1em "Arial"',K102:0};this.KV.KLS={};this.KV.BK=(function(x){var e=Array.apply(null,Array(65)).map(String.prototype.valueOf,""),r=[],v,i,m=['default','shift','ctrl','shift-ctrl','alt','shift-alt','ctrl-alt','shift-ctrl-alt'];for(i=m.length-1;i>=0;i--)if((v=x[m[i]])||r.length)r=(v?v:e).slice().concat(r);return r})(this.KV.KLS);this.KDU=0;this.KH='';this.KM=0;this.KBVER="1.0";this.KMBM=0x0000;this.KVKL={"tablet":{"font":"Tahoma","displayUnderlying":false,"layer":[{"id":"default","row":[{"id":"1","key":[{"id":"K_Q","text":"q"},{"id":"K_W","text":"w"},{"id":"K_E","text":"e"},{"id":"K_R","text":"r"},{"id":"K_T","text":"t"},{"id":"K_Y","text":"y"},{"id":"K_U","text":"u"},{"id":"K_I","text":"i"},{"id":"K_O","text":"o"},{"id":"K_P","text":"p"}]},{"id":"2","key":[{"id":"U_1234_1340","pad":"70","text":"\u1234\u1340"},{"id":"U_10300_10301_10302","text":"\uD800\uDF00\uD800\uDF01\uD800\uDF02"},{"id":"K_D","text":"d"},{"id":"K_F","text":"f"},{"id":"K_G","text":"g"},{"id":"K_H","text":"h"},{"id":"K_J","text":"j"},{"id":"K_K","text":"k"},{"id":"K_L","text":"l"},{"width":"10","id":"T_new_54","sp":"10"}]},{"id":"3","key":[{"nextlayer":"shift","width":"110","id":"K_SHIFT","sp":"1","text":"*Shift*"},{"id":"K_Z","text":"z"},{"id":"K_X","text":"x"},{"id":"K_C","text":"c"},{"id":"K_V","text":"v"},{"id":"K_B","text":"b"},{"id":"K_N","text":"n"},{"id":"K_M","text":"m"},{"id":"K_PERIOD","text":".","sk":[{"id":"K_COMMA","text":","},{"layer":"shift","id":"K_1","text":"!"},{"layer":"shift","id":"K_SLASH","text":"?"},{"id":"K_QUOTE","text":"'"},{"layer":"shift","id":"K_QUOTE","text":"\""},{"id":"K_BKSLASH","text":"\\"},{"layer":"shift","id":"K_COLON","text":":"},{"id":"K_COLON","text":";"}]},{"width":"90","id":"K_BKSP","sp":"1","text":"*BkSp*"}]},{"id":"4","key":[{"nextlayer":"numeric","width":"140","id":"K_NUMLOCK","sp":"1","text":"*123*"},{"width":"120","id":"K_LOPT","sp":"1","text":"*Menu*"},{"width":"630","id":"K_SPACE"},{"width":"140","id":"K_ENTER","sp":"1","text":"*Enter*"}]}]},{"id":"shift","row":[{"id":"1","key":[{"id":"K_Q","text":"Q"},{"id":"K_W","text":"W"},{"id":"K_E","text":"E"},{"id":"K_R","text":"R"},{"id":"K_T","text":"T"},{"id":"K_Y","text":"Y"},{"id":"K_U","text":"U"},{"id":"K_I","text":"I"},{"id":"K_O","text":"O"},{"id":"K_P","text":"P"}]},{"id":"2","key":[{"id":"K_A","pad":"70","text":"A"},{"id":"K_S","text":"S"},{"id":"K_D","text":"D"},{"id":"K_F","text":"F"},{"id":"K_G","text":"G"},{"id":"K_H","text":"H"},{"id":"K_J","text":"J"},{"id":"K_K","text":"K"},{"id":"K_L","text":"L"},{"width":"10","sp":"10"}]},{"id":"3","key":[{"nextlayer":"default","width":"110","id":"K_SHIFT","sp":"2","text":"*Shift*"},{"id":"K_Z","text":"Z"},{"id":"K_X","text":"X"},{"id":"K_C","text":"C"},{"id":"K_V","text":"V"},{"id":"K_B","text":"B"},{"id":"K_N","text":"N"},{"id":"K_M","text":"M"},{"layer":"default","id":"K_PERIOD","text":".","sk":[{"layer":"default","id":"K_COMMA","text":","},{"layer":"shift","id":"K_1","text":"!"},{"layer":"shift","id":"K_SLASH","text":"?"},{"layer":"default","id":"K_QUOTE","text":"'"},{"layer":"shift","id":"K_QUOTE","text":"\""},{"layer":"default","id":"K_BKSLASH","text":"\\"},{"layer":"shift","id":"K_COLON","text":":"},{"layer":"default","id":"K_COLON","text":";"}]},{"width":"90","id":"K_BKSP","sp":"1","text":"*BkSp*"}]},{"id":"4","key":[{"nextlayer":"numeric","width":"140","id":"K_NUMLOCK","sp":"1","text":"*123*"},{"width":"120","id":"K_LOPT","sp":"1","text":"*Menu*"},{"width":"630","id":"K_SPACE"},{"width":"140","id":"K_ENTER","sp":"1","text":"*Enter*"}]}]},{"id":"numeric","row":[{"id":"1","key":[{"id":"K_1","text":"1"},{"id":"K_2","text":"2"},{"id":"K_3","text":"3"},{"id":"K_4","text":"4"},{"id":"K_5","text":"5"},{"id":"K_6","text":"6"},{"id":"K_7","text":"7"},{"id":"K_8","text":"8"},{"id":"K_9","text":"9"},{"id":"K_0","text":"0"}]},{"id":"2","key":[{"layer":"shift","id":"K_4","pad":"70","text":"$"},{"layer":"shift","id":"K_2","text":"@"},{"layer":"shift","id":"K_3","text":"#"},{"layer":"shift","id":"K_5","text":"%"},{"layer":"shift","id":"K_7","text":"&"},{"layer":"shift","id":"K_HYPHEN","text":"_"},{"layer":"default","id":"K_EQUAL","text":"="},{"layer":"shift","id":"K_BKSLASH","text":"|"},{"layer":"default","id":"K_BKSLASH","text":"\\"},{"width":"10","sp":"10"}]},{"id":"3","key":[{"width":"110","id":"K_SHIFT","sp":"1","text":"*Shift*"},{"id":"K_LBRKT","text":"[","sk":[{"id":"U_00AB","text":"\u00AB"},{"layer":"shift","id":"K_COMMA","text":"<"},{"layer":"shift","id":"K_LBRKT","text":"{"}]},{"layer":"shift","id":"K_9","text":"("},{"layer":"shift","id":"K_0","text":")"},{"id":"K_RBRKT","text":"]","sk":[{"id":"U_00BB","text":"\u00BB"},{"layer":"shift","id":"K_PERIOD","text":">"},{"layer":"shift","id":"K_RBRKT","text":"}"}]},{"layer":"shift","id":"K_EQUAL","text":"+"},{"layer":"default","id":"K_HYPHEN","text":"-"},{"layer":"shift","id":"K_8","text":"*"},{"layer":"default","id":"K_SLASH","text":"\/"},{"width":"90","id":"K_BKSP","sp":"1","text":"*BkSp*"}]},{"id":"4","key":[{"nextlayer":"default","width":"140","id":"K_LOWER","sp":"1","text":"*abc*"},{"width":"120","id":"K_LOPT","sp":"1","text":"*Menu*"},{"width":"630","id":"K_SPACE"},{"width":"140","id":"K_ENTER","sp":"1","text":"*Enter*"}]}]}]}};this.KVER="15.0.114.0";this.KVS=[];this.gs=function(t,e) {return this.g0(t,e);};this.g0=function(t,e) {var k=KeymanWeb,r=0,m=0;return r;};} \ No newline at end of file diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kmx b/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kmx deleted file mode 100644 index 60aba51abcc66d852743c126f04ae2192c0acfb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcma)(!Ae3=5Qcx<6t%rsxDpB%g5nK@3vR;Pxyu4~7g52mx^lD9*J;;#^d7x{?~vbI z$07)H4s+(4IWu$4aJv25o{pqe@O2|3XB%>i8egILy!4HLKT;%Sa(6rMU) z;6vvKK5%Zs-a;ez!s8RT>^y_doEPx9^E(_kui$H?8f&0A`$#3d=^mayT_Q_8a`uGR z!Fxp?lxT)ciJ713nTjOK3Ds0hbu?r(G8Vr6^b%*5WAQu1TKI~&ZL?xsDxz0J#s?aD vw!LJD|FWa1rYUcm?wR>JWtGVjx(}JZ%A^BsGk>1F;lJ59(DpZtO>*cO?(IO8 diff --git a/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kvk b/common/test/keyboards/u_xxxx_yyyy_2858/u_xxxx_yyyy_2858/build/u_xxxx_yyyy_2858.kvk deleted file mode 100644 index 3aa28248eae618326c326b92c3548169de35874e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmeYc^LArkV_;wqWGH2bXQ+U}c!o+SjAt-nuwXC+Vg{f(M}{JXOol{;93bz@|Ns9v N7#RLz7X>O{003Yp6-595 diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h b/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h index 4e8288c002..0f4614c1c9 100644 --- a/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h +++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMBinaryFileFormat.h @@ -42,12 +42,10 @@ struct COMP_KEYBOARD { #define VERSION_80 0x00000800 #define VERSION_90 0x00000900 #define VERSION_100 0x00000A00 -#define VERSION_110 0x00000B00 -#define VERSION_120 0x00000C00 -#define VERSION_130 0x00000D00 #define VERSION_140 0x00000E00 +#define VERSION_150 0x00000F00 #define VERSION_MIN VERSION_50 -#define VERSION_MAX VERSION_140 +#define VERSION_MAX VERSION_150 struct COMP_GROUP { DWORD dpName; // string (only debug) @@ -122,7 +120,7 @@ struct COMP_STORE { #define K_CTRLFLAG 0x0020 // Either ctrl flag #define K_ALTFLAG 0x0040 // Either alt flag //#define K_METAFLAG 0x0080 // Either Meta-key flag (tentative). Not usable in keyboard rules; - // Used internally (currently, only by KMW) to ensure Meta-key + // Used internally (currently, only by KMW) to ensure Meta-key // shortcuts safely bypass rules // Meta key = Command key on macOS, Windows key on Windows #define CAPITALFLAG 0x0100 // Caps lock on diff --git a/windows/src/developer/TIKE/compile/CompileKeymanWeb.pas b/windows/src/developer/TIKE/compile/CompileKeymanWeb.pas index 01d9ca2324..55e59479a7 100644 --- a/windows/src/developer/TIKE/compile/CompileKeymanWeb.pas +++ b/windows/src/developer/TIKE/compile/CompileKeymanWeb.pas @@ -251,6 +251,7 @@ type function JavaScript_SetupDebug: string; function JavaScript_SetupEpilog: string; function JavaScript_SetupProlog: string; + function IsKeyboardVersion15OrLater: Boolean; public function Compile(AOwnerProject: TProject; const InFile: string; const OutFile: string; Debug: Boolean; Callback: TCompilerCallbackW): Boolean; // I3681 // I4140 // I4688 // I4866 constructor Create; @@ -1635,6 +1636,8 @@ var values: TArray; begin values := value.Split(['_']); + if (Length(values) > 1) and not IsKeyboardVersion15OrLater then + Exit(False); for v in values do if not IsValidUnicodeValue(StrToIntDef('$'+v, 0)) then Exit(False); @@ -2340,6 +2343,11 @@ begin Result := fk.version >= VERSION_140; end; +function TCompileKeymanWeb.IsKeyboardVersion15OrLater: Boolean; +begin + Result := fk.version >= VERSION_150; +end; + procedure TCompileKeymanWeb.CheckStoreForInvalidFunctions(key: PFILE_KEY; store: PFILE_STORE); // I1520 var n: Integer; diff --git a/windows/src/developer/TIKE/main/RedistFiles.pas b/windows/src/developer/TIKE/main/RedistFiles.pas index 2f9e539181..7cf0840591 100644 --- a/windows/src/developer/TIKE/main/RedistFiles.pas +++ b/windows/src/developer/TIKE/main/RedistFiles.pas @@ -136,8 +136,16 @@ begin end; function GetDebugKMCmpDllPath: string; +var + root: string; +const + DevCompilerPath = 'windows\bin\developer'; begin - Result := GetDebugPath('Debug_KMCMPDLLPath', ExtractFilePath(ParamStr(0))); + if TKeymanPaths.RunningFromSource(root) and + FileExists(root + DevCompilerPath + '\kmcmpdll.dll') + then Result := root + DevCompilerPath + else Result := ExtractFilePath(ParamStr(0)); + Result := GetDebugPath('Debug_KMCMPDLLPath', Result); end; function GetXMLTemplatePath: string; diff --git a/windows/src/developer/kmcmpdll/Compiler.cpp b/windows/src/developer/kmcmpdll/Compiler.cpp index b902be8b64..d1ed792a99 100644 --- a/windows/src/developer/kmcmpdll/Compiler.cpp +++ b/windows/src/developer/kmcmpdll/Compiler.cpp @@ -1220,6 +1220,7 @@ DWORD ProcessSystemStore(PFILE_KEYBOARD fk, DWORD SystemID, PFILE_STORE sp) else if (wcsncmp(p, L"9.0", 3) == 0) fk->version = VERSION_90; else if (wcsncmp(p, L"10.0", 4) == 0) fk->version = VERSION_100; else if (wcsncmp(p, L"14.0", 4) == 0) fk->version = VERSION_140; // Adds support for #917 -- context() with notany() for KeymanWeb + else if (wcsncmp(p, L"15.0", 4) == 0) fk->version = VERSION_150; // Adds support for U_xxxx_yyyy #2858 else return CERR_InvalidVersion; if (fk->version < VERSION_60) FOldCharPosMatching = TRUE; diff --git a/windows/src/global/delphi/general/kmxfileconsts.pas b/windows/src/global/delphi/general/kmxfileconsts.pas index 83531d768d..064465db5d 100644 --- a/windows/src/global/delphi/general/kmxfileconsts.pas +++ b/windows/src/global/delphi/general/kmxfileconsts.pas @@ -97,9 +97,10 @@ const VERSION_90 = $00000900; VERSION_100 = $00000A00; VERSION_140 = $00000E00; + VERSION_150 = $00000F00; VERSION_MIN = VERSION_50; - VERSION_MAX = VERSION_140; + VERSION_MAX = VERSION_150; VERSION_MASK_MINOR = $00FF; VERSION_MASK_MAJOR = $FF00; diff --git a/windows/src/global/inc/Compiler.h b/windows/src/global/inc/Compiler.h index 291770780d..4a45e04a17 100644 --- a/windows/src/global/inc/Compiler.h +++ b/windows/src/global/inc/Compiler.h @@ -70,9 +70,10 @@ #define VERSION_90 0x00000900 #define VERSION_100 0x00000A00 #define VERSION_140 0x00000E00 +#define VERSION_150 0x00000F00 #define VERSION_MIN VERSION_50 -#define VERSION_MAX VERSION_140 +#define VERSION_MAX VERSION_150 /* Special flag for WM_CHAR/WM_KEY???/WM_SYSKEY???: says that key has been