Dlouholetý balíčkář KDE Jonathan Riddell končí. Jeho práci na KDE neon financovala firma Blue Systems, která ale končí (Clemens Tönnies, Jr., dědic jatek Tönnies Holding, ji už nebude sponzorovat), někteří vývojáři KDE se přesunuli k nově založené firmě Techpaladin. Pro Riddella se již nenašlo místo. Následovala debata o organizaci těchto firem, které zahraniční vývojáře nezaměstnávají, nýbrž najímají jako kontraktory (s příslušnými důsledky z pohledu pracovního práva).
V Amsterdamu probíhá Blender Conference 2025. Videozáznamy přednášek lze zhlédnout na YouTube. V úvodní keynote Ton Roosendaal oznámil, že k 1. lednu 2026 skončí jako chairman a CEO Blender Foundation. Tyto role převezme současný COO Blender Foundation Francesco Siddi.
The Document Foundation, organizace zastřešující projekt LibreOffice a další aktivity, zveřejnila výroční zprávu za rok 2024.
Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
/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.