Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Linux seminář, 9.1.2009 Tomáš Davídek, Zbyněk Drásal 1 Jak na speciální klávesy v Linuxu Tomáš, Zbyněk.

Podobné prezentace


Prezentace na téma: "Linux seminář, 9.1.2009 Tomáš Davídek, Zbyněk Drásal 1 Jak na speciální klávesy v Linuxu Tomáš, Zbyněk."— Transkript prezentace:

1 Linux seminář, Tomáš Davídek, Zbyněk Drásal 1 Jak na speciální klávesy v Linuxu Tomáš, Zbyněk

2 Linux seminář, Tomáš Davídek, Zbyněk Drásal 2 Obsah ● Zprovoznění speciálních kláves v Xorg – použití hotkeys – použití xbindkeys ● Zprovoznění speciálních kláves v konzoli ● Jak si pomoci když klávesy negenerují žádný kód

3 Linux seminář, Tomáš Davídek, Zbyněk Drásal 3 Hotkeys (1) ● Balíček hotkeys umožňuje zprovoznit některé speciální klávesy, resp. přiřadit jim nějakou akci – typicky se jedná o klávesy ovládající zvuk na multimediálních klávesnicích (na notebooku jde o kombinaci Fn+X) – funguje pouze v Xorg, nikoli v konzoli ● Nastavení: – z adresáře /usr/share/hotkeys vybereme nejvhodnější typ klávesnice a vyzkoušíme: hotkeys -t typ_klávesnice – případně můžeme vytvořit vlastní mapu klávesnice ● cp /usr/share/hotkeys/XXX.def ~/.hotkeys/mykeyb.def a lehce upravíme ● nastavení vlastního ~/.hotkeys/hotkeys.conf Kbd=mykeyb

4 Linux seminář, Tomáš Davídek, Zbyněk Drásal 4 Hotkeys (2) ● Spouštění při startu Xorg: – přidání řádku hotkeys -b do ~/.xsession ● Příklad (notebook Dell Latitude D505) – výchozí mapa klávesnice /usr/share/hotkeys/inspiron8100.def – přidání akce pro "Win"-klávesu: ● ~/.hotkeys/mykeyb.def: ● ~/.hotkeys/hotkeys.conf: Shell=xterm (příslušný keycode zjistíme např. v xsonsoli) – funguje regulace zvuku (Up/Down, Mute/Unmute) a spuštění xterm

5 Linux seminář, Tomáš Davídek, Zbyněk Drásal 5 Xbindkeys (1) ● Alternativní způsob přiřazení akce k různým klávesám s použitím balíčku xbindkeys. – poněkud složitější než v případě hotkeys, nespouští ovšem žádný "nápis" na obrazovce (vše plně v našich rukou) ● Postup (detaily viz. vylepsene-klavesnice vylepsene-klavesnice – zjištění mapy klávesnice ● zjištění, jaký kód generuje naše klávesa (e008 - viz. xconsole) ● viz. soubory /usr/share/keymaps/i386/qwerty/us-*.kmap.gz ● nalezení volného "klíče" Do (kód 116) – přiřazení kódu naší klávesy kódu akce Do ● přidání setkeycode e do souboru /etc/rc.local ● tento skript musí končit příkazem exit 0

6 Linux seminář, Tomáš Davídek, Zbyněk Drásal 6 Xbindkeys (2) – zjištění mapy klávesnice v Xorg (jiné než v konzoli !!) ● pomocí xev (zjistíme, že 116 -> 222) – přiřazení zjištěného kódu k nějaké akci typu FX ● pomocí xmodmap -e "keycode 222=F19" ● spuštění nejlépe v ~/.xsession – spuštění daemonu xbindkeys a přiřazení určité akce, obsah ~/.xbindkeysrc: "/usr/local/bin/wifi_switch" F19 ● Uvedený příklad ukazuje použití klávesy Fn+F2 (WiFi switch). Šlo by to také jednoduše udělat pomocí hotkeys

7 Linux seminář, Tomáš Davídek, Zbyněk Drásal 7 Speciální klávesy v konzoli (1) ● Mapa v konzoli funguje trochu jinak než mapa v Xorg – nepotřebujeme žádné speciální balíčky, vystačíme s nástroji z balíčku console-tools ● Postup je také zdokumentován na Webu klavesnice příklad pro Fn+F2: klavesnice – vytvoření vlastní mapy klávesnice: ● vyjdeme ze současné mapy: dumpkeys > /usr/local/share/keymap_td (kód 116 stále odpovídá akci Do, náhoda?) ● modifikace souboru tak, aby Do spouštěl příslušný program: string Do="/usr/local/bin/wifi_switch\n"

8 Linux seminář, Tomáš Davídek, Zbyněk Drásal 8 Speciální klávesy v konzoli (2) – přiřazení kódu klávesy kódu akce Do (viz. dříve) a zároveň aktivace naší modifikované mapy klávesnice v souboru /etc/rc.local setkeycodes e loadkeys /usr/local/share/keymap_td exit 0 ● Pozor: pokud stejný skript používáme v Xorg i v konzoli, měl by umět rozpoznat prostředí: – použití konstrukce if [ -z $DISPLAY ]....

9 Linux seminář, Tomáš Davídek, Zbyněk Drásal 9 Když to nefunguje, staňme se experty... ● Všechny výše zmíněné postupy vyžadují, aby naše klávesa generovala nějaký kód. Pokud tomu tak není, což typicky platí pro klávesy přímo ovládající hardware (jas LCD displeje, on/off wireless, on/off zvuk...), existuje zde pravděpodobnost, že jejich nefunkčnost je způsobena problémem s DSDT... – Co je ACPI (Advanced Configuration Power Interface)? ● jedná se o společný standard (firem Intel, Microsoft, Toshiba), který definuje, jak má OS komunikovat s BIOSem a přes něj řídit “power management” jednotlivých periferií – Co je DSDT (Differentiated System Description Table)? ● “tabulka” popisující konfiguraci systému; obsahuje definice všech periférií, která podporují ACPI + popisuje jejich funkce

10 Linux seminář, Tomáš Davídek, Zbyněk Drásal 10 Expertem na DSDT(1) ● V čem je problém? (v několika málo bodech) – DSDT – napsáno v jazyce ASL (ACPI source language) a zkompilováno do AML (ACPI machine language) – Někteří výrobci periferií používají při generování DSDT ASL kompilátor firmy Microsoft (místo firmy Intel), který je liberálnější vůči mírným nepřesnostem standardům ACPI ● OS Windows – poradí si i s problematickým kódem (používá výstup vlastního kompilátoru) - OK ● OS Linux – neporadí si s problem. kódem (striktně vyžaduje dodržování standardů ACPI) - možné problémy ● Jak to řešit? – Informace z DSDT je vložena do ACPI namespacu v době bootování

11 Linux seminář, Tomáš Davídek, Zbyněk Drásal 11 Expertem na DSDT(2) – Nutné opravit DSDT tabulku, uložit opravenou verzi do souboru a ten zakompilovat do jádra – informace o perifériích bude natažena přímo z jádra, nikoliv z BIOSu ● Krok za krokem... – Stáhnout debianní balíček iasl (Intel ASL kompilátor) – Extrahovat obsah DSDT do souboru a získat zdroj. kód cat /proc/acpi/dsdt > dsdt.dat iasl -d dsdt.dat, což vytvoří soubor dsdt.dsl – Opravit chyby a rekompilovat (zde bohužel obecný návod neexistuje, při kompilaci se dá zjistit, kde jsou problémy, a pak je nutné googlit řešení nebo stáhnout již opravenou verzi, více na: iasl -tc dsdt.dsl

12 Linux seminář, Tomáš Davídek, Zbyněk Drásal 12 Expertem na DSDT(3) – Upravit konfiguraci jádra.config, tj. uložit zde adresu opravené DSDT tabulky, a překompilovat jádro Device drivers ---> Generic Driver Options ---> [ ] Select only drivers that don't need compile-time external firmware [ ] Prevent firmware from being built Power management options (ACPI, APM) ---> ACPI (Advanced Configuration and Power Interface ) Support ---> [*] Include Custom DSDT (path/.../dsdt_table.hex) Custom DSDT Table File to include Power management – Nyní by už vše mělo zafungovat... (jedná se o řešení skutečně pro experty, kód je v assembleru)


Stáhnout ppt "Linux seminář, 9.1.2009 Tomáš Davídek, Zbyněk Drásal 1 Jak na speciální klávesy v Linuxu Tomáš, Zbyněk."

Podobné prezentace


Reklamy Google