Archive
-- How to convert CBZ to PDF
+
- Print your stuff on Möbius bands! +
- How to convert CBZ to PDF
- Do not forget about IPv6 DNS
- About this blog
- Smršť 2023 (CZ)
diff --git a/output/categories.html b/output/categories.html
index 9bd786a..1b29b38 100644
--- a/output/categories.html
+++ b/output/categories.html
@@ -35,6 +35,8 @@
Tags
-
+
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/category/networking.html b/output/category/networking.html index 5a1c095..d26d52f 100644 --- a/output/category/networking.html +++ b/output/category/networking.html @@ -35,6 +35,8 @@
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/category/talks.html b/output/category/talks.html index f812437..da7a4c4 100644 --- a/output/category/talks.html +++ b/output/category/talks.html @@ -35,6 +35,8 @@
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/category/technology.html b/output/category/technology.html index 42734a2..6da00fb 100644 --- a/output/category/technology.html +++ b/output/category/technology.html @@ -35,6 +35,8 @@
- lifehack +
- comics
- software
- ipv6-only @@ -57,7 +59,8 @@
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/cbz-to-pdf.html b/output/cbz-to-pdf.html index 548ddaa..8b72351 100644 --- a/output/cbz-to-pdf.html +++ b/output/cbz-to-pdf.html @@ -35,6 +35,8 @@
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/drafts.html b/output/drafts.html index e3d2ed8..acd7bd3 100644 --- a/output/drafts.html +++ b/output/drafts.html @@ -35,6 +35,8 @@
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/drafts/ucw-keymap-on-wayland.html b/output/drafts/ucw-keymap-on-wayland.html index 8013a68..c862b5a 100644 --- a/output/drafts/ucw-keymap-on-wayland.html +++ b/output/drafts/ucw-keymap-on-wayland.html @@ -35,6 +35,8 @@
- lifehack +
- comics
- software
- ipv6-only @@ -277,6 +279,50 @@ we could possibly have, so now we get our hands dirty. A simple hw/xwayland/xwayland-input.c in functions keyboard_handle_*, which look like the libwayland-client handlers we have seen in wev. +
Tags
-
+
Tags
-
+
Tags
-
+
Category: technology
-Tags
-
+
Tags
-
+
Tags
-
+
Tags
-
+
However, the fun ends here. I found the generic code of Xorg (which these +handlers quickly call) rather hard to make sense of [2] (though ctags, +printf(3), debug build and gdb might help) and the implementation of XKB is +rather massive: about 20 000 loc just in the xkb/ directory. And touching +this code in a bad way might break something somewhere for somebody.
+We can get creative though. We know that this issue is only present in +XWayland, which (by a quick grep -l) seems to live in hw/xwayland. Yay, +only about 12 000 loc to sift through :-) This code is safe(r) to destroy, +though, since other stuff will supposedly not be influenced.
+This is about a month since I begun exploring the issue (I attend to this +mostly on my commute or during free time in some evenings, so it goes slowly). +Because of that, I became too fixated on a task of "getting xev not to show +group 2 instead of group 1" (in the state bits). What I needed to remember was +that my task could also be "getting XWayland's implementation of XKB group not +interfere with the compositor's one".
+Can I have some fun, please? Imagine a James Veitch's style of lines appearing here…
++static void +keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard, + uint32_t serial, uint32_t mods_depressed, + uint32_t mods_latched, uint32_t mods_locked, + uint32_t group) +{ + /*lol*/group = 0; + // the rest of function… +
+Okay, xev tells me this is actually the way. Can I have more fun?
++/*rofl*/return; +
+ +Oh yes I can! Even with this piece of heresy xev resolves state correctly, +even with combination with other modifiers like control and shift, three +groups, …
+This seems to be a sensible way, because the Wayland protocol seems to promise +to send wl_keyboard::key before wl_keyboard::modifiers:
++If this event [wl_keyboard::key] produces a change in modifiers, then the +resulting wl_keyboard.modifiers event must be sent after this event.
+My hypothesis is that XWayland's XKB updates its state when receiving the ::key +events and the following ::modifiers event confuses it. However, I do not yet +know what that code is supposed to do.
+ + ++
+ + + +[2] I tried to track how a wl_keyboard::key gets processed to a +KeyPress, but I ended up at it being processed in mieq, where it gets +enqueued without group/state info and then it gets too generic. I have no +idea how XKB is tied into that, but I chickened out relatively quickly when +I realized that I should not really be touching the general code. I didn't +get to use gdb in the end, though I was very close to wanting to see +backtraces – I backed out just before trying this approach.
Tags
-
+
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/images/mobius-print/Makefile b/output/images/mobius-print/Makefile new file mode 100644 index 0000000..8e75801 --- /dev/null +++ b/output/images/mobius-print/Makefile @@ -0,0 +1,6 @@ +all: booklet.svg mobius.svg leporello.svg booklet.svg + +%.svg: %.ipe + iperender -svg "$<" "$@" + +.PHONY: all diff --git a/output/images/mobius-print/booklet.ipe b/output/images/mobius-print/booklet.ipe new file mode 100644 index 0000000..76a257d --- /dev/null +++ b/output/images/mobius-print/booklet.ipe @@ -0,0 +1,398 @@ + + +
- lifehack +
- comics
- software
- ipv6-only diff --git a/output/mobius-print.html b/output/mobius-print.html new file mode 100644 index 0000000..ac699e6 --- /dev/null +++ b/output/mobius-print.html @@ -0,0 +1,252 @@ + + + + + + + + + + + + +
Tags
-
+