• GS/OS 6.0.4, German Keyboard Mapping Wrong

    From Dirk Froehling@21:1/5 to All on Tue Feb 28 18:44:06 2023
    Hi,

    at some point during revival and upgrading from System 6.0.1 to 6.0.4,
    my IIGS lost the correct keyboard layout for my German keyboard.

    I do have some umlaut keys on my keyboard, but they work as if it was a
    US keyboard, I think, producing {}|\[] when I use them in any GS/OS GUI application like AppleWorks GS, EGOed or whatever.
    However, they work as expected in text modus, for example in the ORCA shell.

    I tried
    - to connect my old 6100 Mac keyboard (looks ridiculous on the IIGS),
    same effect.
    - lots of different settings in the General Control Panel.
    - shift-booting.

    Any ideas?

    Best regards
    Dirk

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Sat Mar 4 11:58:53 2023
    Hallo Dirk,

    There are a couple of possibilities:
    - your emulator's host OS may swallow keys preventing the emulator to output the correct key combination to generate a character,
    - In the sys.resources files, there is a resource to map keypresses to a font character. Perhaps you had one on your 6.0.1 resource, but there's none for 6.0.4

    I did one for French characters, it is either on my real machines or on the emulated ones, I dunno :-)

    MfG,
    Antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dirk Froehling@21:1/5 to All on Mon Mar 13 19:38:29 2023
    Bonjour Antoine,

    thanks for your hints!

    I think I didn't make that clear, it is not an emulated IIGS, it's the
    real thing.

    So the translation table should be in sys.resources? I fired up all my
    resource editors: Genesys, Foundation, ResEdit.IIgs, rEdit ;)
    I could not see anything that resembled a translation table. Then I dug
    into my old IIGS programming manuals for Apple IIGS Toolbox Reference
    Volume 3 and found that the type of resource should be $8021
    rKTransTable. Unfortunately, there was none such resource.

    Also, I got it wrong: When looking at my emulated machine which runs
    6.0.1 (original images from my real IIGS), the keyboard mapping was also
    wrong. So somehow it got lost before the update to 6.0.4. I looked at
    the Install disk of GS/OS 6.0.2, but there is no translation table as well.

    But I am absolutely sure I was able to write perfectly normal with my
    German keyboard back then!

    Does anybody have a sys.resources file with a translation table for me
    to start?

    Regards
    Dirk

    Am 04.03.23 um 20:58 schrieb Antoine Vignau:
    Hallo Dirk,

    There are a couple of possibilities:
    - your emulator's host OS may swallow keys preventing the emulator to output the correct key combination to generate a character,
    - In the sys.resources files, there is a resource to map keypresses to a font character. Perhaps you had one on your 6.0.1 resource, but there's none for 6.0.4

    I did one for French characters, it is either on my real machines or on the emulated ones, I dunno :-)

    MfG,
    Antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kent Dickey@21:1/5 to [email protected] on Mon Mar 13 23:29:50 2023
    In article <[email protected]>,
    Dirk Froehling <[email protected]> wrote:
    Hi,

    at some point during revival and upgrading from System 6.0.1 to 6.0.4,
    my IIGS lost the correct keyboard layout for my German keyboard.

    I do have some umlaut keys on my keyboard, but they work as if it was a
    US keyboard, I think, producing {}|\[] when I use them in any GS/OS GUI >application like AppleWorks GS, EGOed or whatever.
    However, they work as expected in text modus, for example in the ORCA shell.

    I tried
    - to connect my old 6100 Mac keyboard (looks ridiculous on the IIGS),
    same effect.
    - lots of different settings in the General Control Panel.
    - shift-booting.

    Any ideas?

    Best regards
    Dirk

    You said the General Control panel, I think you mean in GSOS, under the
    Apple Menu->Control Panels, then "General". Maybe also do Ctrl-Apple-ESC, then Control Panel, then Options? I'm suspicious of the Display Language
    and Keyboard Layout settings, they should both be German. They should be the same settings as the graphical control panels, but maybe something is wrong.

    Does your IIgs remember your settings when powered off? If not, it will default to US keyboards each time.

    My suggestion would be to clear the BRAM, and I forget how to do that,
    but if you remove the battery, it will clear it. Someone else will chime
    in on how.

    Kent

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dirk Froehling@21:1/5 to All on Tue Mar 14 08:10:39 2023
    Am 14.03.23 um 00:29 schrieb Kent Dickey:
    You said the General Control panel, I think you mean in GSOS, under the
    Apple Menu->Control Panels, then "General".

    Yes, I meant this.

    Maybe also do Ctrl-Apple-ESC, then
    Control Panel, then Options? I'm suspicious of the Display Language
    and Keyboard Layout settings, they should both be German. They should be the same settings as the graphical control panels, but maybe something is wrong.

    Well, yes, I tried that. These settings are correct and identical in
    both the classical control panel and the NDA version. I also switched
    the settings several times and this has an effect on the keyboard. And I
    can type umlauts in the text enviroment (like in ORCA Shell, for example).

    Does your IIgs remember your settings when powered off? If not, it will default to US keyboards each time.

    It does. I bought a new battery about half a year ago.

    My suggestion would be to clear the BRAM, and I forget how to do that,
    but if you remove the battery, it will clear it. Someone else will chime
    in on how.

    I did that, no effect. Also, my emulated IIGS shows the same behavior.

    I also suspected a system extension of some sort which I have installed
    but forgotten, but shift booting did not work either.

    Thanks for the ideas!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dirk Froehling@21:1/5 to All on Tue Mar 14 08:13:46 2023
    I did one for French characters, it is either on my real machines or
    on the emulated ones, I dunno :-)

    I forgot to ask: Why did you do this? This wasn't neccessary as far as I remember. Maybe the answer would steer me in the right diection.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Tue Mar 14 16:02:51 2023
    Let me correct myself, I forgot what I did but it is clearer now...

    *
    * Resource $8021
    * 0FF06FF for the default translation table (en français)
    *
    * (c) 202x, Antoine Vignau
    *

    * transTable (256 bytes)

    HEX 000102030405060708090A0B0C0D0E0F
    HEX 101112131415161718191A1B1C1D1E1F
    HEX 202122232425262728292A2B2C2D2E2F
    HEX 303132333435363738393A3B3C3D3E3F
    HEX 884142434445464748494A4B4C4D4E4F
    HEX 505152535455565758595A5B8D5D5E5F
    HEX 606162636465666768696A6B6C6D6E6F
    HEX 707172737475767778797A8E9D8F7E7F
    HEX 808182838485868788898A8B8C8D8E8F
    HEX 909192939495969798999A9B9C9D9E9F
    HEX A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
    HEX B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
    HEX C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
    HEX D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
    HEX E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
    HEX F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF

    * deadKeyTable (deadKey, offset)

    DDB $DB04 ; offset/2 to replacementTable1 - for ^
    DDB $F50F ; offset/2 to replacementTable2 - for ¨
    DDB $EE1A ; offset/2 to replacementTable3 - for tilde
    DDB $0000

    * replacementTable1 (scanKey, replaceValue) - offset is at 4x2

    DDB $6189 ; A
    DDB $6590 ; E
    DDB $6994 ; I
    DDB $6F99 ; O
    DDB $759E ; U
    DDB $41E5 ; a
    DDB $45E6 ; e
    DDB $49EB ; i
    DDB $4FEF ; o
    DDB $55F3 ; u
    DDB $0000

    * replacementTable2 (scanKey, replaceValue) - offset is at Fx2

    DDB $618A ; A
    DDB $6591 ; E
    DDB $6995 ; I
    DDB $6F9A ; O
    DDB $759F ; U
    DDB $4180 ; a
    DDB $45E8 ; e
    DDB $49EC ; i
    DDB $4F85 ; o
    DDB $5586 ; u
    DDB $0000

    * replacementTable3 (scanKey, replaceValue) - offset is at 1Ax2
    * used for tilde

    DDB $618B ; A
    DDB $6E96 ; N
    DDB $6F9B ; O
    DDB $41CC ; a
    DDB $4E84 ; n
    DDB $4FCD ; o
    DDB $0000

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Tue Mar 14 15:32:09 2023
    Hallo Dirk,
    Here is my French translation table, the one I added as the default translation table in my System disk. You'll get the same file twice: the HEX view, and then the detailed view. Toolbox reference volume 3 is your friend here.
    I had to create it to correctly translate my recent Brutal Deluxe games. Antoine

    *** the HEX view ***

    *
    * Resource $8021
    * 0FF06FF for the default translation table (en français)
    *
    * (c) 202x, Antoine Vignau
    *

    * transTable (256 bytes)

    HEX 000102030405060708090A0B0C0D0E0F
    HEX 101112131415161718191A1B1C1D1E1F
    HEX 202122232425262728292A2B2C2D2E2F
    HEX 303132333435363738393A3B3C3D3E3F
    HEX 884142434445464748494A4B4C4D4E4F
    HEX 505152535455565758595A5B8D5D5E5F
    HEX 606162636465666768696A6B6C6D6E6F
    HEX 707172737475767778797A8E9D8F7E7F
    HEX 808182838485868788898A8B8C8D8E8F
    HEX 909192939495969798999A9B9C9D9E9F
    HEX A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
    HEX B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
    HEX C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
    HEX D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
    HEX E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
    HEX F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF

    * deadKeyTable (deadKey, offset)

    HEX DB04F50FEE1A0000

    * replacementTable (scanKey, replaceValue)

    HEX 6189659069946F99759E41E545E649EB
    HEX 4FEF55F30000

    * first tries I guess (understand dead data)

    HEX 618A659169956F9A759F418045E849EC
    HEX 4F8555860000618B6E966F9B41CC4E84
    HEX 4FCD0000

    *** the DETAILED view ***

    *
    * Resource $8021
    * 0FF06FF for the default translation table (en français)
    *
    * (c) 202x, Antoine Vignau
    *

    * transTable (256 bytes)

    HEX 000102030405060708090A0B0C0D0E0F
    HEX 101112131415161718191A1B1C1D1E1F
    HEX 202122232425262728292A2B2C2D2E2F
    HEX 303132333435363738393A3B3C3D3E3F
    HEX 884142434445464748494A4B4C4D4E4F
    HEX 505152535455565758595A5B8D5D5E5F
    HEX 606162636465666768696A6B6C6D6E6F
    HEX 707172737475767778797A8E9D8F7E7F
    HEX 808182838485868788898A8B8C8D8E8F
    HEX 909192939495969798999A9B9C9D9E9F
    HEX A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
    HEX B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
    HEX C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
    HEX D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
    HEX E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
    HEX F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF

    * deadKeyTable (deadKey, offset)

    DDB $DB04
    DDB $F50F
    DDB $EE1A
    DDB $0000

    * replacementTable (scanKey, replaceValue)

    DDB $6189
    DDB $6590
    DDB $6994
    DDB $6F99
    DDB $759E
    DDB $41E5
    DDB $45E6
    DDB $49EB
    DDB $4FEF
    DDB $55F3
    DDB $0000 ; <= the table ends here

    DDB $618A ; first tries I guess
    DDB $6591
    DDB $6995
    DDB $6F9A
    DDB $759F
    DDB $4180
    DDB $45E8
    DDB $49EC
    DDB $4F85
    DDB $5586
    DDB $0000
    DDB $618B
    DDB $6E96
    DDB $6F9B
    DDB $41CC
    DDB $4E84
    DDB $4FCD
    DDB $0000

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dirk Froehling@21:1/5 to All on Wed Mar 15 15:21:52 2023
    Thank you very much! Two questions:

    - Is this the only table you have in you Sys.Resources file or have
    there been others too, maybe for other languages?
    - I could not find any information on the correct resource IDs for the different languages. Do you know where I can look?

    Dirk

    Am 15.03.23 um 00:02 schrieb Antoine Vignau:
    Let me correct myself, I forgot what I did but it is clearer now...

    *
    * Resource $8021
    * 0FF06FF for the default translation table (en français)
    *
    * (c) 202x, Antoine Vignau
    *

    * transTable (256 bytes)

    HEX 000102030405060708090A0B0C0D0E0F
    HEX 101112131415161718191A1B1C1D1E1F
    HEX 202122232425262728292A2B2C2D2E2F
    HEX 303132333435363738393A3B3C3D3E3F
    HEX 884142434445464748494A4B4C4D4E4F
    HEX 505152535455565758595A5B8D5D5E5F
    HEX 606162636465666768696A6B6C6D6E6F
    HEX 707172737475767778797A8E9D8F7E7F
    HEX 808182838485868788898A8B8C8D8E8F
    HEX 909192939495969798999A9B9C9D9E9F
    HEX A0A1A2A3A4A5A6A7A8A9AAABACADAEAF
    HEX B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF
    HEX C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF
    HEX D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF
    HEX E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
    HEX F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF

    * deadKeyTable (deadKey, offset)

    DDB $DB04 ; offset/2 to replacementTable1 - for ^
    DDB $F50F ; offset/2 to replacementTable2 - for ¨
    DDB $EE1A ; offset/2 to replacementTable3 - for tilde
    DDB $0000

    * replacementTable1 (scanKey, replaceValue) - offset is at 4x2

    DDB $6189 ; A
    DDB $6590 ; E
    DDB $6994 ; I
    DDB $6F99 ; O
    DDB $759E ; U
    DDB $41E5 ; a
    DDB $45E6 ; e
    DDB $49EB ; i
    DDB $4FEF ; o
    DDB $55F3 ; u
    DDB $0000

    * replacementTable2 (scanKey, replaceValue) - offset is at Fx2

    DDB $618A ; A
    DDB $6591 ; E
    DDB $6995 ; I
    DDB $6F9A ; O
    DDB $759F ; U
    DDB $4180 ; a
    DDB $45E8 ; e
    DDB $49EC ; i
    DDB $4F85 ; o
    DDB $5586 ; u
    DDB $0000

    * replacementTable3 (scanKey, replaceValue) - offset is at 1Ax2
    * used for tilde

    DDB $618B ; A
    DDB $6E96 ; N
    DDB $6F9B ; O
    DDB $41CC ; a
    DDB $4E84 ; n
    DDB $4FCD ; o
    DDB $0000

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Wed Mar 15 12:45:32 2023
    Hallo Dirk,

    1. Only one entry. I did that myself, and for my own need. System 6.x has none by default, I wrote one for French.
    2.One would need to create a $8021 resource, with ID 0FFF06xx where xx is the language code.

    But, there is a problem, language code would need to begin with value 3 as 1 and 2 are reserved by the system. Here, 3 would mean UK, 4 would mean FR.

    Why? Because the language code is grabbed from a menu and menu items from the same sys.resource file. But the values are +1 compared to the language code (eg. 4 in the menu for French when the language code for French is 3). So, 0FFF0608 would be the key
    translation table for German.

    I wonder whether one could write a unique resource to cover all languages in one table. I mean, ¨ then u would be the right value for a lot of European languages.

    Antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dirk Froehling@21:1/5 to All on Fri Mar 17 08:13:53 2023
    Thanks Antoine. I will try to do a German mapping based on yours.

    But if you say Sys.Resources did not have any of these mappings in
    System 6.x, this leaves the question, why did that work once?

    My wife and I wrote our theses on that IIGS and she would have killed me
    if she had to type strange key combinations for äüö... ;)

    Dirk

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kelvin Sherlock@21:1/5 to Dirk Froehling on Fri Mar 17 13:35:06 2023
    Take a look at Sheppy's Localizer. There are Italian, French, German
    and Swedish editions.

    http://www.sheppyware.net/downloads/downloads-gs/index.html

    In <[email protected]>
    Dirk Froehling <[email protected]> writes:

    Thanks Antoine. I will try to do a German mapping based on yours.

    But if you say Sys.Resources did not have any of these mappings in
    System 6.x, this leaves the question, why did that work once?

    My wife and I wrote our theses on that IIGS and she would have killed me
    if she had to type strange key combinations for ... ;)

    Dirk

    -------
    ProLine: kelvin@pro-kegs

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Hurbo Wutz@21:1/5 to All on Fri Mar 17 12:50:19 2023
    Hello Dirk,
    Kelvin ist right. You need localizerGer.shk (by Eric Shepard, German keyboard translator by André Horstmann). After installation you can set translation to German in the Control panel. On a real GS I'm able to name my Hard disk using special german
    Characters Ü, Ä, Ö, ß.
    Regards
    Carlo

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dirk Froehling@21:1/5 to All on Fri Mar 17 22:43:03 2023
    Am 17.03.23 um 19:35 schrieb Kelvin Sherlock:
    Take a look at Sheppy's Localizer. There are Italian, French, German
    and Swedish editions.

    http://www.sheppyware.net/downloads/downloads-gs/index.html


    That's it! This works great, thank you, Kelvin (and Eric, of course)!

    Dirk

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Antoine Vignau@21:1/5 to All on Sun Mar 19 13:05:21 2023
    The mystery is solved! I think I worked for nothing with my own version, apart from understanding how that thing works.
    Antoine

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)