Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!bruce.cs.monash.edu.au!monu6!aggedor.rmit.OZ.AU!minyos.xx.rmit.OZ.AU!s902113 From: s902113@minyos.xx.rmit.OZ.AU (Luke Mewburn) Newsgroups: comp.os.386bsd.bugs Subject: [HACK:] fix CAPSLOCK for good... Date: 20 Jul 1993 15:11:56 GMT Organization: Not RMIT (this is an implicit disclaimer :) Lines: 220 Message-ID: <22h1vs$6a6@aggedor.rmit.OZ.AU> Reply-To: zak@rmit.edu.au NNTP-Posting-Host: minyos.xx.rmit.oz.au Summary: map capslock to ctrl, rshift+caps to caps Keywords: netbsd, 386bsd, hack, capslock Recently I obtained a very old DOS TSR (330 bytes long) which mapped the capslock key to ctrl (another control key), and to get caps, you have to hold right shift with caps. I like this alot (after many times of accidently hitting caps when I meant shift, tab, or A), and a ctrl key there is useful. So, I proceed to hack pccons.c (took about 30 minutes all up, including working out how the k/b routines worked). I provide the following context diff to patch this in, (/sys/i386/isa/pccons.c is the full file). This was done off the NetBSD 0.8 source, but should work with all other versions of 386bsd. You may have to force the patch in, cause I changed the source slightly before backing it up (undefining FAT_CURSOR), but it shouldn't be too hard. I've been running this for a few days without problems - but I don't have XSERVER compiled and didn't try that.. Should work as advertised for that case anyway. diff follows: *** ORIG_pccons.c Mon Jul 19 13:11:57 1993 --- pccons.c Mon Jul 19 13:13:02 1993 *************** *** 50,55 **** --- 50,58 ---- * minor. * 14 Mar 93 Chris G. Demetriou Moved pg() to i386/cons.c, code * cleanup, removed ctl-alt-del. + * 18 Jul 93 Luke Mewburn if NO_CAPSLOCK defined, capslock + * acts as CTRL (unless RSHIFT held + * down) (Email: <zak@rmit.edu.au>) */ static char rcsid[] = "/b/source/CVS/src/sys.386bsd/i386/isa/pccons.c,v 1.6 1993/04/11 10:16:54 deraadt Exp"; *************** *** 121,128 **** }; /* block cursor so wfj does not go blind on laptop hunting for - the verdamnt cursor -wfj */ #define FAT_CURSOR #define COL 80 #define ROW 25 --- 124,136 ---- }; /* block cursor so wfj does not go blind on laptop hunting for #define FAT_CURSOR + the verdamnt cursor -wfj */ + + /* Zak, 930718: ignore that damn capslock key. + */ + #define NO_CAPSLOCK + #define COL 80 #define ROW 25 *************** *** 1229,1235 **** char ctrl[CODE_SIZE]; } Scan_def; ! #define SHIFT 0x0002 /* keyboard shift */ #define ALT 0x0004 /* alternate shift -- alternate chars */ #define NUM 0x0008 /* numeric shift cursors vs. numeric */ #define CTL 0x0010 /* control shift -- allows ctl function */ --- 1237,1244 ---- char ctrl[CODE_SIZE]; } Scan_def; ! #define RSHIFT 0x0001 /* right keyboard shift */ ! #define LSHIFT 0x0002 /* left keyboard shift */ #define ALT 0x0004 /* alternate shift -- alternate chars */ #define NUM 0x0008 /* numeric shift cursors vs. numeric */ #define CTL 0x0010 /* control shift -- allows ctl function */ *************** *** 1284,1290 **** ASCII, ";", ":", ";", /* 39 ; */ ASCII, "'", "\"", "'", /* 40 ' */ ASCII, "`", "~", "`", /* 41 ` */ ! SHIFT, "", "", "", /* 42 shift */ ASCII, "\\", "|", "\034", /* 43 \ */ ASCII, "z", "Z", "\032", /* 44 z */ ASCII, "x", "X", "\030", /* 45 x */ --- 1293,1299 ---- ASCII, ";", ":", ";", /* 39 ; */ ASCII, "'", "\"", "'", /* 40 ' */ ASCII, "`", "~", "`", /* 41 ` */ ! LSHIFT, "", "", "", /* 42 shift */ ASCII, "\\", "|", "\034", /* 43 \ */ ASCII, "z", "Z", "\032", /* 44 z */ ASCII, "x", "X", "\030", /* 45 x */ *************** *** 1296,1302 **** ASCII, ",", "<", "<", /* 51 , */ ASCII, ".", ">", ">", /* 52 . */ ASCII, "/", "?", "\177", /* 53 / */ ! SHIFT, "", "", "", /* 54 shift */ KP, "*", "*", "*", /* 55 kp * */ ALT, "", "", "", /* 56 alt */ ASCII, " ", " ", " ", /* 57 space */ --- 1305,1311 ---- ASCII, ",", "<", "<", /* 51 , */ ASCII, ".", ">", ">", /* 52 . */ ASCII, "/", "?", "\177", /* 53 / */ ! RSHIFT, "", "", "", /* 54 shift */ KP, "*", "*", "*", /* 55 kp * */ ALT, "", "", "", /* 56 alt */ ASCII, " ", " ", " ", /* 57 space */ *************** *** 1431,1438 **** update_led(); break; case CAPS: ! caps ^= 1; ! update_led(); break; case SCROLL: scroll ^= 1; --- 1440,1452 ---- update_led(); break; case CAPS: ! #ifdef NO_CAPSLOCK ! if (shift_down == RSHIFT) ! #endif ! { ! caps ^= 1; ! update_led(); ! } break; case SCROLL: scroll ^= 1; *************** *** 1489,1495 **** dt = dt & 0x7f; switch (scan_codes[dt].type) { ! case SHIFT: shift_down = 0; break; case ALT: --- 1503,1510 ---- dt = dt & 0x7f; switch (scan_codes[dt].type) { ! case LSHIFT: ! case RSHIFT: shift_down = 0; break; case ALT: *************** *** 1498,1503 **** --- 1513,1524 ---- case CTL: ctrl_down = 0; break; + #ifdef NO_CAPSLOCK + case CAPS: + if (shift_down != RSHIFT) + ctrl_down = 0; + break; + #endif } } else *************** *** 1516,1523 **** update_led(); break; case CAPS: ! caps ^= 1; ! update_led(); break; case SCROLL: scroll ^= 1; --- 1537,1551 ---- update_led(); break; case CAPS: ! #ifdef NO_CAPSLOCK ! if (shift_down == RSHIFT) { ! #endif ! caps ^= 1; ! update_led(); ! #ifdef NO_CAPSLOCK ! } else ! ctrl_down = 1; ! #endif break; case SCROLL: scroll ^= 1; *************** *** 1527,1534 **** /* * Non-locking keys */ ! case SHIFT: ! shift_down = 1; break; case ALT: alt_down = 0x80; --- 1555,1563 ---- /* * Non-locking keys */ ! case LSHIFT: ! case RSHIFT: ! shift_down = scan_codes[dt].type; break; case ALT: alt_down = 0x80; -- `Aah ... Yes, and how does madam wish to pay?' Luke Mewburn [Zak] She slapped her credit card on the counter. <zak@rmit.edu.au> `Eventually.' - Lady Sharrow, in Iain M. Banks' `Against a Dark Background'