Path: utzoo!mnetor!uunet!mcvax!diku!jesper
From: jesper@diku.UUCP (Jesper L. Lauritsen)
Newsgroups: comp.sys.atari.st
Subject: Re: Re: (Beta) Gulam Key table
Message-ID: <3554@diku.UUCP>
Date: 30 Nov 87 13:09:34 GMT
References: <1541@brahma.cs.hw.ac.uk> <573@cernvax.UUCP>
Organization: DIKU, U of Copenhagen, DK
Lines: 65
Keywords: It's great once modified.

In article <573@cernvax.UUCP> jmg@cernvax.UUCP (jmg) writes:
>In article <1541@brahma.cs.hw.ac.uk> neil@cs.hw.ac.uk (Neil Forsyth) writes:
>>If you have a hex/ascii file editor you can modify the latest (beta) version
>>of Gulam to work with the UK keyboard. The keyboard table is at offset $13B76
>>from the start of the file GULAM.PRG. Don't paste a completely new key table
>>here just modify the necessary keys ie. \ to a #. Do this on all three tables.

>Remember, though, that UK Ataris have the pound sign (and also an
>"overline", the reverse of underline). These have Atari codes greater
>than 80 hex. If you put these codes into the Gulam table they do not
>work!
>The same problem (but worse) applies to German and French models.
and Danish and Swedish and ....
>How about a Gulam which can handle this (or can it, and I just do not
>know how)?

Some months ago someone from Iceland had a major flame on the ignorance of
American (and English) software writers. Apparently it didn't help a bit.
Well, Gulam is great once modified so here is some hints how to modify it.
This is from memory and somewhat unprecise. Mail me if you want more
specific directions.
First you must know that Gulam reinstalls its own key tables after each
command, so there is no way around patching the code.
The reason for this is (I think) that the key tables are defined so function
keys etc. sends char's > 0x80. These char's are then bound to ue functions.
This is sort of described in the Gulam doc's under the command to redefine
key bindings.
Now, the problem is that some of the chars that function keys etc. sends
are national chars.
Therefore first you change all 3 key tables so your "national keys" send
the right char *and* so no function keys etc. sends your national char. You
must of course make the function keys etc. send some other unused char.
Second you must change the key bindings. Note that there are *two* sets
of key bindings and not 3 as stated in the docs, one for *mini* and one
for both *gulam* and other buffers. Also note that chars in the ranges
0x20-0x7f and 0xa0-0xff without any keybinding is default selfinsert, chars
outside these ranges must have the binding 31 (from memory!) to self-
insert.
More specific you need to change the following bindings: For each
national char do: If the char wasn't send by any of the function keys etc.
and if it is in the ranges above you don't have to change anything. If the
char is outside the ranges (or was sendt by a function key etc.) you must
bind the char to 31. If the char previously was send by a function key etc.
this char was bound to some ue function, the char the function key etc. *now*
sends must be bound to that ue function.
The bindings can be changed in two ways: you can use the gulam command to
change bindings, or you can patch the code.
The first way is of course the easyest but it has one big problem. The table
of bindings for the *mini* buffer is full, so you can make no new bindings
in that buffer. There is no problem in the other buffers. You may be able
to live with no national chars in *mini*.
If you want to use the second way, you must find the bindings tables in
the code. I can not remember the address of the tables but they have a
quite destinct format so they are not hard to find (I used DL II). The
format is like what you get when you press  inside a buffer, and
is sort of described in the gulam doc's.

Please, please, please. When the final version of Gulam is done make it
easyer for us europeans.

Good luck to everybody,
   Jesper

-------------
Jesper L. Lauritsen, U of Copenhagen, jesper@diku.UUCP or ibtjll@dkuccc11.BITNET