Nokia N810 Internet Tablet

Nasze przygody z N810

Archive for wrzesień 22nd, 2008

września-22-2008

Niemiecka klawiatura i polskie litery

Michaniu i ja mamy przez przypadek/niedopatrzenie/niewiedzę niemiecki układ klawiatury w naszych N810. Niby nic strasznego – można się przyzwyczaić do zmienionych “Y” i “Z”, ale problem zaczyna się gdy zechcemy wprowadzać polskie znaki diakrytyczne. Można co prawda zainstalować polski układ klawiatury przygotowany przez Marcina Juszkiewicza, ale niestety nie jest on dostosowany do klawiatury niemieckiej i przypisuje inne znaki niż są namalowane na klawiszach.

Niemiecki układ klawiatury N810

Żeby pomóc sobie, a przy okazji może jeszcze komuś, przygotowałem własny układ klawiatury oparty na układzie niemieckim. Do zainstalownia mojego układu niezbędny jest program ukeyboard. Niestety nie udało mi sie jeszcze skontaktować z autorem, więc na razie najpierw trzeba ręcznie zmodyfikować pewien plik, by móc cieszyć się polskimi znaczkami. Może w następnych edycjach programu nie trzeba będzie dodatkowo kombinować. Ale po kolei…

Po pierwsze należy zainstalować Additonal keyboard layouts czyli “ukeyboard”. Po drugie należy zmienić plik /usr/share/X11/xkb/symbols/nokia_vndr/ukeyboard. Otóż należy do niego dodać:

// author: Pawel Dys
partial alphanumeric_keys
xkb_symbols "pl-qwertz-de" {
  name[Group1] = "Polish QWERTZ (DE hw)";

  include "nokia_vndr/rx-44(de)"
  include "nokia_vndr/ukeyboard(base)"

  key   { [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift ] };
  modifier_map Mod3 { ISO_Level5_Shift };

  //                                  normal      Shift       Fn              Fn+Shift        Chr              S+Chr            Fn+Chr          Fn+Shift+Chr
  key   { type="EIGHT_LEVEL", [ space,      space,      Tab,            Tab,            bar,             bar,             space,          space           ] };

  key   { type="EIGHT_LEVEL", [ e,          E,          3,              3,              eogonek,         Eogonek,         3,              3               ] };
  key   { type="EIGHT_LEVEL", [ z,          Z,          6,              6,              zabovedot,       Zabovedot,       6,              6               ] };
  key   { type="EIGHT_LEVEL", [ o,          O,          9,              9,              oacute,          Oacute,          9,              9               ] };

  key   { type="EIGHT_LEVEL", [ a,          A,          exclam,         exclam,         aogonek,         Aogonek,         exclam,         exclam          ] };
  key   { type="EIGHT_LEVEL", [ s,          S,          quotedbl,       quotedbl,       sacute,          Sacute,          quotedbl,       quotedbl        ] };
  key   { type="EIGHT_LEVEL", [ g,          G,          percent,        percent,        dollar,          dollar,          percent,        percent         ] };
  key   { type="EIGHT_LEVEL", [ h,          H,          backslash,      backslash,      bracketleft,     bracketleft,     backslash,      backslash       ] };
  key   { type="EIGHT_LEVEL", [ j,          J,          slash,          slash,          bracketright,    bracketright,    bracketright,   bracketright    ] };
  key   { type="EIGHT_LEVEL", [ l,          L,          parenright,     parenright,     lstroke,         Lstroke,         parenright,     parenright      ] };

  key   { type="EIGHT_LEVEL", [ y,          Y,          EuroSign,       EuroSign,       zabovedot,       Zabovedot,       EuroSign,       EuroSign        ] };
  key   { type="EIGHT_LEVEL", [ x,          X,          asciitilde,     asciitilde,     zacute,          Zacute,          asciitilde,     asciitilde      ] };

  key   { type="EIGHT_LEVEL", [ c,          C,          asterisk,       asterisk,       cacute,          Cacute,          asterisk,       asterisk        ] };
  key   { type="EIGHT_LEVEL", [ n,          N,          less,           less,           nacute,          Nacute,          less,           less            ] };
  key   { type="EIGHT_LEVEL", [ m,          M,          greater,        greater,        dead_circumflex, dead_circumflex, greater,        greater         ] };
  key   { type="EIGHT_LEVEL", [ comma,      semicolon,  comma,          semicolon,      braceleft,       braceleft,       comma,          semicolon       ] };
  key   { type="EIGHT_LEVEL", [ period,     colon,      period,         colon,          braceright,      braceright,      period,         colon           ] };

  key   { type="EIGHT_LEVEL", [ adiaeresis, Adiaeresis, apostrophe,     apostrophe,     quoteleft,       quoteleft,       adiaeresis,     Adiaeresis        ] };
};

// author: Pawel Dys
partial alphanumeric_keys
xkb_symbols "pl-qwerty-de" {
  name[Group1] = "Polish QWERTY (DE hw)";

  include "nokia_vndr/rx-44(de)"
  include "nokia_vndr/ukeyboard(base)"

  key   { [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift ] };
  modifier_map Mod3 { ISO_Level5_Shift };

  //                                  normal      Shift       Fn              Fn+Shift        Chr              S+Chr            Fn+Chr          Fn+Shift+Chr
  key   { type="EIGHT_LEVEL", [ space,      space,      Tab,            Tab,            bar,             bar,             space,          space           ] };

  key   { type="EIGHT_LEVEL", [ e,          E,          3,              3,              eogonek,         Eogonek,         3,              3               ] };
  key   { type="EIGHT_LEVEL", [ y,          Y,          6,              6,              zabovedot,       Zabovedot,       6,              6               ] };
  key   { type="EIGHT_LEVEL", [ o,          O,          9,              9,              oacute,          Oacute,          9,              9               ] };

  key   { type="EIGHT_LEVEL", [ a,          A,          exclam,         exclam,         aogonek,         Aogonek,         exclam,         exclam          ] };
  key   { type="EIGHT_LEVEL", [ s,          S,          quotedbl,       quotedbl,       sacute,          Sacute,          quotedbl,       quotedbl        ] };
  key   { type="EIGHT_LEVEL", [ g,          G,          percent,        percent,        dollar,          dollar,          percent,        percent         ] };
  key   { type="EIGHT_LEVEL", [ h,          H,          backslash,      backslash,      bracketleft,     bracketleft,     backslash,      backslash       ] };
  key   { type="EIGHT_LEVEL", [ j,          J,          slash,          slash,          bracketright,    bracketright,    bracketright,   bracketright    ] };
  key   { type="EIGHT_LEVEL", [ l,          L,          parenright,     parenright,     lstroke,         Lstroke,         parenright,     parenright      ] };

  key   { type="EIGHT_LEVEL", [ z,          Z,          EuroSign,       EuroSign,       zabovedot,       Zabovedot,       EuroSign,       EuroSign        ] };
  key   { type="EIGHT_LEVEL", [ x,          X,          asciitilde,     asciitilde,     zacute,          Zacute,          asciitilde,     asciitilde      ] };
  key   { type="EIGHT_LEVEL", [ c,          C,          asterisk,       asterisk,       cacute,          Cacute,          asterisk,       asterisk        ] };
  key   { type="EIGHT_LEVEL", [ n,          N,          less,           less,           nacute,          Nacute,          less,           less            ] };
  key   { type="EIGHT_LEVEL", [ m,          M,          greater,        greater,        dead_circumflex, dead_circumflex, greater,        greater         ] };
  key   { type="EIGHT_LEVEL", [ comma,      semicolon,  comma,          semicolon,      braceleft,       braceleft,       comma,          semicolon       ] };
  key   { type="EIGHT_LEVEL", [ period,     colon,      period,         colon,          braceright,      braceright,      period,         colon           ] };

  key   { type="EIGHT_LEVEL", [ adiaeresis, Adiaeresis, apostrophe,     apostrophe,     quoteleft,       quoteleft,       adiaeresis,     Adiaeresis        ] };
};

Ten krok dla bardziej zaawansowanych będzie banalny vi czy nano, wklej i zapisz. Dla mniej zaawansowanych polecam ściągnięcie pliku na N-kę, zapisanie na “dysku” i wykonanie polecenia, które dokleja treść ściągniętego pliku do docelowego:

cat nazwa-pliku.txt >> /usr/share/X11/xkb/symbols/nokia_vndr/ukeyboard

Ostatecznie powinniście dostać zawartość pliku /usr/share/X11/xkb/symbols/nokia_vndr/ukeyboard podobną do tej.

Na koniec należy wejść do Control panelu w N-ce, wybrać pozycję Text input settings i dokonać wyboru klawiatury:

Należy wybrać “Polish QWERTZ (DE hw)” lub “Polish QWERTY (DE hw)”, która różni się przestawieniem klawiszy “Z” i “Y” (niezgodnie z nadrukiem na klawiaturze).

Od tej pory polskie litery są dostępne jako kombinacja klawisza “Chr” + “acelnosxz” w celu uzyskania małych liter oraz “Chr” + “Shift” + “acelnosxz” w celu uzyskania wielkich liter. Ponieważ nowy układ klawiatury zmienia działanie klawisza “Chr” – nie pokazuje się już mini-klawiatura ekranowa ze specjalnymi znakami, pozwoliłem sobie zrobić dodatkowe kombinacje klawiszy z przydatnymi znakami:

Chr + % -> $
Chr + h -> [
Chr + j -> ]
Chr + , -> {
Chr + . -> }
Fn + Spacja -> Tab
Chr + Spacja -> |
Chr + A-umlaut -> `
Chr + M -> ^

Ponieważ z czasem może pojawić się aktualizacja pakietu “ukeyboard”, w której nie będzie moich definicji klawiatur, należy zachować czujność. Przy aktualizacji zostanie nadpisana treść pliku /usr/share/X11/xkb/symbols/nokia_vndr/ukeyboard, a więc wyżej wymienione zmiany trzeba będzie wprowadzić ponownie. Ja ze swojej strony postaram się, by nowe układy klawiatury sprzętowej pojawiły się w kolejnych wydaniach “ukeyboard”. Na razie zapraszam do testowania.

Umieszczone w kategorii N810 How To