[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] Greek keyboard table



Jo Even Skarstein wrote:
Helmut Karlowski skreiv:

it will be nice to have the dead key function.

Which one shall this be? I thought of ALT+', ALT+^, etc, but that would also not be very convenient.

Deadkeys should not be linked to a specific key or key combo, but to an ASCII value. It can be done something like this in the end of scan2asc() (or whatever it's called - the function in keyboard.c that converts scancodes to ASCII) (pseudocode):

/* ascii is the resulting ascii code after looking it up in the keyboard table. */

if last_deadkey
{
  if ascii in deadkey_base_characters(last_deadkey) /* E.g. o */
    ascii = deadkey_accented_characters(last_deadkey, ascii) /* E.g ô */
  else
    ascii = last_deadkey

  last_deadkey = '\0'
}
else if ascii in deadkeys /* E.g ^ */
{
  last_deadkey = ascii
  ascii = '\0'
}

return ascii

So if you set the character '^' to be a deadkey, then any key or key-combo that returns ^ from the ordinary keyboard table will be a deadkey. If a valid "base character" for this deadkey is pressed next, it's corresponding accented character will be returned. E.g. ^ + o = ô. If deadkey is followed by an invalid base character, the deadkey is returned.

The deadkey-tables can follow the current tables, and the format can be simple:

deadkey character, basecharacter, accented character, base character, accented character, '\0'

I don't think it has to be more complicated than this.

Jo Even


I had an atari tool that did this.  CKBD?

Thanks,
Mark