From 7b13ef7af2e128af5a6246761c26a2058a48e954 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 21 Feb 2024 20:27:29 +0100 Subject: [PATCH] digraphs/xorg: support keysymdef aliases in compose definitions Silence error about deprecated Ooblique being unknown. --- Makefile | 2 +- tools/mkdigraphs-xorg | 5 ++++- tools/mkxkeysymdef | 12 +++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index cccaebf..f9c0565 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ data/digraphs-shiar.inc.pl: tools/mkdigraphs-shiar shiar.inc.txt $(call cmdsave,$^) data/xorg-compose: $(download) - tools/wget-ifmodified http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre $@ + tools/wget-ifmodified http://gitlab.freedesktop.org/xorg/lib/libx11/-/raw/master/nls/en_US.UTF-8/Compose.pre $@ data/keysymdef.h: $(download) tools/wget-ifmodified http://gitlab.freedesktop.org/xorg/proto/xorgproto/-/raw/master/include/X11/$(@F) $@ data/keysymdef.json: tools/mkxkeysymdef data/keysymdef.h diff --git a/tools/mkdigraphs-xorg b/tools/mkdigraphs-xorg index b34bef5..90b0d86 100755 --- a/tools/mkdigraphs-xorg +++ b/tools/mkdigraphs-xorg @@ -23,7 +23,10 @@ while ($_ = readline) { or next; $chr =~ s/\\(.)/$1/g; $mnem !~ m/]+)> \h?}{$symname->{$1} // die "reference to unknown keysym $1\n"}eg; + eval { + $mnem =~ s{<([^>]+)> \h?}{$symname->{$1} // die "reference to unknown keysym $1\n"}eg; + 1; + } or warn($@), next; $mnem !~ m/[^\x20-\x7F]/ or next; # skip unicode # (state $seen = {})->{$chr}++ and next; printf "%s => %s,\n", pp($mnem), pp($chr); diff --git a/tools/mkxkeysymdef b/tools/mkxkeysymdef index e7d7690..cecf9d4 100755 --- a/tools/mkxkeysymdef +++ b/tools/mkxkeysymdef @@ -2,19 +2,21 @@ use 5.014; use warnings; use utf8; -use re '/msx'; +use re '/mnsx'; use JSON; -our $VERSION = '1.00'; +our $VERSION = '1.01'; -my %keysym; +my (%keysym, %keyval); while (readline) { m{ \A [#]define[ ]XK_ (?[a-zA-Z_0-9]+) \h+ 0x(?[0-9a-fA-F]+) - \h* [/][*] [\h(] U[+] (?[0-9A-F]{4,6}) + ( \h* [/][*] [\h(] U[+] (?[0-9A-F]{4,6}) )? } or next; - $keysym{ $+{name} } = chr hex $+{unicode}; + my $cp = $+{unicode} // $keyval{ $+{value} } or next; + $keysym{ $+{name} } = chr hex $cp; + $keyval{ $+{value} } = $cp; } print JSON->new->ascii->canonical->indent->encode(\%keysym); -- 2.30.0