Bug 11753 - Dead keys accessible trough AltGr
Summary: Dead keys accessible trough AltGr
Status: RESOLVED FIXED
Alias: None
Product: xkeyboard-config
Classification: Unclassified
Component: General (show other bugs)
Version: unspecified
Hardware: All All
: low enhancement
Assignee: xkb
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-07-28 04:45 UTC by Adriaan van Nijendaal
Modified: 2007-08-02 16:03 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adriaan van Nijendaal 2007-07-28 04:45:01 UTC
Enhancement request:

The deadkeys on the Int'l keyboard(s) constantly get in my way. I propose to
'hide' the deadkeys behind AltGr (the right Alt key).

I have prepared sections to be included into xkb/symbols/us,
xkb/rules/base.lst and xkb/rules/base.xml. I have been using this
layout for three years (it works for me). I am, however no expert and
I have not been able to iron out all xkb errors.

---------------------------------------------------------------------

section to be added to xkb/symbols/us:

// I do NOT like dead-keys - the International keyboard as defined by
// M$ doesn't fit my needs. Why use two keystrokes for all simple
// characters (eg ' and <space> generates a single ') just to have an
// é (eacute) in two strokes as well? I type ' more often than é
// (eacute). - Adriaan
//
// This file works just like a regular keyboard, BUT has the dead-keys
// accessible at level3 (through AltGr). An ë (ediaeresis) is now:
// AltGr+" followed by an e. In other words, this keyboard is not
// international as long as you leave the right Alt key alone.

partial alphanumeric_keys
xkb_symbols "altgr-intl" {

    name[Group1]= "U.S. English - International (AltGr dead keys)";

    include "us(basic)"
    key <TLDE> { [    grave,    asciitilde,     dead_grave,     dead_tilde      ] };
    key <AE01> { [        1,    exclam,         onesuperior,    exclamdown      ] };
    key <AE02> { [        2,    at,             twosuperior,    dead_doubleacute] };
    key <AE03> { [        3,    numbersign,     threesuperior,  dead_macron     ] };
    key <AE04> { [        4,    dollar,         currency,       sterling        ] };
    key <AE05> { [        5,    percent,                EuroSign                ] };
    key <AE06> { [        6,    asciicircum,            dead_circumflex         ] };
    key <AE07> { [        7,    ampersand,              dead_horn               ] };
    key <AE08> { [        8,    asterisk,               dead_ogonek             ] };
    key <AE09> { [        9,    parenleft,  leftsinglequotemark,dead_breve      ] };
    key <AE10> { [        0,    parenright,rightsinglequotemark,dead_abovering  ] };
    key <AE11> { [    minus,    underscore,     yen,            dead_belowdot   ] };
    key <AE12> { [    equal,    plus,           multiply,       division        ] };

    key <AD01> { [        q,    Q,              adiaeresis,     Adiaeresis      ] };
    key <AD02> { [        w,    W,              aring,          Aring           ] };
    key <AD03> { [        e,    E,              eacute,         Eacute          ] };
    key <AD04> { [        r,    R,              ediaeresis,     Ediaeresis      ] };
    key <AD05> { [        t,    T,              thorn,          THORN           ] };
    key <AD06> { [        y,    Y,              udiaeresis,     Udiaeresis      ] };
    key <AD07> { [        u,    U,              uacute,         Uacute          ] };
    key <AD08> { [        i,    I,              iacute,         Iacute          ] };
    key <AD09> { [        o,    O,              oacute,         Oacute          ] };
    key <AD10> { [        p,    P,              odiaeresis,     Odiaeresis      ] };
    key <AD11> { [ bracketleft, braceleft,              guillemotleft           ] };
    key <AD12> { [ bracketright,braceright,             guillemotright          ] };

    key <AC01> { [        a,    A,              aacute,         Aacute          ] };
    key <AC02> { [        s,    S,              ssharp,         section         ] };
    key <AC03> { [        d,    D,              eth,            ETH             ] };
    key <AC04> { [        f,    F                                               ] };
    key <AC05> { [        g,    G                                               ] };
    key <AC06> { [        h,    H                                               ] };
    key <AC07> { [        j,    J,              idiaeresis,     Idiaeresis      ] };
    key <AC08> { [        k,    K                                               ] };
    key <AC09> { [        l,    L,              oslash,         Ooblique        ] };
    key <AC10> { [semicolon,    colon,          paragraph,      degree          ] };
    key <AC11> { [apostrophe,   quotedbl,       dead_acute,     dead_diaeresis  ] };

    key <AB01> { [        z,    Z,              ae,             AE              ] };
    key <AB02> { [        x,    X,              oe,             OE              ] };
    key <AB03> { [        c,    C,              copyright,      cent            ] };
    key <AB04> { [        v,    V,              registered,     registered      ] };
    key <AB05> { [        b,    B                                               ] };
    key <AB06> { [        n,    N,              ntilde,         Ntilde          ] };
    key <AB07> { [        m,    M,              mu,             mu              ] };
    key <AB08> { [    comma,    less,           ccedilla,       Ccedilla        ] };
    key <AB09> { [   period,    greater,        dead_abovedot,  dead_caron      ] };
    key <AB10> { [    slash,    question,       questiondown,   dead_hook       ] };
    key <BKSL> { [backslash,    bar,            notsign,        brokenbar       ] };

    include "level3(ralt_switch)"
};
---------------------------------------------------------------------

one line to be added to xkb/rules/base.lst (just below alt-intl):

  altgr-intl      us: International (with AltGr dead keys)

---------------------------------------------------------------------

section to be added to xkb/rules/base.xml:

        <variant>
          <configItem>
            <name>altgr-intl</name>
            <description>International (with AltGr dead keys)</description>
            <description xml:lang="en_GB">International (with AltGr dead keys)</description>
            <description xml:lang="fr">International (avec touches mortes AltGr )</description>
            <description xml:lang="nl">Internationaal (met AltGr dode toetsen)</description>
            <description xml:lang="de">International (mit AltGr Dead-Key)</description>
          </configItem>
        </variant>

Sorry about the missing other languages - I speak only these four languages :-(

---------------------------------------------------------------------
Comment 1 Adriaan van Nijendaal 2007-07-28 04:47:06 UTC
Noticed that the web-interface truncates lines of the sections to be added. Please contact me for a file with this enhancement request with long(er) lines.

Adriaan
Comment 2 Sergey V. Udaltsov 2007-07-28 04:56:09 UTC
Thanks,

First of all, do not bother about base.xml translations - they are done using proper translation process:)

Then, could you please explain why variants intl or alt-intl are not good for you?
Your version is very close (if not identical) o the intl variant.
Comment 3 Adriaan van Nijendaal 2007-08-01 04:00:14 UTC
On Sat, 28 Jul 2007, bugzilla-daemon@freedesktop.org wrote:

> First of all, do not bother about base.xml translations - they are done using
> proper translation process:)

Understood.

> Then, could you please explain why variants intl or alt-intl are not good for
> you?

If one uses an international keyboard, a few keys are designated 'dead
keys'. If one would type an eacute (é), which is used in almost every
language (but English), one would type the ' (which doesn't 'do'
anything - it's a dead key), followed by an e. You knew that.

Now, if one would like to write 'something literal' (surrounded by
quotes), one would need to type ' AND <space> to get a single ', since
the ' key doesn't 'do' anything. This has to be done EVERYTIME, for ',
and ", and ` and ^, etc.

Two keystrokes for a single ' ? And two keystrokes for é ? Set your
keyboard to International and try to type some C (or C++). You'll see
what I mean.

If ' would be just ', and AltGr-' would be the dead key, then one
could type any text just as on the US keyboard, whereas the é is
accessible through AltGr-' followed by e. In other words, one would
not 'lose' the keys that are now dead keys.

> Your version is very close (if not identical) o the intl variant.

It's surely not identical. Whenever you type an ^ on my keyboard,
you'll get an ^, whereas AltGr-^ followed by o will give you ô on my
board. On the other international keyboards, you'll get NO ^ unless
you follow it by a space.

I imagine my explanation is not very clear: strange characters and
foreign languages. Sorry about that. Please try the usual
international layout for an hour. Or feel free to ask for more
explanation (more verbose text). It's that important to me!

Thank you for you quick response!

Regards,

Adriaan

PS I responded by e-mail - oblivious to the 'proper' way.
Comment 4 Sergey V. Udaltsov 2007-08-01 14:42:55 UTC
> I imagine my explanation is not very clear: strange characters and
> foreign languages. Sorry about that. Please try the usual
No, quite an opposite - your explanation makes sense to me. What I would ask is to include either us(intl) or us(alt-intl) instead of us(basic) and provide only different keysym mappings. Then it would be more obvious, ok?
Comment 5 Adriaan van Nijendaal 2007-08-02 04:09:53 UTC
That was an excellent idea, because it made me unravel what I did three years
ago and it turns out I have secretly slipped in a few other changes as well.
Looking at "international keyboards" on the internet, I see that many
international keyboards have variants for a specific locale; I wanted to stay as
close as possible to the original Microsoft definition. (BTW, even alt-intl is a
diversion)

The new section would be as follows:

// I do NOT like dead-keys - the International keyboard as defined by Microsoft
// doesn't fit my needs. Why use two keystrokes for all simple characters (eg '
// and <space> generates a single ') just to have an é (eacute) in two strokes
// as well? I type ' more often than é (eacute).
//
// This file works just like a regular keyboard, BUT has all dead-keys
// accessible at level3 (through AltGr). An ë (ediaeresis) is now: AltGr+"
// followed by an e. In other words, this keyboard is not international as long
// as you leave the right Alt key alone.
//
// The original MS International keyboard was intended for Latin1 (iso8859-1).
// With the introduction of iso8859-15, the (important) ligature oe (and OE)
// became available. I added them next to ae. Because I write ediaeresis more
// often than registered, I moved registered to be next to copyright and added
// ediaeresis and idiaeresis. - Adriaan

partial alphanumeric_keys
xkb_symbols "altgr-intl" {

    name[Group1]= "U.S. English - International (AltGr dead keys)";

    include "us(intl)"

// five dead keys moved into level3:

    key <TLDE> { [    grave, asciitilde,  dead_grave,   dead_tilde      ] };
    key <AE06> { [        6, asciicircum, onequarter,   dead_circumflex ] };
    key <AC11> { [apostrophe,quotedbl,    dead_acute,   dead_diaeresis  ] };

// diversions from the MS Intl keyboard:

    key <AE01> { [        1, exclam,      onesuperior,  exclamdown      ] };
    key <AD04> { [        r, R,           ediaeresis,   Ediaeresis      ] };
    key <AC07> { [        j, J,           idiaeresis,   Idiaeresis      ] };
    key <AB02> { [        x, X,           oe,           OE              ] };
    key <AB04> { [        v, V,           registered,   registered      ] };

// onequarter etc (not in iso8859-15) deleted to get three unshifted deadkeys:

    key <AE06> { [        6, asciicircum,       dead_circumflex         ] };
    key <AE07> { [        7, ampersand,         dead_horn               ] };
    key <AE08> { [        8, asterisk,          dead_ogonek             ] };

    include "level3(ralt_switch)"
};
Comment 6 Sergey V. Udaltsov 2007-08-02 16:03:22 UTC
This way it looks much better and really clean. Committed, thanks.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.