Anpassning av tangentbord. (Caps & NumPad)

Permalänk
Medlem

Anpassning av tangentbord. (Caps & NumPad)

Jag har, med viss hjälp av KeyboardLayoutEditor (som dock är buggigt, och vars resultat dock tvunget måste fixas manuellt, innan det kan funka), skapat anpassade tangentbordsupplägg. (som jag senare också justerat några gånger)

…men det finns vissa ändringar jag vill göra, som jag inte lyckats få att funka. (har gjort försök, och det borde väl vara möjligt, egentligen, men…)

Har nån, nån aning om hur det kan lösas?

Det jag tänkt göra (och som lösningen alltså behöver tillåta att man gör), är:

  • Att ändra på CapsLock, i enlighet med vad som föreslagits i Tyskland, så att den vanligen funkar som en extra AltGr-knapp, men ändrar på CapsLock-läge, om man trycker Ctrl-Caps. (och Lock-knapparna är ju extra bökiga) Detta borde ju gå att fixa, redan i tangentbordupplägget, även i MKLC, tycker jag, då ju Japanskt tangentbord (inte japanskt upplägg, på västerländskt tangentbord, men japanskt upplägg på japanskt tangentbord), har en annan funktion på CapsLock-knappen, och man måste trycka Ctrl-Caps för att skiftar CapsLock-läge …och så har det varit, nästan så länge som japanerna haft eget tangentbord.

  • Att ändra på NumLock, på liknande vis, så att den vanligen är =, med Ctrl-NumLock, för att ändra NumLock-läge

  • Att ändra på NumPad, så att det alltid producerar siffror, men där NumLock-läget dock ändrar decimalseparatorn (och det då är den absolut enda skillnaden) …samt att shift+NumPad-siffra ger upphöjd variant av siffran, och AltGr+NumPad-siffra ger nersänkt. (det finns alltså enskilda unicode-tecken, för upphöjda och nersänkta siffror. Just ¹²³ finns redan i vanlig 8-bitars ASCII)

  • Att ändra på NumPad, i ett annat tangentbordsupplägg, så att det skiftar mellan våra "vanliga" västarabiska siffror (123…), och Mellanösterns östarabiska siffror (١٢٣…)

När jag sökt på detta, så har en del (ofta på uni*-system. Inte alltid specifikt Linux, men…), som gjort försök med ändringar av Lock-knappar, fått problem med att knappen fortfarande ändrar lock-läge, eller att Lock-läge-ändring på annat vis inte funkar rätt …och en lösningen på det jag vill åstadkomma, behöver alltså fixa så att man inte får såna problem.

justering av komma
Visa signatur

/A-lan

Permalänk
Medlem

Korrigering av listan:

  • Att ändra på CapsLock, i enlighet med vad som föreslagits i Tyskland, så att den vanligen funkar som en extra AltGr-knapp, men ändrar på CapsLock-läge, om man trycker Ctrl-Caps. (och Lock-knapparna är ju extra bökiga) Detta borde ju gå att fixa, redan i tangentbordupplägget, även i MKLC, tycker jag, då ju Japanskt tangentbord (inte japanskt upplägg, på västerländskt tangentbord, men japanskt upplägg på japanskt tangentbord), har en annan funktion på CapsLock-knappen, och man måste trycka Ctrl-Caps för att skiftar CapsLock-läge …och så har det varit, nästan så länge som japanerna haft eget tangentbord.

  • Att ändra på NumLock, på liknande vis, så att den vanligen är =, med Ctrl-NumLock, för att ändra NumLock-läge (edit: och ⁼ för shift och ₌ för AltGr)

  • Att ändra på NumPad, så att det alltid producerar siffror, men där NumLock-läget dock ändrar decimalseparatorn (och det då är den absolut enda skillnaden) …samt att shift+NumPad-siffra ger upphöjd variant av siffran, och AltGr+NumPad-siffra ger nersänkt. (det finns alltså enskilda unicode-tecken, för upphöjda och nersänkta siffror. Just ¹²³ finns redan i vanlig 8-bitars ASCII)

  • Att ändra på NumPad, i ett annat tangentbordsupplägg, så att det skiftar mellan våra "vanliga" västarabiska siffror (123…), och Mellanösterns östarabiska siffror (١٢٣…)

Att fixa upphöjda/nersänkta siffror, och plus och minus (och ÷ för shift+/, och ⋅ och × för shift respektive AltGr med *), samt att fixa så att NumLock växlar mellan västarabiska/östarabiska siffror, var ju inte alls svårt, och funkar precis som det ska
…men att få decimal-knappen, att bete sig…

Att bland de övriga numpad-knapparna, lägga in

key <KPDL> { type= "KEYPAD", [ comma, period ] }; // . , key <KPPT> { type= "KEYPAD", [ period, comma ] }; // , .

(KPPT är en extra knapp, på Brasilianska tangentbord. Decimalknappen skapar komma, som för oss och de flesta icke-engelsktaliga, medans extraknappen skapar punkt. Vill skaffa ett sånt tangentbord (som jag ser som det bästa upplägget, vad gäller det fysiska knappupplägget), men med mitt eget tangentbordsupplägg skrivet på tangenterna. Har prövat med att ta bort den raden, för att se om det mot förmodan skapade nån konflikt, men det ändrade inte på nåt)

alternativt ha en separat bit (som inkluderas med "include")

partial keypad_keys xkb_symbols "nåtnamn" { key.type[Group1]="KEYPAD" ; key <KPDL> { [ comma, period ] }; // . , key <KPPT> { [ period, comma ] }; // , . };

(där “key.type[Group1]="KEYPAD" ;” bör vara onödigt. Har prövat med eller utan)
…borde ju funka.
Men oavsett hur jag gör, så blir det punkt när NumLock är på, och komma när det är av.
Jag har också prövat med att ändra på "comma, period" till "period, comma", men får exakt samma resultat.
(tangentbordsupplägget, som skiftar mellan västarabiska/östarabiska, beter sig dock helt rätt, med vilket av de som funkar när NumLock är på eller av)
Kan inte förstå mig på, vad som kan orsaka felet.

Ändringar av -Lock-knapparna kan jag fortfarande inte klura ut.
Tänkte att jag jag ta en titt på hur Japanska tangentbord hanteras, i Linux.
Ser då detta: "key <CAPS> { [ Eisu_toggle, Caps_Lock ] };"
Såg ut att vara för enkelt för att vara sant.

Försökte med

partial alphanumeric_keys xkb_symbols "cuslock" { include "[types-definitionen nedan]" key <CAPS> { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ Alt_R, Caps_Lock ] }; key <NMLK> { type[Group1]="FOUR_LEVEL_CTRL", symbols[Group1]= [ equal, 207C, 208C, NoSymbol, Num_Lock ] }; // = ⁼ ₌ <NumLock> }; partial xkb_types "fourctrl" { type "FOUR_LEVEL_CTRL" { modifiers = Shift+LevelThree; map[None] = Level1; map[Shift] = Level2; map[LevelThree] = Level3; map[Shift+LevelThree] = Level4; map[Control] = Level5; level_name[Level1] = "Base"; level_name[Level2] = "Shift"; level_name[Level3] = "Alt Base"; level_name[Level4] = "Shift Alt"; level_name[Level5] = "Control"; }; };

…men det funkade inte (ledde inte till konstigt beteende, men bara att de beter sig som vanligt), och gjorde så att mina NumPad-ändringar inte heller funkade. (Numpad återgick alltså till normal-beteende)
Prövade först med att types-definitionen i samma fil, sen i en separat fil under /usr/share/X11/xkb/types/, men det funkade inte, oavsett.

Visa signatur

/A-lan

Permalänk
Medlem

Visar sig att det var den egenskapade type:en, som orsakade problem.
När jag försökte använda bara CapsLock-intställningen, så funkade det utmärkt. Alt_R funkade dock Alt, och inte AltGr …vilket för all del är helt rätt.
Har nu istället

partial alphanumeric_keys xkb_symbols "nåt namn" { key <CAPS> { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ ISO_Level3_Shift, Caps_Lock ] }; key <RALT> { type[Group1]="ONE_LEVEL", symbols[Group1] = [ ISO_Level3_Shift ] }; include "level3(modifier_mapping)" };

…och tog bort ”include "level3(ralt_switch)"” från tangentbordsuppläggen. (går kanske att bara ha Caps, och ”include "level3(modifier_mapping)”, och ha kvar ”include "level3(ralt_switch)"”, men för säkerhets skull, och för att det känns lite smidigare…)

Med NumLock så gick det att använda PC_CONTROL_LEVEL2, men…
Till slut testade jag med att lägga in min type (bantade bort den oanvända AltGr+Shift-nivån) i /usr/share/X11/xkb/types/pc (gjorde backup av originalet), och testade om det funkade
…vilket det gjorde! (tack och lov! Var orolig för att jag kunde behöva boota från skiva, för att återställa backupen)

Nu är det bara decimalknappen, som vägrar bete sig, som är det enda kvarvarande problemet…
När jag använder det andra tangentbordet, där NumLock skiftar mellan öst- och västarabiska siffror, så ska ju även decimalknappen skifta mellan komma och arabiskt decimaltecken …men det skapar jämt komma. Med shift skapas dock det arabiskt decimaltecknet.
Alltså verkar det som att decimalknappen beter sig, som att Numlock alltid är av, i det upplägget.

Medan det i det svenska, ständigt ger punkt när det är på, och komma när det är av (så jag kan skifta mellan dem …men de är på fel plats)
…oavsett om jag byter plats på dem, i koden. Det blir fortfarande punkt när det är på, och komma när det är av.

Visa signatur

/A-lan

Permalänk
Medlem

Jag har ingen aning om hur eller varför, men nu har jag fått decimalknappen att bete sig.
Därmed är allt löst.
Här är slutgiltiga numpad-koden:

partial keypad_keys xkb_symbols "cunu" { include "level3(ralt_switch)" // include "cusnum(deci)" key.type[Group1] = "FOUR_LEVEL"; key <KPDV> { type= "TWO_LEVEL", [ KP_Divide, division ] }; // / ÷ key <KPMU> { [ KP_Multiply, U22C5, multiply ] }; // * ⋅ × key <KPSU> { [ KP_Subtract, U207B, U208B ] }; // - ⁻ ₋ key <KP7> { [ KP_7, sevensuperior, sevensubscript ] }; // 7 ⁷ ₇ key <KP8> { [ KP_8, eightsuperior, eightsubscript ] }; // 8 ⁸ ₈ key <KP9> { [ KP_9, ninesuperior, ninesubscript ] }; // 9 ⁹ ₉ key <KPAD> { [ KP_Add, U207A, U208A ] }; // + ⁺ ₊ key <KP4> { [ KP_4, foursuperior, foursubscript ] }; // 4 ⁴ ₄ key <KP5> { [ KP_5, fivesuperior, fivesubscript ] }; // 5 ⁵ ₅ key <KP6> { [ KP_6, sixsuperior, sixsubscript ] }; // 6 ⁶ ₆ key <KP1> { [ KP_1, onesuperior, onesubscript ] }; // 1 ¹ ₁ key <KP2> { [ KP_2, twosuperior, twosubscript ] }; // 2 ² ₂ key <KP3> { [ KP_3, threesuperior, threesubscript ] }; // 3 ³ ₃ key <KPEN> { type= "ONE_LEVEL", [ KP_Enter ] }; key <KPEQ> { type= "ONE_LEVEL", [ KP_Equal ] }; // what key is this? key <KP0> { [ KP_0, zerosuperior, zerosubscript ] }; // 0 ⁰ ₀ key <KPDL> { type[Group1]="KEYPAD", symbols[Group1]= [ period, comma ] }; // . , key <KPPT> { type[Group1]="KEYPAD", symbols[Group1]= [ comma, period ] }; // , . }; partial keypad_keys xkb_symbols "kurnu" { include "level3(ralt_switch)" key <KPDV> { type= "FOUR_LEVEL", [ KP_Divide, division ] }; // / ÷ key <KPMU> { type= "FOUR_LEVEL", [ KP_Multiply, U22C5, multiply ] }; // * ⋅ × key <KPSU> { type= "FOUR_LEVEL", [ KP_Subtract, U207B, U208B ] }; // - ⁻ ₋ key <KP7> { [ KP_7, Arabic_7 ] }; // 7 ⁷ ₇ key <KP8> { [ KP_8, Arabic_8 ] }; // 8 ⁸ ₈ key <KP9> { [ KP_9, Arabic_9 ] }; // 9 ⁹ ₉ key <KPAD> { type= "FOUR_LEVEL", [ KP_Add, U207A, U208A ] }; // + key <KP4> { [ KP_4, Arabic_4 ] }; // 4 ⁴ ₄ key <KP5> { [ KP_5, Arabic_5 ] }; // 5 ⁵ ₅ key <KP6> { [ KP_6, Arabic_6 ] }; // 6 ⁶ ₆ key <KPPT> { [ period, U066C ] }; // . ٬ key <KP1> { [ KP_1, Arabic_1 ] }; // 1 ¹ ₁ key <KP2> { [ KP_2, Arabic_2 ] }; // 2 ² ₂ key <KP3> { [ KP_3, Arabic_3 ] }; // 3 ³ ₃ key <KPEN> { [ KP_Enter ] }; key <KPEQ> { [ KP_Equal ] }; // what key is this? key <KP0> { type[Group1]="KEYPAD", symbols[Group1]= [ KP_0, Arabic_0 ] }; // 0 ⁰ ₀ key <KPDL> { type[Group1]="KEYPAD", symbols[Group1]= [ comma, U066B ] }; // , ٫ };

Dold text
Visa signatur

/A-lan

Permalänk
Medlem

När jag kom på, att noggrant kolla igenom alla olika knappkombination, för att bekräfta att allt funkar som det ska, så upptäckte jag, att bokstäverna som ligger under AltGr, inte påverkas av CapsLock, av nån anledning…
När jag gjort justeringar, och en miss gjort att tangentbordsupplägget inte funkar, och det faller tillbaka på standard-svenska-upplägget, så verkar det dock funka som det ska, där, men…
Har ingen aning, varför det beter sig fel…
Undrade ifall min extra-type, för NumLock kanske orsakade konflikt eller nåt, så jag la tillbaka shift-AltGr nivån, för att se till att den inte har samma antal nivåer som vanliga AltGr-knappar, samt bytte namn på den, så att namnet inte är i det minsta likt, men det hade ingen påverkan

När jag kollar mitt andra upplägg (kurdiskt), så beter sig J och K knapparna (som där inte använder J eller K, då det är icke-latinskt upplägg) beter sig som att de kör med fyrnivå, trots att bara två tecken definieras. Trycker jag ner AltGr (med eller utan shift), så händer inget. (medan A,L, och Z-knapparna,som är precis likadana, inte bryr sig om AltGr, och ger samma resultat oavsett om det är intryckt eller ej)

Svenska tangentbordet (tillagt i /usr/share/X11/xkb/symbols/se):

partial xkb_symbols "custom" { name[Group1]="Swedish (custom)"; key <TLDE> { [ section, onehalf, paragraph, paragraph ] }; // § ½ ¶ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] }; // 1 ! ¡ ¹ key <AE02> { [ 2, quotedbl, at, twosuperior ] }; // 2 " @ ² key <AE03> { [ 3, numbersign, sterling, threesuperior ] }; // 3 # £ ³ key <AE04> { [ 4, currency, dollar, cent ] }; // 4 ¤ $ ¢ key <AE05> { [ 5, percent, EuroSign, plusminus ] }; // 5 % € ± key <AE06> { [ 6, ampersand, yen, U2213 ] }; // 6 & ¥ ∓ key <AE07> { [ 7, slash, braceleft, division ] }; // 7 / { ÷ key <AE08> { [ 8, parenleft, bracketleft, guillemotleft ] }; // 8 ( [ « key <AE09> { [ 9, parenright, bracketright, guillemotright ] }; // 9 ) ] » key <AE10> { [ 0, equal, braceright, degree ] }; // 0 = } ° key <AE11> { [ plus, question, backslash, questiondown ] }; // + ? \ ¿ key <AE12> { [ dead_acute, dead_grave, dead_caron, dead_abovedot ] }; // D´ D` Dˇ D˙ key <AD01> { [ q, Q, leftarrow, leftarrow ] }; // q Q ← key <AD02> { [ w, W, rightarrow, rightarrow ] }; // w W → key <AD03> { [ e, E, EuroSign, EuroSign ] }; // e E € key <AD04> { [ r, R, registered, trademark ] }; // r R ® ™ key <AD05> { [ t, T, thorn, Thorn ] }; // t T þ Þ key <AD06> { [ y, Y, notequal, U0332 ] }; // y Y ≠ C_ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; // u U ü Ü key <AD08> { [ i, I, U2248, U0336 ] }; // i I ≈ C- key <AD09> { [ o, O, oe, OE ] }; // o O œ Œ key <AD10> { [ p, P, U2030, U2031 ] }; // p P ‰ ‱ key <AD11> { [ aring, Aring, dead_abovering, dead_abovering ] }; // å Å D˚ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_belowdot ] }; // D¨ D^ D~ D? key <AC01> { [ a, A, uparrow, uparrow ] }; // a A ↑ key <AC02> { type= "FOUR_LEVEL_ALPHABETIC", [ s, S, ssharp, U1E9E ] }; // s S ß ẞ key <AC03> { [ d, D, eth, Eth ] }; // d D ð Ð key <AC04> { [ f, F, U0278, U0278 ] }; // f F ɸ key <AC05> { [ g, G, gabovedot, Gabovedot ] }; // g G ġ Ġ key <AC06> { [ h, H, hstroke, Hstroke ] }; // h H ħ Ħ key <AC07> { type= "FOUR_LEVEL_ALPHABETIC", [ j, J, U0292, U01B7 ] }; // j J ʒ Ʒ key <AC08> { type= "FOUR_LEVEL_ALPHABETIC", [ k, K, U01B9, U01B8 ] }; // k K ƹ Ƹ key <AC09> { [ l, L, lstroke, Lstroke ] }; // l L ł Ł key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] }; // ö Ö ø Ø key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; // ä Ä æ Æ key <BKSL> { [ apostrophe, asterisk, dead_cedilla, U0361 ] }; // ' * D¸ C͡ key <LSGT> { [ leftcaret, rightcaret, bar, brokenbar ] }; // < > | ¦ key <AB01> { [ z, Z, downarrow, downarrow ] }; // z Z ↓ key <AB02> { [ x, X, multiply, multiply ] }; // x X × key <AB03> { [ c, C, copyright, copyright ] }; // c C © key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] }; // v V “ ‘ key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] }; // b B ” ’ key <AB06> { [ n, N, eng, ENG ] }; // n N ŋ Ŋ key <AB07> { [ m, M, U00B5, U00B5 ] }; // m M µ key <AB08> { [ comma, semicolon, notsign, notsign ] }; // , ; ¬ key <AB09> { [ period, colon, ellipsis, periodcentered ] }; // . : … · key <AB10> { [ minus, underbar, dead_macron, U2011 ] }; // - _ Dˉ ‑ key <AB11> { [ U2227, U2228, U22BB, U22BB ] }; // ∧ ∨ ⊻ include "cusnum(cunu)" include "lockcus(cuscaps)" include "lockcus(cusnum)" };

Dold text

Kurdiskt upplägg (tillagt i /usr/share/X11/xkb/symbols/iq):

partial xkb_symbols "ku_qwe" { name[Group1]= "Kurdish (Iraq, Custom-QWERTY)"; key <TLDE> { [ section, onehalf, paragraph, paragraph ] }; // § ½ ¶ key <AE01> { [ Arabic_1, exclam, exclamdown, onesuperior ] }; // ١ ! ¡ ¹ key <AE02> { [ Arabic_2, quotedbl, at, twosuperior ] }; // ٢ " @ ² key <AE03> { [ Arabic_3, numbersign, sterling, threesuperior ] }; // ٣ # £ ³ key <AE04> { [ Arabic_4, currency, dollar, cent ] }; // ٤ ¤ $ ¢ key <AE05> { [ Arabic_5, U066A, EuroSign, plusminus ] }; // ٥ ٪ € ± key <AE06> { [ Arabic_6, ampersand, yen, U2213 ] }; // ٦ & ¥ ∓ key <AE07> { [ Arabic_7, slash, braceleft, division ] }; // ٧ / { ÷ key <AE08> { [ Arabic_8, parenleft, bracketleft, guillemotleft ] }; // ٨ ( [ « key <AE09> { [ Arabic_9, parenright, bracketright, guillemotright ] }; // ٩ ) ] » key <AE10> { [ Arabic_0, equal, braceright, degree ] }; // ٠ = } ° key <AE11> { [ plus, Arabic_question_mark, backslash, backslash ] }; // + ؟ \ key <AE12> { [ U060D, percent, notsign, notsign ] }; // ؍ (date separator) % ¬ key <AD01> { [ Arabic_qaf ] }; // ق‎ key <AD02> { [ U06D5 ] }; // ە key <AD03> { [ U06CE ] }; // ێ‎ key <AD04> { [ Arabic_ra, U0695 ] }; // ر‎ ڕ key <AD05> { [ Arabic_teh, Arabic_theh, Arabic_tah, Arabic_tah ] }; // ت‎ ث‎ ط key <AD06> { [ U06CA, U06CA, notequal, U0332 ] }; // ۊ ≠ C_ key <AD07> { [ Arabic_waw, U06C7, U06C9, U06C9 ] }; //‎ و‎ ۇ‎ ۉ key <AD08> { [ Farsi_yeh, Farsi_yeh, U2248, U0336 ] }; // ی ≈ C- key <AD09> { [ U06C6 ] }; // ۆ key <AD10> { [ Arabic_peh, Arabic_peh, U0609, U060A ] }; // پ‎ ؉ ؊ key <AD11> { [ Arabic_hamzaonyeh, Arabic_hamza ] }; // ئـ‎ ء key <AD12> { [ U200E, U200F ] }; // LtR RtL key <AC01> { [ Arabic_alef, U06D5 ] }; // ‌‎ا‎ ە key <AC02> { [ Arabic_seen, Arabic_sheen, Arabic_sad, Arabic_sad ] }; // س‎ ش‎ ص key <AC03> { [ Arabic_dal, Arabic_thal, Arabic_dad, Arabic_dad ] }; // د‎ ذ‎ ض key <AC04> { [ Arabic_feh ] }; // ف key <AC05> { [ Arabic_gaf, Arabic_gaf, Arabic_ghain, Arabic_ghain ] }; // گ‎ غ key <AC06> { [ Arabic_heh_doachashmee, Arabic_heh_doachashmee, Arabic_hah, Arabic_hah ] }; // ھ‎ ح key <AC07> { [ Arabic_jeem, Arabic_jeh ] }; // ‎‎‎ج‎ ژ key <AC08> { [ Arabic_kaf, Arabic_keheh ] }; // ك‎ ک key <AC09> { [ Arabic_lam, U06B5 ] }; // ل‎ ڵ key <AC10> { [ Arabic_ain ] }; // ع key <AC11> { [ U200C, U200D ] }; // ZWNJ ZWJ key <BKSL> { [ apostrophe, asterisk, U066D, U066D ] }; // ' * ٭ key <LSGT> { [ leftcaret, rightcaret, bar, brokenbar ] }; // < > | ¦ key <AB01> { [ Arabic_zain, Arabic_zah ] }; // ز‎ ظ key <AB02> { [ Arabic_khah ] }; // خ key <AB03> { [ Arabic_tcheh ] }; // چ key <AB04> { [ U06A4, U06A4, leftdoublequotemark, leftsinglequotemark ] }; // ڤ “ ‘ key <AB05> { [ Arabic_beh, Arabic_beh, rightdoublequotemark, rightsinglequotemark ] }; // ب ” ’ key <AB06> { [ Arabic_noon ] }; // ن key <AB07> { [ Arabic_meem ] }; // م key <AB08> { [ Arabic_comma, Arabic_semicolon, U066B, U066C ] }; // ‎،‎ ‎؛‎ ٫ (decimal point) ‎٬ (thousands separator) key <AB09> { [ Arabic_fullstop, colon, period, periodcentered ] }; // ۔ : . · key <AB10> { [ minus, underbar, Arabic_tatweel, U2011 ] }; // - _ ـ ‑ // key <AB11> { [ U2227, U2228, U22BB, U22BB ] }; // ∧ ∨ ⊻ include "cusnum(kurnu)" include "lockcus(cuscaps)" include "lockcus(cusnum)" };

Dold text

CapsLock&NumPad:

partial alphanumeric_keys xkb_symbols "cuscaps" { key <CAPS> { type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1]= [ ISO_Level3_Shift, Caps_Lock ] }; key <RALT> { type[Group1]="ONE_LEVEL", symbols[Group1] = [ ISO_Level3_Shift ] }; include "level3(modifier_mapping)" }; partial keypad_keys xkb_symbols "cusnum" { key <NMLK> { type[Group1]="FLCON", symbols[Group1]= [ equal, U207C, U208C, U208C, Num_Lock ] }; // = ⁼ ₌ <NumLock> };

Med detta lagt in i /usr/share/X11/xkb/types/pc , för NumLock:

type "FLCON" { modifiers = Shift+LevelThree+Control; map[None] = Level1; map[Shift] = Level2; map[LevelThree] = Level3; map[Shift+LevelThree] = Level4; map[Control] = Level5; level_name[Level1] = "Base"; level_name[Level2] = "Shift"; level_name[Level3] = "Alt Base"; level_name[Level4] = "Shift Alt"; level_name[Level5] = "Control"; };

Dold text

Numpad (smått uppdaterad):

partial keypad_keys xkb_symbols "cunu" { include "lockcus(cuscaps)" // använder man det utan Caps-ändringen, så ska det vara "level3(ralt_switch)" istället. key.type[Group1] = "FOUR_LEVEL"; key <KPDV> { [ KP_Divide, division, U2044, U2044 ] }; // / ÷ ⁄ key <KPMU> { [ KP_Multiply, U22C5, multiply, multiply ] }; // * ⋅ × key <KPSU> { [ KP_Subtract, U207B, U208B, U0305 ] }; // - ⁻ ₋ C‾ key <KP7> { [ KP_7, sevensuperior, sevensubscript, sevensubscript ] }; // 7 ⁷ ₇ key <KP8> { [ KP_8, eightsuperior, eightsubscript, eightsubscript ] }; // 8 ⁸ ₈ key <KP9> { [ KP_9, ninesuperior, ninesubscript, ninesubscript ] }; // 9 ⁹ ₉ key <KPAD> { [ KP_Add, U207A, U208A, U208A ] }; // + ⁺ ₊ key <KP4> { [ KP_4, foursuperior, foursubscript, U221C ] }; // 4 ⁴ ₄ ∜ key <KP5> { [ KP_5, fivesuperior, fivesubscript, fivesubscript ] }; // 5 ⁵ ₅ key <KP6> { [ KP_6, sixsuperior, sixsubscript, sixsubscript ] }; // 6 ⁶ ₆ key <KP1> { [ KP_1, onesuperior, onesubscript, onesubscript ] }; // 1 ¹ ₁ key <KP2> { [ KP_2, twosuperior, twosubscript, U221A ] }; // 2 ² ₂ √ key <KP3> { [ KP_3, threesuperior, threesubscript, U221B ] }; // 3 ³ ₃ ∛ key <KPEN> { type= "ONE_LEVEL", [ KP_Enter ] }; key <KPEQ> { type= "ONE_LEVEL", [ KP_Equal ] }; // what key is this? key <KP0> { [ KP_0, zerosuperior, zerosubscript, zerosubscript ] }; // 0 ⁰ ₀ key <KPDL> { type[Group1]="KEYPAD", symbols[Group1]= [ period, comma ] }; // . , key <KPPT> { type[Group1]="KEYPAD", symbols[Group1]= [ comma, period ] }; // , . }; partial keypad_keys xkb_symbols "kurnu" { include "lockcus(cuscaps)" // använder man det utan Caps-ändringen, så ska det vara "level3(ralt_switch)" istället. key <KPDV> { type= "FOUR_LEVEL", [ KP_Divide, division, U2044, U2044 ] }; // / ÷ ⁄ key <KPMU> { type= "FOUR_LEVEL", [ KP_Multiply, U22C5, multiply, multiply ] }; // * ⋅ × key <KPSU> { type= "FOUR_LEVEL", [ KP_Subtract, U207B, U208B, U0305 ] }; // - ⁻ ₋ C‾ key <KP7> { [ KP_7, Arabic_7 ] }; // 7 ‎٧‎ key <KP8> { [ KP_8, Arabic_8 ] }; // 8 ‎٨‎ key <KP9> { [ KP_9, Arabic_9 ] }; // 9 ‎٩‎ key <KPAD> { type= "FOUR_LEVEL", [ KP_Add, U207A, U208A, U208A ] }; // + ⁺ ₊ key <KP4> { [ KP_4, Arabic_4 ] }; // 4 ‎٤‎ key <KP5> { [ KP_5, Arabic_5 ] }; // 5 ‎٥‎ key <KP6> { [ KP_6, Arabic_6 ] }; // 6 ‎٦‎ key <KP1> { [ KP_1, Arabic_1 ] }; // 1 ‎١‎ key <KP2> { [ KP_2, Arabic_2 ] }; // 2 ‎٢‎ key <KP3> { [ KP_3, Arabic_3 ] }; // 3 ‎٣‎ key <KPEN> { [ KP_Enter ] }; key <KPEQ> { [ KP_Equal ] }; // what key is this? key <KP0> { [ KP_0, Arabic_0 ] }; // 0 ‎٠‎ key <KPDL> { type[Group1]="FOUR_LEVEL_KEYPAD", symbols[Group1]= [ comma, U066B, period, U066C ] }; // , ‎٫‎ . ‎٬‎ key <KPPT> { type[Group1]="FOUR_LEVEL_KEYPAD", symbols[Group1]= [ period, U066C, comma, U066B ] }; // . ‎٬‎ , ‎٫‎ };

Dold text

Visuell representation av uppläggen (kan ge en bättre ide, om hur det är menat att funka [forumet är inte så strikt med att hålla sig till monospace, med "code"-tagen, ser jag, men det funkar ändå någorlunda]):

┌────┐ 1=normal keypress │2 4 │ 2=shift │ │ 3=AltGr │1 3 │ 4=AltGr+shift └────┘ Characters preceeded by D, indicate dead keys. Characters preceeded by C indicate combining characters. 'c' in mid-row, indicates that the characters above and below it, are also connected by CapsLock. (as in normal behaviour, for alphabetical keys) 'n' in mid-row, indicates that the characters above and below it, are also connected by NumLock. (as in normal behaviour, for NumPad keys. Position 1 being NumLock Off, and 2 being Numlock On) Things in parentheses, in (), are accessed through holding the Ctrl along with the key. (due to lack of space, I use 'NL' for NumLock, and removed the 'c', from 'CapsLock') You may note a few extra keys. These are the keys that exist on the standard 104/107 ABNT Brazilian Keyboards (quote from Wikipedia: "The Brazilian computer keyboard layout is specified in the ABNT NBR 10346 variant 2 (alphanumeric portion) and 10347 (numeric portion) standards.") I don't have such a keyboard, yet, but the layout should contain them, and set them so that they can be used, if available. If, for some reason, Windows doesn't allow use of a layout that has buttons beyond what you physically have, then I want to be able to make a "Brazilian-version", as well as one without the extra buttons. ┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌──────────┐ ┌────┐┌────┐┌────┐┌────┐ │½ ││! ¹ ││" ² ││# ³ ││¤ ¢ ││% ± ││& ∓ ││/ ÷ ││( « ││) » ││= ° ││? ¿ ││D`D˙││ │ │⁼ ││÷ ││⋅ ││⁻ C‾│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││Backspace │ │(NL)││ ││ ││ │ │§ ¶ ││1 ¡ ││2 @ ││3 £ ││4 $ ││5 € ││6 ¥ ││7 { ││8 [ ││9 ] ││0 } ││+ \ ││D´Dˇ││ │ │= ₌ ││/ ⁄ ││* × ││- ₋ │ └────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└──────────┘ └────┘└────┘└────┘└────┘ ┌───────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌───────┐ ┌────┐┌────┐┌────┐┌────┐ │ ││Q ││W ││E ││R ™ ││T Þ ││Y C_││U Ü ││I C-││O Œ ││P ‱ ││Å ││D^D.││ │ │⁷ ││⁸ ││⁹ ││⁺ │ │Tab ││c ││c ││c ││c ││c c ││c ││c c ││c ││c c ││c ││c ││ ││ E │ │ ││ ││ ││ │ │ ││q ← ││w → ││e € ││r ® ││t þ ││y ≠ ││u ü ││i ≈ ││o œ ││p ‰ ││å D°││D¨D~││ N │ │7 ₇ ││8 ₈ ││9 ₉ ││+ ₊ │ └───────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└─┐ T │ └────┘└────┘└────┘└────┘ ┌─────────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐│ E │ ┌────┐┌────┐┌────┐┌────┐ │ ││A ││S ẞ ││D Ð ││F ││G Ġ ││H Ħ ││J Ʒ ││K Ƹ ││L Ł ││Ö Ø ││Ä Æ ││* C͡││ R │ │⁴ ∜ ││⁵ ││⁶ ││. │ │AltGr ││c ││c c ││c c ││c ││c c ││c c ││c c ││c c ││c c ││c c ││c c ││ ││ │ │ ││ ││ ││n │ │(CapsLok)││a ↑ ││s ß ││d ð ││f ɸ ││g ġ ││h ħ ││j ʒ ││k ƹ ││l ł ││ö ø ││ä æ ││' D¸││ │ │4 ₄ ││5 ₅ ││6 ₆ ││, │ └─────────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└─────┘ └────┘└────┘└────┘└────┘ ┌──────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────────┐ ┌────┐┌────┐┌────┐┌────┐ │ ││> ¦ ││Z ││X ││C ││V ‘ ││B ’ ││N Ŋ ││M ││; ││: · ││_ ‑ ││∨ ││ │ │¹ ││² √ ││³ ∛ ││ │ │Shift ││ ││c ││c ││c ││c ││c ││c c ││c ││ ││ ││ ││ ││Shift │ │ ││ ││ ││ E │ │ ││< | ││z ↓ ││x × ││c © ││v “ ││b ” ││n ŋ ││m µ ││, ¬ ││. … ││- D¯││∧ ⊻ ││ │ │1 ₁ ││2 ₂ ││3 ₃ ││ N │ └──────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────────┘ └────┘└────┘└────┘│ T │ ┌───────┐┌───────┐┌───────┐┌─────────────────────────┐┌───────┐┌───────┐┌───────┐┌───────┐ ┌──────────┐┌────┐│ E │ │ ││ ││ ││ ││ ││ ││ ││ │ │⁰ ││, ││ R │ │Control││Win ││Alt ││ ││AltGr ││Win ││Menu ││Control│ │ ││n ││ │ │ ││ ││ ││Space ││ ││ ││ ││ │ │0 ₀ ││. ││ │ └───────┘└───────┘└───────┘└─────────────────────────┘└───────┘└───────┘└───────┘└───────┘ └──────────┘└────┘└────┘ Other keyboard layout (note: the right-to-left characters are surrounded by [invisible] LtR-markers, so they don't ruin the visual look) LtR = Left-to-right mark (U+200E) RtL = Right-to-left mark (U+200F) ZWNJ = Zero-width non-joiner (U+200C) ZWJ = Zero-width joiner (U+200D) ┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌──────────┐ ┌────┐┌────┐┌────┐┌────┐ │½ ││! ¹ ││" ² ││# ³ ││¤ ¢ ││‎٪‎ ± ││& ∓ ││/ ÷ ││( « ││) » ││= ° ││‎؟‎ ││‎%‎ ││ │ │⁼ ││÷ ││⋅ ││⁻ C‾│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││Backspace │ │(NL)││ ││ ││ │ │§ ¶ ││‎١‎ ¡ ││‎٢‎ @ ││‎٣‎ £ ││‎٤‎ $ ││‎٥‎ € ││‎٦‎ ¥ ││‎٧‎ { ││‎٨‎ [ ││‎٩‎ ] ││‎٠‎ } ││+ \ ││‎؍‎ ││ │ │= ₌ ││/ ⁄ ││* × ││- ₋ │ └────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└──────────┘ └────┘└────┘└────┘└────┘ ┌───────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌───────┐ ┌────┐┌────┐┌────┐┌────┐ │ ││ ││ ││ ││‎ڕ‎‎ ││‎ث‎‎ ││ C_││‎ۇ‎ ││ C-││ ││ ‎؊‎ ││‎ء‎ ││RtL ││ │ │‎٧‎ ││‎٨‎ ││‎٩‎ ││⁺ │ │Tab ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ E │ │n ││n ││n ││ │ │ ││‎ق‎ ││‎ە‎‎ ││‎ێ‎‎ ││‎ر‎‎ ││‎ت‎‎ ‎ط‎‎ ││‎ۊ‎‎ ≠ ││‎و‎ ‎ۉ‎ ││‎ی‎ ≈ ││‎ۆ‎ ││‎پ‎ ‎؉ ││‎ئ‎ ││LtR ││ N │ │7 ││8 ││9 ││+ ₊ │ └───────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└─┐ T │ └────┘└────┘└────┘└────┘ ┌─────────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐│ E │ ┌────┐┌────┐┌────┐┌────┐ │ ││‎ە‎ ││‎ش‎ ││‎ذ‎ ││ ││ ││ ││‎ژ‎ ││‎ک‎ ││‎ڵ‎ ││ ││ZWJ ││* ││ R │ │‎٤‎ ││‎٥‎ ││‎٦‎ ││, ‎٠‎ │ │AltGr ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │n ││n ││n ││n n │ │(CapsLok)││‎ا‎ ││‎س‎ ‎ص‎ ││‎د‎ ‎ض‎ ││‎ف‎ ││‎گ‎ ‎غ‎ ││‎ھ‎ ‎ح‎ ││‎ج‎ ││‎ك‎ ││‎ل‎ ││‎ع‎ ││ZWNJ││' ‎٭‎ ││ │ │4 ││5 ││6 ││. ‎٬‎ │ └─────────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└─────┘ └────┘└────┘└────┘└────┘ ┌──────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────────┐ ┌────┐┌────┐┌────┐┌────┐ │ ││> ¦ ││‎ظ‎ ││ ││ ││ ‘ ││ ’ ││ ││ ││‎؛‎ ‎٬‎ ││: · ││_ ‑ ││ ││ │ │‎١‎ ││‎٢‎ ││‎٣‎ ││ │ │Shift ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││Shift │ │n ││n ││n ││ E │ │ ││< | ││‎ز‎ ││‎خ‎ ││‎چ‎ ││‎ڤ‎ “ ││‎ب‎ ” ││‎‎ن‎ ││‎م‎ ││‎،‎ ‎٫‎ ││‎۔‎ . ││- ‎ـ‎ ││ ││ │ │1 ││2 ││3 ││ N │ └──────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────────┘ └────┘└────┘└────┘│ T │ ┌───────┐┌───────┐┌───────┐┌─────────────────────────┐┌───────┐┌───────┐┌───────┐┌───────┐ ┌──────────┐┌────┐│ E │ │ ││ ││ ││ ││ ││ ││ ││ │ │‎٠‎ ││. ‎٬‎ ││ R │ │Control││Win ││Alt ││ ││AltGr ││Win ││Menu ││Control│ │n ││n n ││ │ │ ││ ││ ││Space ││ ││ ││ ││ │ │0 ││, ‎٠‎ ││ │ └───────┘└───────┘└───────┘└─────────────────────────┘└───────┘└───────┘└───────┘└───────┘ └──────────┘└────┘└────┘

Dold text
Visa signatur

/A-lan

Permalänk
Medlem

Hm… Jag har lyckats isolera var problemen orsakas, i det svenska upplägget:
Caps Lock-ändringen, orsakar problemet med att AltGr-varianterna ignorerar CapsLock-läge.
Hur eller varför, det vore fallet, är för mig ett mysterium.

…samt så upptäckte jag, att min Num Lock-ändring, gjort så att NumLock (oavsett shift och AltGr) stänger av NumLock, när NumLock är på (plus, så som den ska, producerar =, ⁼, eller ₌, beroende på om jag håller in shift och/eller AltGr)
…men inte när det är av. (Ctrl-NumLock, ändrar alltid NumLock-läge. Som det är menat att göra)
CapsLock-ändringen har inget sådant problem.
Även när jag ändrar så att NumLock är PC_CONTROL_LEVEL2 (och då inte kan skapa ⁼ och ₌), och då NumLock-ändringen är precis som CapsLock-ändringen, så kvarstår problemet.
Är inte helt säker på, ifall NumLock-problemet existerade, när jag postade här innan, eller om det kommit till senare, efter mina senare ändringar. Känns som att jag nog borde ha testat NumLock rätt väl, och borde ha upptäckt det problemet innan, men…
Vad skulle möjligtvis ha ändrat på beteendet?

Visa signatur

/A-lan