Ännu en fråga om tangentbordslayout

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Har ju för några år sedan gjort min egen tangentbordslayout och den fungerar fint i de flesta fall. Har gjort den som en variant av den svenska layouten, så jag väljer den efter land genom att först välja ”Sverige” och sedan ”Sverige Johnny Rosenberg”, eller så kan jag välja den på samma sätt efter språk.

För att åstadkomma detta har jag fipplat i följande filer:
  • /usr/share/X11/xkb/symbols/se
  • /usr/share/X11/xkb/rules/evdev.lst
  • /usr/share/X11/xkb/rules/evdev.xml
Själva kopplingen mellan tangenter och symboler ligger ju som bekant i /usr/share/X11/xkb/symbols/se och där beskrivs alla varianterna av den svenska layouten.

Min fru frågade mig idag om jag visste hur man enkelt kunde skriva ut en bock och jag föreslog då U+2714 som ser ut så här: ”✔”. Men då hon bara behöver detta tecken kändes det lite onödigt att göra en hel layout åt henne för bara detta tecken, så jag föreslog att vi kunde lägga dit tecknet på hennes vanliga layout, alltså den svenska standardlayouten. Exempleivs änvänder hon, liksom de flesta, aldrig ”¨” och hon har inget behov av att slänga sig med tecken som ïÿü och så vidare. Ü och ü kan man ju dessutom enkelt få fram med compose-tangenten om det skulle knipa (Compose " u).

Så nu börjar vi närma oss min fråga här, någon kvar som fortfarande läser?

Så här ser början av /usr/share/X11/xkb/symbols/se ut:

Kod: Markera allt

partial default alphanumeric_keys
xkb_symbols "basic" {
    include "latin(type2)"
    include "se(se)"
};

partial alphanumeric_keys
xkb_symbols "se" {

    name[Group1]="Sweden";

    key <AE05>	{ [         5,    percent,     EuroSign,         cent ]	};
    key <AE11>	{ [      plus,   question,    backslash, questiondown ]	};
    key <AE12>	{ [dead_acute, dead_grave,    plusminus,      notsign ]	};


    key <AC10>	{ [odiaeresis, Odiaeresis,       oslash,     Ooblique ]	};
    key <AC11>	{ [adiaeresis, Adiaeresis,           ae,           AE ]	};
    key <TLDE>	{ [   section,    onehalf,    paragraph, threequarters]	};

    key <BKSL>	{ [apostrophe,   asterisk,        acute,     multiply ]	};

    key <SPCE>	{ [     space,      space,        space, nobreakspace ]	};

    include "kpdl(comma)"

    include "level3(ralt_switch)"
};
Vad jag vill göra är att lägga till följande rad på lämpligt ställe:

Kod: Markera allt

key <AD12> {[U2714,dead_circumflex,dead_macron,dead_caron]};
Provade så här:

Kod: Markera allt

partial default alphanumeric_keys
xkb_symbols "basic" {
    include "latin(type2)"
    include "se(se)"

    key <AD12> {[U2714,dead_circumflex,dead_macron,dead_caron]};
};
Resultatet blev dock att tecknet kom med på alla varianter utom Sverige → Sverige samt de som hade en egen definition av key <AD12>.

Så någon annanstans finns tydligen en definition av den svenska standardlayouten, men var? Förmodar att ”basic”, ”latin(type2)” och ”se(se)” finns definierade någonstans, men jag hittar det inte. Någon som har djupare kunskaper om detta ämne?

Problemet löstes tillfälligt genom att jag la till tecknet på ”Sverige → Eliminera stumma tangenter”, så nu får hon växla mellan den och standardlayouten efter behov, men det hade ju varit smidigare att ha tecknet i den vanliga standardlayouten.

Någon kanske säger att ”varför inte använda ”Ctrl+Shift+u 2714 ↵” varje gång tecknet behövs? Ja, det är en bra idé, men just där hon ska skriva tecknet fungerar inte Ctrl+Shift+u, nämligen i världens sämsta forum (heter ifokus om någon undrar).
Fast egentligen är det så här: Vi använder webbläsaren Opera, och där funkar inte Ctrl+Shift+u. Istället använder Opera en annan variant, nämligen <kod> Ctrl+Shift+x, exempelvis 2714 Ctrl+Shift+x för ”✔”. Men detta, i sin tur, funkar inte i ifokus… Men som synes funkar det här i alla fall…

Nåja, det var mer information än vad som behövdes.

Och visst ja, vi använder båda Ubuntu 10.04 och inga särskilda konstigheter vad jag kan komma på. Använder de vanliga förråden och inga skumma saker där heller.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ännu en fråga om tangentbordslayout

Inlägg av Konservburk »

Johnny Rosenberg skrev:Så någon annanstans finns tydligen en definition av den svenska standardlayouten, men var? Förmodar att ”basic”, ”latin(type2)” och ”se(se)” finns definierade någonstans, men jag hittar det inte. Någon som har djupare kunskaper om detta ämne?
Jag kan hålla med om att det kan verka lite kryptiskt innan man vet hur det ligger till. Om vi tar raden include "latin(type2)" som exempel. Var finns då källan? Vad är det egentligen som inkluderas? Så här ligger det till:

Det som står före parantesen anger vilken fil det gäller och det som står inom parantes anger mer specifikt var i filen. Exemplet latin(type2) hänvisar till stycket som börjar med xkb_symbols "type2" och som finns i filen latin som även den ligger i katalogen symbols. På samma sätt hänvisar se(se) till stycket xkb_symbols "se" i filen se, vilket är precis det stycke som du har klistrat in här ovanför.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:Så någon annanstans finns tydligen en definition av den svenska standardlayouten, men var? Förmodar att ”basic”, ”latin(type2)” och ”se(se)” finns definierade någonstans, men jag hittar det inte. Någon som har djupare kunskaper om detta ämne?
Jag kan hålla med om att det kan verka lite kryptiskt innan man vet hur det ligger till. Om vi tar raden include "latin(type2)" som exempel. Var finns då källan? Vad är det egentligen som inkluderas? Så här ligger det till:

Det som står före parantesen anger vilken fil det gäller och det som står inom parantes anger mer specifikt var i filen. Exemplet latin(type2) hänvisar till stycket som börjar med xkb_symbols "type2" och som finns i filen latin som även den ligger i katalogen symbols. På samma sätt hänvisar se(se) till stycket xkb_symbols "se" i filen se, vilket är precis det stycke som du har klistrat in här ovanför.
Tack så mycket, det känns ju rimligt, men borde inte det då innebära att om jag lägger in min <AD12>-rad enligt nedanstående, så kommer jag att få mitt tecken (”✔”) i den svenska standardlayouten? Men det får jag inte…

Kod: Markera allt

partial default alphanumeric_keys
xkb_symbols "basic" {
    include "latin(type2)"
    include "se(se)"
};

partial alphanumeric_keys
xkb_symbols "se" {

    name[Group1]="Sweden";

    key <AE05>   { [         5,    percent,     EuroSign,         cent ]   };
    key <AE11>   { [      plus,   question,    backslash, questiondown ]   };
    key <AE12>   { [dead_acute, dead_grave,    plusminus,      notsign ]   };

    key <AD12>   { [     U2714,dead_circumflex,dead_macron, dead_caron ]   };

    key <AC10>   { [odiaeresis, Odiaeresis,       oslash,     Ooblique ]   };
    key <AC11>   { [adiaeresis, Adiaeresis,           ae,           AE ]   };
    key <TLDE>   { [   section,    onehalf,    paragraph, threequarters]   };

    key <BKSL>   { [apostrophe,   asterisk,        acute,     multiply ]   };

    key <SPCE>   { [     space,      space,        space, nobreakspace ]   };

    include "kpdl(comma)"

    include "level3(ralt_switch)"
};
Så här ser latin(type2) ut förresten:

Kod: Markera allt

partial
xkb_symbols "type2" {

    include "latin"

    key <AE01>	{ [         1,     exclam,   exclamdown,  onesuperior ]	};
    key <AE02>	{ [         2,   quotedbl,           at,  twosuperior ]	};
    key <AE03>	{ [         3, numbersign,     sterling, threesuperior]	};
    key <AE04>	{ [         4,   currency,       dollar,   onequarter ]	};
    key <AE05>	{ [         5,    percent,      onehalf,         cent ]	};
    key <AE06>	{ [         6,  ampersand,          yen,  fiveeighths ]	};
    key <AE07>	{ [         7,      slash,    braceleft,     division ]	};
    key <AE08>	{ [         8,  parenleft,  bracketleft, guillemotleft]	};
    key <AE09>	{ [         9, parenright, bracketright, guillemotright] };
    key <AE10>	{ [         0,      equal,   braceright,       degree ]	};

    key <AD03>	{ [         e,          E,     EuroSign,         cent ]	};
    key <AD04>	{ [         r,          R,   registered,   registered ]	};
    key <AD05>	{ [         t,          T,        thorn,        THORN ]	};
    key <AD09>	{ [         o,          O,           oe,           OE ]	};
    key <AD11>	{ [     aring,  Aring, dead_diaeresis, dead_abovering ]	};
    key <AD12>	{ [dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] };

    key <AC01>	{ [         a,          A,  ordfeminine,    masculine ]	};

    key <AB03>	{ [         c,          C,    copyright,    copyright ]	};
    key <AB08>	{ [     comma,  semicolon, dead_cedilla,  dead_ogonek ]	};
    key <AB09>	{ [    period,   colon, periodcentered, dead_abovedot ]	};
    key <AB10>	{ [     minus, underscore, dead_belowdot, dead_abovedot ] };
};
Det verkar som att se(se) får ge vika för latin(type2) i detta fallet.
Nej, nu blev jag osäker på vad jag verkligen testade förra gången. Får testa igen. Återkommer.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ännu en fråga om tangentbordslayout

Inlägg av Konservburk »

Johnny Rosenberg skrev:Tack så mycket, det känns ju rimligt, men borde inte det då innebära att om jag lägger in min <AD12>-rad enligt nedanstående, så kommer jag att få mitt tecken (”✔”) i den svenska standardlayouten?
Det där bör fungera. Du kan ju försäkerhets skull ladda om den svenska layouten för att utesluta att inget gammalt ligger kvar och stör:

Kod: Markera allt

setxkbmap se
Johnny Rosenberg skrev: Så här ser latin(type2) ut förresten:

Kod: Markera allt

partial
xkb_symbols "type2" {

    include "latin"
Det där missade jag att förklara. Jag minns inte exakt vad den gör när något inkluderas utan parantes. Antingen går den direkt på stycket "basic", eller så tar den helt enkelt första stycket i filen. Men eftersom "basic" brukar vara just första stycket så blir resultatet det samma.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Gjorde så nu, alltså följande:

Kod: Markera allt

partial default alphanumeric_keys
xkb_symbols "basic" {
    include "latin(type2)"
    include "se(se)"
};

partial alphanumeric_keys
xkb_symbols "se" {

    name[Group1]="Sweden";

    key <AE05>   { [         5,    percent,     EuroSign,         cent ]   };
    key <AE11>   { [      plus,   question,    backslash, questiondown ]   };
    key <AE12>   { [dead_acute, dead_grave,    plusminus,      notsign ]   };

### Egna tillägg ###############################################################
    key <AD12>   { [     U2714,dead_circumflex,dead_macron, dead_caron ]   };
### Slut på egna tillägg #######################################################

    key <AC10>   { [odiaeresis, Odiaeresis,       oslash,     Ooblique ]   };
    key <AC11>   { [adiaeresis, Adiaeresis,           ae,           AE ]   };
    key <TLDE>   { [   section,    onehalf,    paragraph, threequarters]   };

    key <BKSL>   { [apostrophe,   asterisk,        acute,     multiply ]   };

    key <SPCE>   { [     space,      space,        space, nobreakspace ]   };

    include "kpdl(comma)"

    include "level3(ralt_switch)"
};
Jag får nu tecknet ”✔” på tangenten <AD12> för följande varianter:
  • Sverige Eliminera stumma tangenter
  • Sverige Rysk fonetisk
  • Sverige Rysk fonetisk, eliminera stumma tangenter
  • Sverige Svdvorak
Övriga, inklusive den som bara heter ”Sverige” (den som är vald från början om man valt Sverige som land vid installation av Ubuntu) har tecknet ”¨” på <AD12>. Jag måste förbise något uppenbart här, men vad?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:Tack så mycket, det känns ju rimligt, men borde inte det då innebära att om jag lägger in min <AD12>-rad enligt nedanstående, så kommer jag att få mitt tecken (”✔”) i den svenska standardlayouten?
Det där bör fungera. Du kan ju försäkerhets skull ladda om den svenska layouten för att utesluta att inget gammalt ligger kvar och stör:

Kod: Markera allt

setxkbmap se
Johnny Rosenberg skrev: Så här ser latin(type2) ut förresten:

Kod: Markera allt

partial
xkb_symbols "type2" {

    include "latin"
Det där missade jag att förklara. Jag minns inte exakt vad den gör när något inkluderas utan parantes. Antingen går den direkt på stycket "basic", eller så tar den helt enkelt första stycket i filen. Men eftersom "basic" brukar vara just första stycket så blir resultatet det samma.
Såg inte förut att du hunnit emellan med ett inlägg. Testade med setxkbmap se men det gjorde ingen skillnad.

Testa gärna om du kan få det att fungera. Man ser ju direkt i den uppritade layouten om tecknet hamnat på plats eller inte och det vill sig ju inte alls när det gäller standardlayouten, av någon anledning. Kanske en bugg…?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ännu en fråga om tangentbordslayout

Inlägg av Konservburk »

Jag testade din ändrig själv nu och jag behövde av någon anledning ta bort den svenska layouten från layoutlistan för att sedan lägga till den igen innan ändringarna gick igenom ordentligt överallt.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Konservburk skrev:Jag testade din ändrig själv nu och jag behövde av någon anledning ta bort den svenska layouten från layoutlistan för att sedan lägga till den igen innan ändringarna gick igenom ordentligt överallt.
Försökte det också nu, men det hjälpte inte heller. Tog bort alla layouter jag hade och ersatte med USA Internationell med AltGr. Stängde fönstret, öppnade igen och valde Sverige Sverige, men det var fortfarande som förut.

Men det funkade ju för dig, så jag måste ju göra något fel…
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ännu en fråga om tangentbordslayout

Inlägg av Konservburk »

Min installation hade inte svenskt tangentbord från början. Jag tycker inte att det borde göra någon skillnad, men man vet aldrig. Om jag inte glömmer så ska jag testa att välja allting svenskt från början när jag installerar maverick om en månad och se hur det fungerar eller inte fungerar då.

Om du vill veta vilka regler som läses in så kan du köra detta:

Kod: Markera allt

setxkbmap se -print
Så här säkerställer du att inget tidigare skräp kommer med:

Kod: Markera allt

setxkbmap se -option "" -variant ""
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Konservburk skrev:Min installation hade inte svenskt tangentbord från början. Jag tycker inte att det borde göra någon skillnad, men man vet aldrig. Om jag inte glömmer så ska jag testa att välja allting svenskt från början när jag installerar maverick om en månad och se hur det fungerar eller inte fungerar då.

Om du vill veta vilka regler som läses in så kan du köra detta:

Kod: Markera allt

[tt]setxkbmap se -print[/tt]
Så här säkerställer du att inget tidigare skräp kommer med:

Kod: Markera allt

setxkbmap se -option "" -variant ""
Körde setxkbmap se -option "" -variant "" och därefter setxkbmap se -print samt gick därefter in och tittade på layouterna igen – och nu funkade det plötsligt…

Om det berodde på dina setxkbmap-rader vetta sjutton, men det kanske det gjorde. Känns ändå som att något inte riktigt fungerar som det är tänkt, men jag fick ju till det till sist, tack vare din hjälp.

Tackar tackar!
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ännu en fråga om tangentbordslayout

Inlägg av Konservburk »

Johnny Rosenberg skrev:Körde setxkbmap se -option "" -variant "" och därefter setxkbmap se -print samt gick därefter in och tittade på layouterna igen – och nu funkade det plötsligt…
Utmärkt! :)
Johnny Rosenberg skrev:Om det berodde på dina setxkbmap-rader vetta sjutton, men det kanske det gjorde. Känns ändå som att något inte riktigt fungerar som det är tänkt, men jag fick ju till det till sist, tack vare din hjälp.
Jag misstänker att det låg kvar och spökade någon gammal option- eller variant-inställning som du nu rensade bort. Vi hade fått reda på exakt vad det var för något om du hade kört print-kommandot både före och efter återställningen och jämfört restultatet. Det spelar ju iofs mindre roll nu när det väl fungerar.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Konservburk skrev:
Johnny Rosenberg skrev:Körde setxkbmap se -option "" -variant "" och därefter setxkbmap se -print samt gick därefter in och tittade på layouterna igen – och nu funkade det plötsligt…
Utmärkt! :)
Johnny Rosenberg skrev:Om det berodde på dina setxkbmap-rader vetta sjutton, men det kanske det gjorde. Känns ändå som att något inte riktigt fungerar som det är tänkt, men jag fick ju till det till sist, tack vare din hjälp.
Jag misstänker att det låg kvar och spökade någon gammal option- eller variant-inställning som du nu rensade bort. Vi hade fått reda på exakt vad det var för något om du hade kört print-kommandot både före och efter återställningen och jämfört resultatet. Det spelar ju iofs mindre roll nu när det väl fungerar.
Det jag gjorde ovan gjorde jag på min egen dator och jag har nu gjort samma sak på min frus dator; det var ju hon som ville ha tecknet ifråga. Det lustiga där var att efter setxkbmap-kommandona var det fortfarande fel layout som ritades upp, men det blev ändå rätt tecken på rätt tangent…
Nåja, det viktigaste var ju att det fungerade, men man har ju inte optimal kontroll om layouten som visas inte alltid är korrekt. Kanske läge för en buggrapport, egentligen… Inget jag känner för att göra just nu i alla fall.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Ännu en fråga om tangentbordslayout

Inlägg av Konservburk »

Johnny Rosenberg skrev:Det jag gjorde ovan gjorde jag på min egen dator och jag har nu gjort samma sak på min frus dator; det var ju hon som ville ha tecknet ifråga. Det lustiga där var att efter setxkbmap-kommandona var det fortfarande fel layout som ritades upp, men det blev ändå rätt tecken på rätt tangent…
Det var den biten som löste sig när jag plockade bort och la till den svenska layouten från listan.
Johnny Rosenberg skrev:Nåja, det viktigaste var ju att det fungerade, men man har ju inte optimal kontroll om layouten som visas inte alltid är korrekt. Kanske läge för en buggrapport, egentligen… Inget jag känner för att göra just nu i alla fall.
Jag vet inte, men det känns som att uppritandet av en layout skulle kunna vara en relativt tung operation och att resultatet därför ligger cache:at någonstans, och att cache:en inte alltid uppdateras ordentligt.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ännu en fråga om tangentbordslayout

Inlägg av Johnny Rosenberg »

Man kanske kunde föreslå en ”feature request” istället, så att man kan skriva tecken direkt i layouten och på så sätt göra sin egen layout, så att man slipper fippla i systemfiler själv.

Eller att man på annat sätt erbjuder möjligheten att skapa egna eller ändra i befintliga layouter. Känns spontant som att det är bättre att skapa nya layouter än att ändra i gamla.

Själv har jag gjort en variant på detta i OpenOffice.org Calc, där man matar in sina tecken i celler och sedan får ett makro skapa lämpliga filer av detta, men mina makron är inte riktigt färdiga och man kan inte göra ”allt”, utan det är mer anpassat för just mina behov.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Skriv svar

Återgå till "Terminalforum"