11. prosince 2010

Jak přidat vlastní rozložení klávesnice v Linuxu

Jsem zvyklý na svoje rozložení klávesnice - tedy svoje... standardní českou QWERTY z Windows. Bohužel toto rozložení není v Linuxu k dispozici. Vytvořil jsem tedy svoji úpravu linuxového CZ QWERTY rozložení, které odpovídá tomu, na které jsem zvyklý.
Protože občas zkouším různé distribuce, nebo naopak občas potřebuji nějaký Linux nainstalovat abych mohl dělat to, co ve Windows nemůžu, občas potřebuji znovu tohle rozložení nahrát do systému. Proto jsem si sepsal tenhle postup krok za krokem, abych to příště zas nemusel složitě vymýšlet a googlit.
Postup sedí na Debian-based distribuce, v ostatních se to může lišit, ale ty nepoužívám...
  1. Stáhnout soubor s upraveným rozložením
  2. Přepsat původní soubor cz v /usr/share/X11/xkb/symbols/
    # cd /usr/share/X11/xkb/symbols/
    # wget http://pub.gcm.cz/cz
    # mv cz cz.old
    # mv cz.1 cz
  3. Nyní je třeba systému říct, že máme nějaké další rozložení, aby bylo vidět v klikátku pro výběr rozložení. Tyto informace se nachází v souborech /usr/share/X11/xkb/rules/xorg.xml a /usr/share/X11/xkb/rules/xorg.lst.
  4. V souboru xorg.xml najdeme oblast týkající se českého rozložení (vyhledat v souboru Czechia) a do <variantlist> přidat nový tag:
    <variant>
      <configitem>
        <name>win</name>
        <description>qwerty (Windows version)</description>
      </configitem>
    </variant>
  5. V souboru xorg.lst najít opět oblast týkající se českých variant klávesnice (např. řádek začínající bksl) a někam tam přidat řádek
    win             cz: qwerty (Windows version)
  6. Krok 4 resp. 5 ještě můžeme zopakovat pro soubor evdev.xml resp. evdev.lst. Netuším, proč to samé musí být ve dvou souborech, ale pravděpodobně to bude mít nějaký historický význam.
  7. Nyní by mělo stačit restartovat X.org, a nový layout klávesnice by měl být přístupný v nastavení systému.
Ještě přikládám patch, který opatchuje všechny soubory správně:

diff -Naur xkb/rules/evdev.lst /usr/share/X11/xkb/rules/evdev.lst
--- xkb/rules/evdev.lst 2010-04-15 14:12:21.000000000 +0200
+++ /usr/share/X11/xkb/rules/evdev.lst 2010-12-11 21:36:40.719018001 +0100
@@ -367,6 +367,7 @@
   qwerty_bksl     cz: qwerty, extended Backslash
   ucw             cz: UCW layout (accented letters only)
   dvorak-ucw      cz: US Dvorak with CZ UCW support
+  win             cz: qwerty (Windows version)
   nodeadkeys      dk: Eliminate dead keys
   mac             dk: Macintosh
   mac_nodeadkeys  dk: Macintosh, eliminate dead keys
diff -Naur xkb/rules/evdev.xml /usr/share/X11/xkb/rules/evdev.xml
--- xkb/rules/evdev.xml 2010-04-15 14:12:21.000000000 +0200
+++ /usr/share/X11/xkb/rules/evdev.xml 2010-12-11 21:36:08.329018001 +0100
@@ -2101,6 +2101,12 @@
      <description>US Dvorak with CZ UCW support</description>
   </configItem>
  </variant>
+ <variant>
+   <configItem>
+     <name>win</name>
+     <description>qwerty (Windows version)</description>
+   </configItem>
+ </variant>
       </variantList>
     </layout>
     <layout>
diff -Naur xkb/rules/xfree86.lst /usr/share/X11/xkb/rules/xfree86.lst
--- xkb/rules/xfree86.lst 2010-04-15 14:12:21.000000000 +0200
+++ /usr/share/X11/xkb/rules/xfree86.lst 2010-12-11 21:17:24.769018003 +0100
@@ -367,6 +367,7 @@
   qwerty_bksl     cz: qwerty, extended Backslash
   ucw             cz: UCW layout (accented letters only)
   dvorak-ucw      cz: US Dvorak with CZ UCW support
+  win             cz: qwerty (Windows version)
   nodeadkeys      dk: Eliminate dead keys
   mac             dk: Macintosh
   mac_nodeadkeys  dk: Macintosh, eliminate dead keys
diff -Naur xkb/rules/xfree86.xml /usr/share/X11/xkb/rules/xfree86.xml
--- xkb/rules/xfree86.xml 2010-04-15 14:12:21.000000000 +0200
+++ /usr/share/X11/xkb/rules/xfree86.xml 2010-12-11 21:36:21.859018000 +0100
@@ -2101,6 +2101,12 @@
      <description>US Dvorak with CZ UCW support</description>
   </configItem>
  </variant>
+ <variant>
+   <configItem>
+     <name>win</name>
+     <description>qwerty (Windows version)</description>
+   </configItem>
+ </variant>
       </variantList>
     </layout>
     <layout>
diff -Naur xkb/rules/xorg.lst /usr/share/X11/xkb/rules/xorg.lst
--- xkb/rules/xorg.lst 2010-04-15 14:12:21.000000000 +0200
+++ /usr/share/X11/xkb/rules/xorg.lst 2010-12-11 21:17:24.769018003 +0100
@@ -367,6 +367,7 @@
   qwerty_bksl     cz: qwerty, extended Backslash
   ucw             cz: UCW layout (accented letters only)
   dvorak-ucw      cz: US Dvorak with CZ UCW support
+  win             cz: qwerty (Windows version)
   nodeadkeys      dk: Eliminate dead keys
   mac             dk: Macintosh
   mac_nodeadkeys  dk: Macintosh, eliminate dead keys
diff -Naur xkb/rules/xorg.xml /usr/share/X11/xkb/rules/xorg.xml
--- xkb/rules/xorg.xml 2010-04-15 14:12:21.000000000 +0200
+++ /usr/share/X11/xkb/rules/xorg.xml 2010-12-11 21:36:21.859018000 +0100
@@ -2101,6 +2101,12 @@
      <description>US Dvorak with CZ UCW support</description>
   </configItem>
  </variant>
+ <variant>
+   <configItem>
+     <name>win</name>
+     <description>qwerty (Windows version)</description>
+   </configItem>
+ </variant>
       </variantList>
     </layout>
     <layout>
diff -Naur xkb/symbols/cz /usr/share/X11/xkb/symbols/cz
--- xkb/symbols/cz 2010-04-15 14:12:22.000000000 +0200
+++ /usr/share/X11/xkb/symbols/cz 2010-12-11 22:10:22.709018003 +0100
@@ -172,3 +172,42 @@
 
     include "level3(ralt_switch)"
 };
+
+xkb_symbols "win" {
+        // This layout works exactly as Windows CZ QWERTY keyboard.
+
+        include "cz(basic)"
+        name[Group1]= "Czechia - windows qwerty";
+
+        key <AB01> { [  z,      Z,      NoSymbol,       NoSymbol ] };
+        key <AD06> { [  y,      Y,      NoSymbol,       NoSymbol ] };
+
+        key <AE01>      { [      plus, 1, exclam,            NoSymbol ] };
+        key <AE02>      { [    ecaron, 2, at,                NoSymbol ] };
+        key <AE03>      { [    scaron, 3, numbersign,        NoSymbol ] };
+        key <AE04>      { [    ccaron, 4, dollar,            NoSymbol ] };
+        key <AE05>      { [    rcaron, 5, percent,           NoSymbol ] };
+        key <AE06>      { [    zcaron, 6, asciicircum,       NoSymbol ] };
+        key <AE07>      { [    yacute, 7, ampersand,         NoSymbol ] };
+        key <AE08>      { [    aacute, 8, asterisk,          NoSymbol ] };
+        key <AE09>      { [    iacute, 9, parenleft,         NoSymbol ] };
+        key <AE10>      { [    eacute, 0, parenright,        NoSymbol ] };
+        key <AE11>      { [     equal,    percent,     NoSymbol,   dead_diaeresis ] };
+        key <AE12>      { [ dead_acute, dead_caron,  equal, plus ]      };
+        key <LSGT>      { [ dead_diaeresis, apostrophe, backslash, bar ] };
+
+        key <AD11>      { [    uacute,      slash,  bracketleft,    braceleft ] };
+        key <AD12>      { [ parenright,  parenleft, bracketright,  braceright ] };
+
+        key <AC10>      { [     uring,   quotedbl,       semicolon,     colon ] };
+        key <AC11>      { [   section,     exclam,   apostrophe,       ssharp ] };
+        key <AC12>      { [  EuroSign, dead_diaeresis, NoSymbol,     NoSymbol ] };
+        key <BKSL>      { [ dead_diaeresis, apostrophe, backslash,        bar ] };
+
+        key <AB08>      { [     comma,   question,         less,     NoSymbol ] };
+        key <AB09>      { [    period,      colon,      greater,     NoSymbol ] };
+        key <AB10>      { [     minus, underscore,     asterisk,     NoSymbol ] };
+
+        key <SPCE>      { [     space,      space,        space,        space ] };
+};
+

25. října 2010

Nastavení preferované odchozí IPv6 adresy v Linuxu

Tenhle příspěvek je spíš takové připomínátko až to zas příště budu potřebovat. O co jde? Pokud máte na svém linuxovém stroji funkční IPv6 (ať už nativní či jakkoliv jinak tunelované) a máte na jednom zařízení více IPv6 adres, může se vám stát, že odchozí spojení budou vytvořena z jiné IP, než ze které byste chtěli. Naštěstí existuje velice snadný způsob, jak donutit systém používat přesně tu adresu, kterou chcete.

Co k tomu potřebujete?
- Balíček iproute2

A jak toho dosáhnout? Každá IPv6 adresa má v systému jakýsi příznak preferred_lft, po jehož významu jsem nijak výrazněji nepátral, nicméně nějak to ovlivňuje algoritmus, který vybírá odchozí adresu. Pokud tento příznak nastavíte u konkrétní adresy na 0, algoritmus tuto adresu při výběru nebude zohledňovat.
Pokud tedy chcete upřednostnit jednu konkrétní adresu před ostatními, nastavte všem ostatním tento příznak na 0 a jen té vaší zvolené ho nechte na 1.
Udělá se to jednoduše pomocí následujícího příkazu:

ip -6 addr change dev preferred_lft 0

Toť vše. Pokud toto provedete pro všechny nechtěné adresy a pouze u té jedné vámi zvolené necháte na 1, začne to fungovat.
Pokud používáte Debian a přiřazujete adresy v /etc/network/interfaces, můžete samozřejmě nastavení tohoto příznaku provést i tam. Upravte řádek, který momentálně vypadá nějak takhle:
up ip -6 addr add dev
na:
up ip -6 addr add dev preferred_lft 0

A to je pro dnešek vše :)

Zdroj: http://www.davidc.net/networking/ipv6-source-address-selection-linux

9. června 2010

Muj mily denicku :)
Sedim si takhle na zidce v jednom z nejkrasnejsich mest v CR, pricemz je mi tento fakt naprosto ukradeny. Dulezite je, ze tu jsou krabicky a momentalne i to, ze prsi.
Takze je mooooc fajn. Posilam pozdravy z Kutne Hory.