Download your favorite Linux distribution at LQ ISO.
Go Back > Blogs > Mol_Bolom
User Name


Rate this Entry

xkb, dead keys, multi keys, xmodmap, etc. Seeking guidance.

Posted 01-05-2009 at 07:40 PM by Mol_Bolom

I have found a bit more information today on xkb and after thinking through it as well as other information I have gathered over the past couple of months, I've come to a new realization that perhaps I've been going about keyboard configuring all wrong. So I've decided that I should seek some of the experienced users for ideas on which aspect of keyboard configurations I should concentrate on.

I gather probably the easiest way for me to configure my system is with two entirely different keyboard layouts, which I would rather have just one. Also, I have already done this, but unfortunately, it is a major hassle.

Another way in which I could do so would be adding more levels into an xkb symbol file. I haven't been able to get a functioning symbol file to use groups yet. Thus, I would be able to create Mode_shift keys throughout the keyboard, but I believe that would be fairly problematic.

The major language layout I need to use is en_US, the secondary language is Cherokee.

There are 85 characters in the Cherokee language. So, a basic keyboard is fairly difficult to type in a language such as that and have access to common quotation symbols and numerals, too.

However, by going the dead key route, or some way similar, the keyboard could be cut down a lot.

Using the Romanized alphabet the only letters that would need to be dealt with in Cherokee are a, e, i, o, u, v, g, t, y, s, d, g, h, j, k, l, m, n. Actually, not even j would need to be used, but however, the letters ts together are pronounced in the dialect I know as j, so it cuts down on typing.

That is a count of 18 characters that I would only need to use for typing in Cherokee using some method such as dead keys. Also, if I were to add a dead key, or some other method, to where I could type in g+g, then I would not have any need for k, thus breaking the keyboard down to only 17 keys needed, also, leaving the rest of the keyboard for the common symbols used such as the period, comma, numerals, etc.

So, once I figure out how to initiate shift_lock and/or caps_lock states, then I could create a second level which could thus trap the Romanized characters. Such as pressing CAPS would trap the keyboard into level2, thus the characters in level two would be abcdef..., and by pressing shift in this level should yield ABCDEF...

Or I could reverse this and set the Cherokee keyboard layout in level2.

Well, this is the ideal solution. I have made a keyboard layout that comes close to that solution, however it only works in the Opera internet browser and in no other program, which I presume is because I do not use Gnome or KDE and have no wish to use either of them. Also, I presume that the programs I use regularly are not interacting with whatever is used by xim.

By using that method I am able to type in Cherokee very quickly, but for the most part I am left with the older layout which uses almost every single key on the keyboard as well as almost every single shifted key. Leaving only the apostrophe, quotes, period, comma, and parentheses. Also, using this layout is tricky at best because of the need to press shift so often.

Some people have stated being against using dead keys and some others have even stated that they are against Unicode.

Either way, I'm left wondering exactly what would be the right way to do it, or which method would work the best, and yet everything I've tried hasn't worked out so great.

Anyway, I'm not looking for answers as such telling me how to do all this. I'm looking for a little guidance.

If you were in my shoes, so to speak, which method or route would yield the greatest results? Using dead keys or not? Using shift_lock/caps_lock or not? Learning xkb or xmodmap? Learning the internals to X or not? Or something else that I have not seen nor heard of?
Posted in Uncategorized
Views 6489 Comments 1
« Prev     Main     Next »
Total Comments 1


  1. Old Comment
    Well, I've been going back and forth over xkb. From being excited about all the things I'm learning while doing so, to wishing I could write an AI program to make my computer alive just to blow its brains out, ha ha ha...

    Anyway, I've come up with an idea while reading through that I could create a types file which would use 16 levels, then I could use a Lock state to lock the keyboard at level3 to which then I could have two keyboard layouts all in one...

    That is to say, level1 to level2 would be the common US keyboard layout and level3 would be the Cherokee keyboard layout, levels 4 through 16 would be used only through mod keys so that d, g, h, j, l, m, n, q, s, t, w, y would be mod keys and the vowels a, e, i, o, u, v would have the levels 4 through 16.

    This is what I have so far, but it doesn't work yet...

    partial alphanumeric_keys modifier_keys 
    xkb_symbols "basic" {
        name[Group1]= "Cherokee-Modified";
        // Alphanumeric section
        key <AD03> {	[	  e,	E, <U13A1>, <U13A8>, <U13AE>, <U13B4>, <U13BA>, <U13C1>, <U13C7>, <U13CE>, <U13D5>, <U13D6>, <U13DE>, <U13E4>, <U13EA>, <U13F0>		]	};
        key <AD07> {	[	  u,	U, <U13A4>, <U13AB>, <U13B1>, <U13B7>, <U13BD>, <U13C4>, <U13CA>, <U13D1>, <U13DA>, <U13DA>, <U13E1>, <U13E7>, <U13ED>, <U13F3>		]	};
        key <AD08> {	[	  i,	I, <U13A2>, <U13A9>, <U13AF>, <U13B5>, <U13BB>, <U13C2>, <U13C8>, <U13CF>, <U13D7>, <U13D8>, <U13DF>, <U13E5>, <U13EB>, <U13F1>		]	};
        key <AD09> {	[	  o,	O, <U13A3>, <U13AA>, <U13B0>, <U13B6>, <U13BC>, <U13C3>, <U13C9>, <U13D0>, <U13D9>, <U13D9>, <U13E0>, <U13E6>, <U13EC>, <U13F2>		]	};
        key <AC01> {	[	  a,	A, <U13A0>, <U13A6>, <U13AD>, <U13B3>, <U13B9>, <U13BE>, <U13C6>, <U13CC>, <U13D3>, <U13D4>, <U13DD>, <U13E3>, <U13E9>, <U13EF> 		]	};
        key <AB04> {	[	  v,	V, <U13A5>, <U13AC>, <U13B2>, <U13B8>, <U13BD>, <U13C5>, <U13CB>, <U13D2>, <U13DB>, <U13DB>, <U13E2>, <U13E8>, <U13EE>, <U13F4>		]	};
        // End alphanumeric section
    The types file is far far from functional, let alone, I still have to figure out exactly what needs to be defined and utilized, but eh...Still working on it...

    partial default xkb_types "default" {
        type "SIXTEEN_LEVEL" {
            modifiers = Shift+Lock;
    	map[None] = Level1;
    	map[Shift] = Level2;
    	map[Shift+Lock] = Level3;
    	level_name[Level1] = "Base";
    	level_name[Level2] = "Shift";
    	level_name[Level3] = "ch_vowel";  
    	level_name[Level4] = "ch_g";  
    	level_name[Level5] = "ch_h";
    	level_name[Level6] = "ch_l";
    	level_name[Level7] = "ch_m";
    	level_name[Level8] = "ch_n";
    	level_name[9] = "ch_q";
    	level_name[10] = "ch_s";
    	level_name[11] = "ch_d";
    	level_name[12] = "ch_t";
    	level_name[13] = "ch_tl";
    	level_name[14] = "ch_j";
    	level_name[15] = "ch_w";
    	level_name[16] = "ch_y";

    Anyway, the thought goes like this...Press the windows key, which will lock the keyboard into level3...
    Press g, which changes to level 4. Then by pressing the a key, will return the Cherokee letter ga, or e to give the Cherokee letter ge, i (gi), o (go), etc, etc...

    Since the keyboard would be locked on level3, and since none of the consonants have a character above level3, therefore by pressing any of the consonants would activate the specified level for that consonant. At least in theory, considering some of the keyboard layouts I've made which allows the characters in levels 1 and 2 to be input when there are no other levels created for those keys.

    Also, the thought goes like this...With using dead keys by xim/uim sometimes a character will not be placed such as when I make a mistake and type s+c+e to get tse, where s is the accident. By using the other method, by pressing c would cancel out the s input therefore c+e would be the only keys input from the keyboard. Therefore the letter tse is given, instead of nothing which is very aggrivating.

    Anyway, I don't think it is possible, but I'll keep plugging away at it.

    This is how the keyboard would work...

    g switches to level4 (To return the Cherokee letters ga, ge, gi, go, gu, gv by pressing the keys a, e, i, o, u, v)
    h level5 (ha, he, hi, ho, hu, hv)
    l level6 (la, le, li, lo, lu, lv)
    m level7 (ma, me, mi, mo, mu)
    n level8 (na, ne, ni, no, nu, nv)
    q level9 (gwa, gwe, gwi, gwo, gwu, gwv)
    s level10 (sa, se, si, so, su, sv)
    d level11 (da, de, di, do, du, dv)
    t level12 (ta, te, ti, do, du, dv)
    p level13 (tla, tle, tli, tlo, tlu, tlv)
    j level14 (tsa, tse, tsi, tso, tsu, tsv)
    w level15 (wa, we, wi, wo, wu, wv)
    y level16 (ya, ye, yi, yo, yu, yv)

    Of course I might change these keys, but eh, I need to be able to make sure the darn thing will work first...Still a lot more to read...

    Well, will be interesting to see what might happen...Computer Blows Up...Eh, well, only one way to find out......
    Posted 04-05-2009 at 02:40 AM by Mol_Bolom Mol_Bolom is offline


All times are GMT -5. The time now is 12:35 AM.

Main Menu
Write for LQ is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration