On Wed, Nov 23, 2022 at 06:57:17AM +0000, Jason McIntyre wrote: > On Wed, Nov 23, 2022 at 12:21:26AM +0100, Mike Fischer wrote: > > Hi! > > > > I???m trying to use a German Apple Mac keyboard with OpenBSD 7.2 and I???d > > like to match the mapping to that of macOS. > > > > `wsconsctl keyboard.encoding=de` helps, but several mappings are > > different/missing. For example the pipe character | should be alt-7 but > > isn???t. Mostly the alt-combinations are missing or wrong. > > > > So I thought I could use keyboard.map settings to correct this. But I > > can???t find any documentation of the format ??? very unusual for OpenBSD. > > > > Did I miss something? > > > > Can someone point me to the documentation please? > > > > Thanks! > > > > Mike > > > > hi. > > maybe you are looking for wsksymdef.h: > > WSCONSCTL(8) System Manager's Manual WSCONSCTL(8) > > ... > > Modify the current keyboard encoding so that, when the Caps > Lock key is pressed, the same encoding sequence as Left > Control is sent. For a full list of keysyms, and keycodes, > refer to the /usr/include/dev/wscons/wsksymdef.h file. > > # wsconsctl keyboard.map+="keysym Caps_Lock = > Control_L" > > jmc >
Hey, If it helps, here's my wsconsctl.conf to add some Romanian keyboard bindings in the console for keys which are behind AltGr. Note, I've intentionally made some Romanian specific unicode characters output a literal `?' since they're not very usable in wscons. You can either use symbolic names (from wsksymdef.h) or use stuff like `unknown_51355' to give it a U+code point in decimal form. For German, you probably have everything you need in wsksymdef.h. Note, the format is also very similar to xkb; originally I thought they were the same (they aren't 100% the same). keyboard.encoding=us keyboard.map+="keysym Caps_Lock = Control_L" mouse.tp.tapping=3 mouse.reverse_scrolling=1 keyboard.map+="keysym Caps_Lock = Control_L" keyboard.map+="keycode 184 = Cmd2 Mode_switch Multi_key" # use ? for unicode that causes mojibake keyboard.map+="keycode 26 = question question bracketleft braceleft" keyboard.map+="keycode 27 = question question bracketright braceright" keyboard.map+="keycode 39 = question question semicolon colon" keyboard.map+="keycode 40 = question question apostrophe quotedbl" keyboard.map+="keycode 41 = question question grave asciitilde" # 3byte UTF-8, don't bother keyboard.map+="keycode 43 = question question backslash bar" keyboard.map+="keycode 51 = comma semicolon less question" keyboard.map+="keycode 52 = period colon greater question" A more proper example for e.g. keycode 26: keyboard.map+="keycode 26 = abreve Abreve bracketleft braceleft" Or for keys that don't have a symbolic name: keyboard.map+="keycode 43 = unknown_50082 unknown_50050 backslash bar" I started from US which is 90% there, and the first thing is to add right Alt as `Mode_switch', otherwise it's just (left) Alt (which I think just sets the MSB, IDK; you want AltGr/Mode_switch if you want to map specific characters). Which keycode is what? I don't know. I dumped the hu layout as a reference with `doas wsconsctl keyboard.map > hu.map' and looked at what was done for that crazy layout, and started from there. Cheers, Vlad