sys/dev/pckbc/pckbd.c introduces a buglet, where the value computed for local variable `table' in pckbd_set_xtscancode() in the non-translating case, is overwritten by accident.
Unfortunately, this means that the keyboard ends up using a scancode set which is not the one expected by the driver, and hilarity ensues, such as key up events not translated correctly, and neither ctrl or caps lock. Unfortunately this breaks at least gsckbc(4/hppa), which is a controller where you can't plug a DIN keyboard so a "modern" PS/2 keyboard is required, and that logic can be shunt. This is very inconvenient, as most of the hppa machines where the X server works are gsckbc machines, and 6.3 can't be installed on them because of this bug (but then, noone seems to have noticed, so this is hardly relevant). Simple fix below. Index: pckbd.c =================================================================== RCS file: /OpenBSD/src/sys/dev/pckbc/pckbd.c,v retrieving revision 1.44 diff -u -p -r1.44 pckbd.c --- pckbd.c 6 Jan 2018 18:51:20 -0000 1.44 +++ pckbd.c 2 May 2018 18:58:28 -0000 @@ -214,7 +214,7 @@ int pckbd_set_xtscancode(pckbc_tag_t kbctag, pckbc_slot_t kbcslot, struct pckbd_internal *id) { - int table; + int table = 3; if (pckbc_xt_translation(kbctag)) { #ifdef DEBUG @@ -247,7 +247,7 @@ pckbd_set_xtscancode(pckbc_tag_t kbctag, } /* keep falling back until we hit a table that looks usable. */ - for (table = 3; table >= 1; table--) { + for (; table >= 1; table--) { u_char cmd[2]; #ifdef DEBUG printf("pckbd: trying table %d\n", table);