Fedora Magazine informuje o Shell & Display Next hackfestu zaměřeném na vylepšení podpory HDR, VRR a dalších grafických technologií na Linuxu. Hackfest proběhne 24. až 26. dubna v Brně.
Společnost Razer představila svou novou bezdrátovou myš Razer Viper Mini Signature Edition. Je z hořčíkové slitiny a váží pouze 49 gramů. Její cena je 279,99 dolarů (6 tisíc korun).
O víkendu probíhá v Bruselu konference FOSDEM 2023 (Free and Open source Software Developers’ European Meeting). Program konference je velice nabitý: 34 místností, 63 tracků, 787 přednášejících, 775 přednášek, prezentací a workshopů. Sledovat je lze i online. K dispozici budou jejich videozáznamy. Aktuální dění lze sledovat na sociálních sítích.
Ronin byl vydán ve verzi 2.0.0. Jedná se o sadu nástrojů napsaných v Ruby určených pro výzkumníky a vývojáře v oblasti počítačové bezpečnosti. Ronin lze přirovnat k Metasploitu.
Od 9. února nebude podporován bezplatný přístup k Twitter API.
Byla vydána nová verze 1.75 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.75 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Tomáš Matějíček vydal nové verze živé linuxové distribuce Slax: 15.0.1 založenou na Slackware-current a 11.6.0 založenou na Debianu 11.6 Bullseye. S novou verzí souborového systému DynFileFS.
The Document Foundation oznámila vydání nové major verze 7.5 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) nebo také na Youtube a PeerTube.
Penpot je open source webová platforma pro designování a prototypování. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MPL-2.0 (Mozilla Public License 2.0). Včera vydána verze 0.17 byla prohlášena za první stabilní verzi (Twitter). Videoukázky na YouTube.
Po půl roce od vydání verze 2.36 byla vydána nová verze 2.37 knihovny glibc (GNU C Library). Přehled novinek v poznámkách k vydání.
/usr/share/X11/xkb
. Nás bude zajímat zejména podadresář symbols
, ve kterém jsou uloženy jednotlivé mapy kláves jako textové soubory. Nejspíše nás bude zajímat soubor cz
nebo us
, který obsahuje českou, resp. americkou mapu kláves.
Je možné zasahovat přímo do těchto souborů. To má několik nevýhod: upravené mapy kláves mohou být přepsány při aktualizaci operačního systému, změny se projeví u všech uživatelů (to někdy může být žádoucí) a je nutné k těmto souborům přistupovat s právy roota.
Je možné také vlastní mapu kláves k těmto přidat. Další možností je vytvořit si mapu kláves mimo tuto adresářovou stukturu a zvolit ji připraveným skriptem (viz níže). Touto možností se tento zápisek zabývá.
~/kbd
. V něm si vytvoříme adresář symbols
, který odpovídá celosystémovému /usr/share/X11/xkb/symbols
.
~/kbd/main.mkb
. Jeho obsah může být následující:
default partial alphanumeric_keys modifier_keys xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us(cz_sk_de)+inet(evdev)+custom" }; };Na posledním řádku s
include
je uveden seznam map kláves, které se budou nastavovat. Později uvedená přepisuje předchozí. Zde upravuji variantu cz_sk_de
rozvržení us
. Pokud chcete upravovat například českou klávesnici, napište místo us(cz_sk_de)
toto: cz
Poslední uvedenou mapou kláves je custom
, kterou si nyní vytvoříme.
~/kbd/symbols/custom
bude obsahovat úpravy mapy kláves.
Napišme do něj toto:
partial xkb_symbols { // … }Syntaxe je nápadně podobná programovacímu jazyku C. Komentáře zajsou uzavřeny v
/*
a */
nebo, jsou-li na konci řádku, jsou uvozenu //
.
Předtím, než začneme vyjmenovávat klávesy a jejich význam, určíme typ kláves. Ten se vztahuje vždy jen na klávesy uvedené po něm a to až do nastavení jiného typu. Typ se určí pomocí:
key.type = "ONE_LEVEL";
ONE_LEVEL
znamená, že klávesa není ovlivněna modifikátory (Shift, Alt Gr). Další možnou hodnotou je FOUR_LEVEL
(pro klávesy s různými významy podle toho, jestli jsou stisknuty klávesy Shift a Alt Gr). Také nás může zajímat typ FOUR_LEVEL_MIXED_KEYMAP
, který funguhe podobně jako FOUR_LEVEL
, ale pokud je zapnutý Num Lock, obrátí se výžnam klávesy Shift.
Potom, co jsme určili typ kláves, můžeme zapisovat jednotlivé klávesy. Formát je následující (pro klávesu typu FOUR_LEVEL
:
key <AC05> { [ a, b, c, d ] };Tento řádek nám určí to, že klávesa s kódem
AC05
(klávesa „g“) bude psát „a“, se shiftem „b“, s Alt Gr „c“ a se Shiftem a Alt Gr „d“.
Namísto „a“, „b“, „c“ a „d“ můžete psát jiné názvy symbolů. Jejich výčet naleznete v souboru /usr/include/X11/keysymdef.h
na řádcích #define
(v souboru custom
ale bez XK_
). Pro určení znaku Unicode použijte zápis Uxxxx
, kde xxxx je kód znaku šestnáčtkově.
U kláves typu ONE_LEVEL
pište jen jeden symbol:
key <AC05> { [ a ] };Pokud chcete například zaměnit Escape a Caps Lock, napište:
key.type = "ONE_LEVEL"; key <CAPS> { [ Escape ] }; key <ESC> { [ Caps_Lock ] };
~/kbd
a spusťte xkbcomp -I ~/kbd main.kbd "$DISPLAY"
. Dávejte si pozor na to, že si mužete změnou mapy kláves znemožnit další práci s počítačem (do změny mapy nebo ukončení X serveru). Doporučuji Vám připravit si další počítač s SSH spojením nebo v menu pro změnu mapy kláves v desktopovém prostředí.
Změny vrátíte například pomocí setxkbmap
:
setxkbmap czPokud se připojujete po SSH, budete nejspíše muset nastavit proměnnou
DISPLAY
. Např.:
DISPLAY=:0 setxkbmap czPro trvalé nastavení z příkazu vytvořte skript a nastavte jeho spuštení po přihlášení.
us(cz_sk_de)
rozšířená o klávesu compose, trojtečku, české uvozovky na Alt Gr+vg, anglické na Alt Gr+gh a numerickou klávesnicí pro psaní šestnáctkových čísel a zadávání do tabulkového procesoru volené pomocí Alt Gr.
Klávesa Print Screen (krátkým stiskem) přepne numerickou klávesnici do režimu pro kreslení rámečků.
partial xkb_symbols { name[Group1] = "US/CZ keyboard extension"; name[Group2] = "Typography and graphics"; // Swap Escape and Caps Lock key.type = "ONE_LEVEL"; key <CAPS> { [ Escape ] }; key <ESC> { [ Caps_Lock ] }; // Group switching key.type = "FOUR_LEVEL"; key <PRSC> { [ ISO_Next_Group, ISO_Prev_Group ] }; // NBSP key.type = "FOUR_LEVEL"; key <SPCE> { [ space, nobreakspace, nobreakspace, nobreakspace ] }; //// Group 1 //// // Alphabetic key mappings key.type = "FOUR_LEVEL"; key <AC05> { [ g, G, leftdoublequotemark, leftsinglequotemark ] }; key <AC06> { [ h, H, rightdoublequotemark, rightsinglequotemark ] }; key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] }; key <AC10> { [ semicolon, colon, uring, Uring ] }; key <AD11> { [ bracketleft, braceleft, uacute, Uacute ] }; key <AC11> { [ apostrophe, quotedbl, U2026, section ] }; // U2026 — Hor. ellipsis key <AC07> { [ j, J, U2193, U21D3 ] }; // U2193 — down arrow; U21D3 — double down arrow key <AC08> { [ k, K, U2191, U21D1 ] }; // U2191 — up arrow; U21D1 — double up arrow // ↓↓↓ Empty level below ↓↓↓ key <AC09> { [ l, L, U22EE ] }; // U22EE — vertical ellipsis // ↓↓↓ Empty level below ↓↓↓ key <AD10> { [ p, P, U03C0 ] }; // U03C0 — greek small pi // Compose key key.type = "ONE_LEVEL"; key <LSGT> { [ Multi_key ] }; // Hex numpad │ // ╭─╯ // ┏━┳┳━━━━━━━┻━━━━━━━━┓ // ┣━┻┻━┯━━━━┯━━━━┯━━━━┫ Modifiers: // ┃ │ │ │ ┃ // ┃ ⇩│÷ /│✕ *│ -┃ ┏━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓ // ┠────┼────┼────┼────┨ ┃ AltGr + Shift │ Shift ┃ // ┃A │B │C │ ┃ ┠───────────────┼───────────────┨ // ┃a 7│b 8│c 9│ ┃ ┃ AltGr │ (none) ┃ // ┠────┼────┼────┤T ┃ ┗━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛ // ┃D │E │F │A ┃ // ┃d 4│e 5│f 6│B +┃ // ┠────┼────┼────┼────┨ // ┃; │ │NB │ ┃ // ┃: 1│x 2│SP 3│ ┃ // ┠────┴────┼────┤ R┃ // ┃ │, │ E┃ // ┃ 0│. .│= T┃ // ┗━━━━━━━━━┷━━━━┷━━━━┛ key.type = "FOUR_LEVEL_MIXED_KEYPAD"; key <KP1> { [ KP_End, KP_1, colon, semicolon ] }; key <KP2> { [ KP_Down, KP_2, x ] }; key <KP3> { [ KP_Next, KP_3, space, nobreakspace ] }; key <KP4> { [ KP_Left, KP_4, d, D ] }; key <KP5> { [ NoSymbol, KP_5, e, E ] }; key <KP6> { [ KP_Right, KP_6, f, F ] }; key <KP7> { [ KP_Home, KP_7, a, A ] }; key <KP8> { [ KP_Up, KP_8, b, B ] }; key <KP9> { [ KP_Prior, KP_9, c, C ] }; key <KPEN> { [ KP_Enter, KP_Enter, KP_Equal ] }; key <KPDL> { [ period, period, comma ] }; key <KPDV> { [ KP_Divide, KP_Divide, U00f7 ] }; key <KPMU> { [ KP_Multiply, KP_Multiply, U2715 ] }; key <KPAD> { [ KP_Add, KP_Add, Tab ] }; //// Group 2 //// // Box drawing keypad // // ⇩ /│ * -- (minus becomes horizontal line) // 7┌ 8┬ 9┐ SP (plus becomes space) // 4├ 5┼ 6┤ // 1└ 2┴ 3┘ // // No modifiers Thin lines ├┼┤ // Shift/NumLockOff Thicker lines ┣╋┫ // AltGr Double lines ╠╬╣ // AltGr+Shift Special lines ╭╮╰╯┠┨┯┷ key <KP1> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U2517, U2514, U255A, U2570 ] }; key <KP2> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U253B, U2534, U2569, U2537 ] }; key <KP3> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U251b, U2518, U255d, U256f ] }; key <KP4> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U2523, U251c, U2560, U2520 ] }; key <KP5> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U254b, U253c, U256c ] }; key <KP6> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U252b, U2524, U2563, U2528 ] }; key <KP7> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U250f, U250c, U2554, U256d ] }; key <KP8> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U2533, U252c, U2566, U252f ] }; key <KP9> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U2513, U2510, U2557, U256e ] }; key <KPDV> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U2503, U2502, U2551 ] }; key <KPSU> { type[Group2] = "FOUR_LEVEL_MIXED_KEYPAD", symbols[Group2] = [ U2501, U2500, U2550 ] }; key <KPAD> { type[Group2] = "ONE_LEVEL", symbols[Group2] = [ space ] }; include "level3(ralt_switch)" };
Tiskni
Sdílej:
vubec nevim co to jakoby je tamten režim kreslení rámečků :O :O
supr blogísek jinak :D ;D
nj ale nevim k čemu to je jakože dobrý :D
╭────┬─────────╮ │ č. │ slovo │ ├────┼─────────┤ │ 01 │ Pro │ │ 02 │ tabulky │ │ 03 │ v │ │ 04 │ prostém │ │ 05 │ textu │ └────┴─────────┘
to mě nenapadlo :D :D
A kdybys to nechtěla vyťukávat na klávesnici, tak můžeš jedním příkazem:
relpipe-in-cli --relation 'textová_tabulka' --attribute 'č.' string --attribute 'slovo' string --records 01 Pro 02 tabulky 03 v 04 prostém 05 textu | relpipe-out-tabular --write-types false --write-record-count false --write-relation-name false
získat přesně stejný výstup.
! -*- coding: utf-8 -*- ! print semicolon instead of section {;, §} ! keycode 48 = section exclam section exclam apostrophe ssharp apostrophe keycode 48 = semicolon exclam semicolon exclam apostrophe ssharp apostropheTohle píše středník místo paragrafu.
ACTION=="add",KERNEL=="kb*",RUN=="/bin/true"
/usr/share/X11/xkb/rules/
. Nemám vyzkoušeno, jestli si jde přidat vlastní do domovského adresáře.
setxkbmp
u postačí jen mapa v …/symbols/
, volítka v desktopových prostředí hledají informace jinde.
Jak je na tom Wayland? Je možné na něm upravit klávesovou mapu?
/usr/share/X11/xkb/
, layout se jmenuje custom
):
V rules/base
, ř. 46:
! $threelevellayouts = al az custom be br bt ca ch cs cz de // atd. // ---snip--- ř. 213 ! model layout variant = symbols * custom basic = pc+custom // atd.V
rules/xorg
něco podobného.
V rules/xorg.lst
, kolem ř. 195:
! layout custom Custom us English (US) atd.V
rules/xorg.xml
:
<xkbConfigRegistry version="1.1"> <!-- … --> <layoutList> <layout> <configItem> <name>custom</name> <shortDescription>custom</shortDescription> <description>Custom</description> <languageList> <iso639Id>cst</iso639Id> </languageList> </configItem> <configItem> <name>us</name> <shortDescription>en</shortDescription> <description>English (US)</description> <languageList> <iso639Id>eng</iso639Id> </languageList> </configItem> <!-- … --> </layout> <!-- … --> </layoutList> <!-- … --> </xkbConfigRegistry>V
rules/base.xml
obdobně.
Nevím, jestli je to správně, ale v KDE to funguje.
Super. Díky.