From: Helg Subject: ukbdmap: add apple keyboard variant To: tech@openbsd.org Cc: miod@online.fr Date: Sat, 27 Dec 2025 14:09:01 +0100 This patch adds an apple variant to the de keyboard encoding for wskdb. It doesn't attempt to map all additional keysyms, only those that are required in the shell and for programming. It is similar to the applealu_iso variant that can be specified in X11 with setxkbmap. I'd appreciate if other users with German Apple keyboards could test in the console. It's now possible to do this: wsconsctl keyboard.encoding=de.nodead.apple.metaesc Index: sys/dev/usb/makemap.awk =================================================================== RCS file: /cvs/src/sys/dev/usb/makemap.awk,v diff -u -p -r1.17 makemap.awk --- sys/dev/usb/makemap.awk 22 Nov 2023 18:19:25 -0000 1.17 +++ sys/dev/usb/makemap.awk 27 Dec 2025 12:57:10 -0000 @@ -37,6 +37,7 @@ BEGIN { declk = 0 haskeys = 0 kbfr = 0 + kbde = 0 nmaps = 0 # PS/2 id -> UKBD conversion table, or "sanity lossage 101" @@ -410,6 +411,21 @@ $1 == "#define" || $1 == "#undef" { print " KC(47),\tKS_masculine,\tKS_ordfeminine," print " KC(50),\tKS_backslash,\tKS_bar," print " KC(52),\tKS_dead_tilde,\tKS_dead_circumflex" + } else + if (mapname == "ukbd_keydesc_de[]") { + # + # Apple MacBook keyboards use a slightly different layout + # + print $0 + print "\nstatic const keysym_t ukbd_keydesc_de_apple[] = {" + print "/* pos\t\tnormal\t\tshifted\t\taltgr\t\tshifted-altgr */" + print " KC(15),\tKS_l,\t\tKS_L,\t\tKS_at," + print " KC(34),\tKS_5,\t\tKS_percent,\tKS_bracketleft," + print " KC(35),\tKS_6,\t\tKS_ampersand,\tKS_bracketright," + print " KC(36),\tKS_7,\t\tKS_slash,\tKS_bar,\t\tKS_backslash," + print " KC(37),\tKS_8,\t\tKS_parenleft,\tKS_braceleft," + print " KC(38),\tKS_9,\t\tKS_parenright,\tKS_braceright," + print " KC(17),\tKS_n,\t\tKS_N,\t\tKS_asciitilde," } } } @@ -422,6 +438,18 @@ $1 == "#define" || $1 == "#undef" { } else if (kbfr == 3) { print "\tKBD_MAP(KB_FR | KB_APPLE | KB_SWAPCTRLCAPS,\tKB_FR | KB_APPLE," print "\t\tukbd_keydesc_swapctrlcaps)," + } + next +} +/KB_DE/ { + print $0 + kbde++ + # Add .apple variants + if (kbde == 1) { + print "\tKBD_MAP(KB_DE | KB_APPLE,\tKB_DE,\tukbd_keydesc_de_apple)," + } else if (kbde == 2) { + print "\tKBD_MAP(KB_DE | KB_APPLE | KB_NODEAD,\tKB_DE | KB_APPLE," + print "\t\tukbd_keydesc_de_nodead)," } next }