[comp.sys.ibm.pc] One more time....

raa712@unh.UUCP (Richard A Arakelian) (02/01/89)

	Hello again,
			I posted something similar to this awhile back and
	    I either missed the response or didn't get one.  Could someone
	    tell me how to reassign the Ctrl key to the CAPS lock key and
	    vice - versa on a 101 enhanced keyboard?  Or could you send
	    me a list of references of where I could find out more about
	    it?

						     advTHANKSance,

							Rich

E-Mail   !uunet!unh!raa712  <- reported problems with getting here.
				Might be better off posting a response.

UNH Women's hockey:  11-2-0!!!   Go #14 && #12!!
----------------------------------------------------------------------------

ppa@hpldola.HP.COM (Paul P. Austgen) (02/03/89)

I'm sure there are programs to do just exactly what you want, but
this one allows you to change any keys to anything else that you
want to.  If you have access to a BB, try to find kbmap.  If yoiu
have the .COM file, you can edit the table with DEBUG and you
don't have to reassemble.  I find it especially useful to map
keys on old games for the XT over to my AT cursor keys.  I have
included a source listing below:


;*******************************************
;*                                         *
;*  KBMAP -- A program to translate scan   *
;*           codes on the PC/AT keyboard.  *
;*                                         *
;*        Written by: Alan D. Jones        *
;*                                         *
;*        Released to the public domain    *
;*        on Feb 27,1988.                  *
;*                                         *
;*******************************************

;This program must be converted to a "COM"
; file after linking.


.286c

XCODE	segment para public 'CODE'

	assume	cs:XCODE,ds:NOTHING,es:NOTHING,ss:NOTHING

	org	100h

start:	jmp	load

;This is a complete scan code translation table.
;The scan code received from the keyboard is used
; as an index into this table, and the byte found
; at "scantbl+<scan code>" is substituted and
; passed to the keyboard interrupt handler.
;CAUTION: if this table is modified, be sure to
; swap or substitute MATCHING PAIRS! Both the "make"
; code and the "break" code ( = make code + 80h )
; must be changed.

;<ctrl> key:       make = 1Dh, break = 9Dh
;<caps lock> key:  make = 3Ah, break = 0BAh
;The table as it stands exchanges the <ctrl> and
; <caps lock> key functions.

	org	104h

scantbl	DB 000H,001H,002H,003H,004H,005H,006H,007H
	DB 008H,009H,00AH,00BH,00CH,00DH,00EH,00FH
	DB 010H,011H,012H,013H,014H,015H,016H,017H
	DB 018H,019H,01AH,01BH,01CH,03AH,01EH,01FH
	DB 020H,021H,022H,023H,024H,025H,026H,027H
	DB 028H,029H,02AH,02BH,02CH,02DH,02EH,02FH
	DB 030H,031H,032H,033H,034H,035H,036H,037H
	DB 038H,039H,01DH,03BH,03CH,03DH,03EH,03FH
	DB 040H,041H,042H,043H,044H,045H,046H,047H
	DB 048H,049H,04AH,04BH,04CH,04DH,04EH,04FH
	DB 050H,051H,052H,053H,054H,055H,056H,057H
	DB 058H,059H,05AH,05BH,05CH,05DH,05EH,05FH
	DB 060H,061H,062H,063H,064H,065H,066H,067H
	DB 068H,069H,06AH,06BH,06CH,06DH,06EH,06FH
	DB 070H,071H,072H,073H,074H,075H,076H,077H
	DB 078H,079H,07AH,07BH,07CH,07DH,07EH,07FH
	DB 080H,081H,082H,083H,084H,085H,086H,087H
	DB 088H,089H,08AH,08BH,08CH,08DH,08EH,08FH
	DB 090H,091H,092H,093H,094H,095H,096H,097H
	DB 098H,099H,09AH,09BH,09CH,0BAH,09EH,09FH
	DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H
	DB 0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFH
	DB 0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H
	DB 0B8H,0B9H,09DH,0BBH,0BCH,0BDH,0BEH,0BFH
	DB 0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H
	DB 0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFH
	DB 0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H
	DB 0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFH
	DB 0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H
	DB 0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFH
	DB 0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H
	DB 0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH
	
old15		dd	0

;-------------------------------------------

;Interrupt 15h function 4Fh is called (on MOST AT bios's)
; by the keyboard interrupt handler, with the scan code
; passed in the AL register. A program may trap int 15h
; function 4Fh and examine or alter the scan code BEFORE
; it is processed by the handler. If int 15h returns with
; carry set, processing proceeds. If it returns with carry
; clear, processing is skipped and the bios routine ignores
; the key press.

int15		proc	far

		pushf

;is this the scan code call?

		cmp	ah,4Fh
		je	scancode

;no, act as if we were not here

		popf
		jmp	cs:old15

;it is the scan code call, run it thru the translator

scancode:	popf
		push	ds
		push	bx
		push	cs
		pop	ds
		lea	bx,scantbl
		xlatb
		pop	bx
		pop	ds

;set carry so scan code is processed

		stc
		iret

int15		endp

;-------------------------------------------

;Initialization code -- not needed after program
; becomes memory-resident.

cutoff		label	byte

msg1		db	'This program only runs '
		db	'on PC/AT type machines.'
		db	0Dh,0Ah,24h

load:

;Make sure this is a PC/AT

		push	sp
		pop	ax
		cmp	ax,sp
		jne	wrongmachine
		mov	ax,0F000h
		mov	es,ax
		cmp	byte ptr es:[0FFFEh],0FCh
		jne	wrongmachine


;Get old interrupt vector

		mov	ax,3515h
		int	21h
		mov	word ptr old15,bx
		mov	word ptr old15+2,es

;Install new interrupt vector

		mov	ax,2515h
		mov	dx,offset int15
		int	21h

;Terminate and stay resident

		mov	ax,3100h
		lea	dx,cutoff
		add	dx,0Fh
		shr	dx,4
		int	21h

;Display "wrong machine" error message and exit

wrongmachine:	lea	dx,msg1
		mov	ah,9
		int	21h
		mov	ax,4C01h
		int	21h

XCODE	ends
	end	start

toma@tekgvs.LABS.TEK.COM (Tom Almy) (02/08/89)

In article <897@unh.UUCP> raa712@unh.UUCP (Richard A Arakelian) writes:

>	Hello again,
>			I posted something similar to this awhile back and
>	    I either missed the response or didn't get one.  Could someone
>	    tell me how to reassign the Ctrl key to the CAPS lock key and
>	    vice - versa on a 101 enhanced keyboard?  [...]

Here is my monthly posting (:-() of a TSR that fixes this problem.  Luckily,
many keyboard manufacturers are putting switches on the back to exchange
these keys.  Also the Northgate Omnikey/102 neatly fixes this and other 
problems.

This program, when placed in your AUTOEXEC.BAT file, makes the caps lock
key into an additional control key.  To do the caps lock function you hit
caps lock with the right shift key depressed.  This program won't work with
older PC's -- its AT or PS/2 only.

Tom Almy
toma@tekgvs.labs.tek.com

begin 666 kbdr.com
MZ0@`30(`````"@"\FO_'!@4!F/^]_O^)+@<!_.A@`+@`3,TA`````(#\3W4M
M/#IU&@8NC@9^`";V!A<$`74"L!VB?0`'^2[_+H``/+IU"Z!]``2`^2[_+H``
M^2[_+H``7EA:6QZ.V[0ES2$?_^:T-<TAB=B,P\.Z#`"X`#'-(>A]`#1#05!3
M3$]#2R`M/B!#5%),+"`@4DE'2%132$E&5"`K($-!4%-,3T-+("T^($-!4%-,
M3T-+Z%<`Z$(`"T)Y(%1O;2!!;&UYZ$4`QP9^````N!4`Z);_HR0!B1XF`;HD
M`5*Z@`!2NCP`4NA1`(S(4+J$`%*Z%0!2Z&3_Z7C_6XH',.1#4U`!PUA:4XG3
MZ2$`N`T`Z`D`N`H`Z0,``0``HA\"M$"Y`0"Z'P*+'AT"S2'#B<&)VHL>'0*T
20,TAPUM97U[C!HS8CL#SI/_C
`
end

keithe@tekgvs.LABS.TEK.COM (Keith Ericson) (02/08/89)

In article <4603@tekgvs.LABS.TEK.COM> toma@tekgvs.LABS.TEK.COM (Tom Almy) writes:

Re: CAPS LOCK KEY <==> Ctrl key

>Here is my monthly posting (:-() of a TSR that fixes this problem...

Hey Tom -

	It's short enough: just use it for your .signature file.
I've seen some (.sig files) a lot longer and a helluva lot less
useful.

keith (in the office next door) ericson