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 asciiSo 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