Topic Unknown error when compiling keyboard

We have two new locations for Keyman technical support:

The Tavultesoft Forums are now read only.


# Unknown error when compiling keyboard   2007-09-19 05:08:18.063
Sven Siegmund
Hello,

I use Keyman Developer 6.0.164.0 with Windows XP SP2. When I try to compile my keyboard, I get this error:

-----------
Exception 'EAccessViolation' in module kmcmpdll.dll at 00004D51
Access violation at address 3C105D51 in module 'kmcmpdll.dll'. Read of address 028C2000

Source file: UNKNOWN, Line UNKNOWN

Call stack:
:3C105D51 [kmcmpdll.dll]

Registers:
EAX = 028C2000 CS = 001B EIP = 3C105D51 Flags = 00010216
EBX = 028BEFE8 SS = 0023 ESP = 003BF3C0 EBP = 02949794
ECX = 00000009 DS = 0023 ESI = 00000033 FS = 003B
EDX = 00000002 ES = 0023 EDI = 00000000 GS = 0000
Code at CS:EIP
66 83 38 10 75 F7 83 C0 02 C3 90 57 5D 10 3C 23
Stack:
3C105B23 028BFD64 02949790 3C102746 028BFB70
02949794 013A1AA4 00000000 00000000 00000000
00000000 00000000 00000000 00000000 3C105D51
013A1A05 01E2267C 01E58A0B 3C105D51 00004D51
-----------

I don't get any error when I try to compile any other keyboard (one of the sample or the SIL IPA Unicode keyboard). So there should be nothing fundamentally wrong with my installation of Keyman Developer.

I only found that in Options/Character Map I cannot rebuild the Character Database. When I downloaded MDAC 2.5 SP3 as recommended, it won't install. It says that "MDAC 2.8 RTM is incompatible with this version of Windows. All of its features are currently part of Windows."

Maybe there is someting bad with my source code, here it is for you to check:



-----------
c Keyboard for writing click languages, especially N|uu

VERSION 6.0 c This keyboard is for use with Keyman 6.0
NAME "Nuu 1.0ger" c German keyboard layout enriched with click signs

begin Unicode > use(Main)

group(Main) using keys

+ [K_BKQUOTE] > dk(circumflex)
+ [SHIFT K_BKQUOTE] > dk(ring)
+ [K_EQUAL] > dk(aigu)
+ [SHIFT K_EQUAL] > dk(grave)
+ [RALT K_RBRKT] > dk(nasal)

store(klapky) [K_1] [K_2] [K_3] [K_4] [K_5] [K_6] [K_7] [K_8] [K_9] [K_0] [K_HYPHEN] [K_Q] [K_W] [K_E] [K_R] [K_T] [K_Y] [K_U] [K_I] [K_O] [K_P] [K_LBRKT] [K_RBRKT] [K_A] [K_S] [K_D] [K_F] [K_G] [K_H] [K_J] [K_K] [K_L] [K_COLON] [K_QUOTE] [K_BKSLASH] [K_oE2] [K_Z] [K_X] [K_C] [K_V] [K_B] [K_N] [K_M] [K_COMMA] [K_PERIOD] [K_SLASH] [SHIFT K_1] [SHIFT K_2] [SHIFT K_3] [SHIFT K_4] [SHIFT K_5] [SHIFT K_6] [SHIFT K_7] [SHIFT K_8] [SHIFT K_9] [SHIFT K_0] [SHIFT K_HYPHEN] [SHIFT K_Q] [SHIFT K_W] [SHIFT K_E] [SHIFT K_R] [SHIFT K_T] [SHIFT K_Y] [SHIFT K_U] [SHIFT K_I] [SHIFT K_O] [SHIFT K_P] [SHIFT K_LBRKT] [SHIFT K_RBRKT] [SHIFT K_A] [SHIFT K_S] [SHIFT K_D] [SHIFT K_F] [SHIFT K_G] [SHIFT K_H] [SHIFT K_J] [SHIFT K_K] [SHIFT K_L] [SHIFT K_COLON] [SHIFT K_QUOTE] [SHIFT K_BKSLASH] [SHIFT K_oE2] [SHIFT K_Z] [SHIFT K_X] [SHIFT K_C] [SHIFT K_V] [SHIFT K_B] [SHIFT K_N] [SHIFT K_M] [SHIFT K_COMMA] [SHIFT K_PERIOD] [SHIFT K_SLASH] [RALT K_2] [RALT K_3] [RALT K_7] [RALT K_8] [RALT K_9] [RALT K_0] [RALT K_HYPHEN] [RALT K_oE2] [RALT K_M]

store(znaky) "1234567890ßqwertzuiopü+asdfghjklöä#<yxcvbnm,.-" "!" U+0022 "§$%&/()=?QWERTZUIOPÜ*ASDFGHJKLÖÄ'>YXCVBNM;:_" "²³{[]}\|µ"

store(circumflexable) "AaEeIiOoUuCcGgHJjSsWw" [SHIFT K_Z] [K_Z] [SHIFT K_Y] [K_Y] [K_SPACE]
store(circumflexed) U+00C2 U+00E2 U+00CA U+00EA U+00CE U+00EE U+00D4 U+00F4 U+00DB U+00FB U+0108 U+0109 U+011C U+011D U+0124 U+0134 U+0135 U+015C U+015D U+0174 U+0175 U+0176 U+0177 U+1E90 U+1E91 U+005E

store(ringable) "AaUuw" [K_Z] [K_SPACE]
store(ringed) U+00C5 U+00E5 U+016E U+016F U+1E98 U+1E99 U+00B0

store(aiguable) "AaEeIiOoUu" [SHIFT K_Z] [K_Z] "CcLlNnSs" [SHIFT K_LBRKT] [K_LBRKT] "Gg" [SHIFT K_Y] [K_Y] "KkMmPpWw" [K_SPACE]
store(aigued) U+00C1 U+00E1 U+00C9 U+00E9 U+00CD U+00ED U+00D3 U+00F3 U+00DA U+00FA U+00DD U+00FD U+0106 U+0107 U+0139 U+0140 U+0143 U+0144 U+015A U+015B U+01D7 U+01D8 U+01F4 U+01F5 U+0179 U+0180 U+1E30 U+1E31 U+1E3E U+1E3F U+1E54 U+1E55 U+1E82 U+1E83 U+00B4

store(gravable) "AaEeIiOoUu" [SHIFT K_LBRKT] [K_LBRKT] "Ww" [SHIFT K_Z] [K_Z] [K_SPACE]
store(graved) U+00C0 U+00E0 U+00C8 U+00E8 U+00CC U+00EC U+00D2 U+00F2 U+00D9 U+00F9 U+01DB U+01DC U+1E80 U+1E81 U+1EF2 U+1EF3 U+0060

store(nasalable) "NnOoVv" [K_SPACE]
store(nasaled) U+00D1 U+00F1 U+00D5 U+00F5 U+1E7C U+1E7D U+007E

store(altgrable) [RALT K_2] [RALT K_3] [RALT K_7] [RALT K_8] [RALT K_9] [RALT K_0] [RALT K_HYPHEN] [RALT K_Q] [RALT K_E] [RALT K_oE2] [RALT K_M] [K_R] [K_T] [K_Y] [K_U] [K_I]
store(altgred) U+00B2 U+00B3 U+007B U+005B U+005D U+007D U+005C U+0040 U+20AC U+007C U+00B5 U+01C0 U+01C1 U+01C3 U+01C2 U+0298

+ any(klapky) > index(znaky,1)
+ any(altgrable) > index(altgred,1)
dk(circumflex) + any(circumflexable) > index(circumflexed,1)
dk(ring) + any(ringable) > index(ringed,1)
dk(aigu) + any(aiguable) > index(aigued,1)
dk(grave) + any(gravable) > index(graved,1)
dk(nasal) + any(nasalable) > index(nasaled,1)
------------

Thank you for your answer.
# RE: Unknown error when compiling keyboard   2007-09-19 12:52:16.940
Marc Durdin
Tavultesoft Staff
The issue is with the length of the store 'klapky'. In version 6.0 of the compiler, it is limited to 255 characters per store. Each virtual key takes 4 bytes, so this store is about 400 bytes as it stands.

The easiest solution is to break the store down into multiple stores.

Version 7.0 does not have this limitation in store length.

When checking the issue, I noted a couple of issues with the keyboard (which you would no doubt have picked up if the compiler wasn't crashing!):

1. The klapky and znaky stores are different lengths, which is a problem for
:
+ any(klapky) > index(znaky,1)

2. Each of the deadkey rules such as
:
dk(circumflex) + any(circumflexable) > index(circumflexed,1)
needs to change the index to
:
index(circumflexed,2)
to match the index up to the any on the left hand side of the rule.
# RE: Unknown error when compiling keyboard   2007-09-19 22:55:17.847
Sven Siegmund
Hi Marc,

thank you for your reply and your suggestrions. I have corrected the keyboard and it works.

Best regards,

Sven Siegmund