29-Jan-96 5:08:06-GMT,6176;000000000015 Received: from skinner.cs.uoregon.edu (skinner.cs.uoregon.edu [128.223.4.13]) by watsun.cc.columbia.edu (8.7.3/8.7.3) with SMTP id AAA08834 for ; Mon, 29 Jan 1996 00:07:59 -0500 (EST) Received: from majestix.cs.uoregon.edu by skinner.cs.uoregon.edu with SMTP id AA15611 (5.65/IDA-1.4.2 for fdc@watsun.cc.columbia.edu); Sun, 28 Jan 96 21:07:51 -0800 Message-Id: <9601290507.AA15611@skinner.cs.uoregon.edu> To: Frank da Cruz Subject: Re: ctrl2cap.vxd In-Reply-To: Your message of "Sun, 28 Jan 1996 11:19:15 EST." Date: Sun, 28 Jan 1996 21:07:50 -0800 From: mark eugene russinovich Hi, Frank, The status of ctrl2cap is that I wrote it -it is freeware. Here is the source. The only restriction is that my consent is required for commercial use. Note that this source only changes caps-lock into control - I have no use for caps-lock. -Mark ---------------------------------------------------------------------- ;**************************************************************************** ; * ; CTRL2CAP * ; * ; Copyright (c) 1995 Mark Russinovich * ; * ; You may not use this for commercial purposes. * ; * ;**************************************************************************** ; * ; CTRL2CAP: Switches the caps and control key universally (no exceptions) * ; * ;**************************************************************************** ;=========================================================================== page ,132 title ctrl2cap - ctrl2cap VxD name ctrl2cap.vxd ;=========================================================================== ; ; Module: ; Contains everything ; ;=========================================================================== ; ; Functional Description: - switches ctrl and caps universally (we don't ; want the DOS ctrl2cap because it will defeat ; the purpose) ; ;============================================================================ ;============================================================================ ; I N C L U D E S ;============================================================================ .386p .xlist include vmm.inc include vwin32.inc include vkd.inc include vmd.inc include debug.inc include ctrl2cap.inc .list ;============================================================================ ; I N I T I A L I Z A T I O N D A T A ;============================================================================ VXD_IDATA_SEG VXD_IDATA_ENDS ;============================================================================ ; P U B L I C D A T A ;============================================================================ VXD_LOCKED_DATA_SEG ; Previous routine on keyboard hook Keyboard_Proc dd 0 VXD_LOCKED_DATA_ENDS ;============================================================================ ; D E V I C E D E C L A R A T I O N ;============================================================================ VXD_LOCKED_CODE_SEG ; registration block DECLARE_VIRTUAL_DEVICE CTRL2CAP, \ CTRL2CAP_MAJOR_VERSION, \ CTRL2CAP_MINOR_VERSION, \ Ctrl2cap_Control,, \ UNDEFINED_INIT_ORDER ;============================================================================ ; M A I N C O D E ;============================================================================ ;============================================================================ ; ; Ctrl2cap_Control - Device control procedure for the VxD. Dispatches all ; Windows VxD messages. ; ; Exit: If carry clear then ; Successful ; else ; Control call failed ; ; Destroys: EAX, EBX, ECX, EDX, ESI, EDI, Flags ; ;============================================================================ public Ctrl2cap_Control Ctrl2cap_Control PROC NEAR Control_Dispatch INIT_COMPLETE, Ctrl2cap_Device_Init clc ret Ctrl2cap_Control ENDP VXD_LOCKED_CODE_ENDS ;============================================================================== ; P A G E A B L E C O D E ;============================================================================== VXD_PAGEABLE_CODE_SEG ;============================================================================ ; ; Ctrl2cap - keyboard hook switches the control and caps when it sees those ; keys come through. We've got to switch both the up key and the ; down key. ; ; Entry: CL - Scancode of key pressed. ; ;============================================================================ BeginProc Ctrl2cap, Hook_Proc Keyboard_Proc mov dl, cl and dl, 7Fh cmp dl, 3Ah jnz chain and cl, 80h or cl, 1Dh ; call the previous hooker chain: call Keyboard_Proc clc ; let the key through ret EndProc Ctrl2cap VXD_PAGEABLE_CODE_ENDS ;============================================================================ ; D E V I C E I N I T I A L I Z A T I O N C O D E ;============================================================================ VXD_ICODE_SEG ;============================================================================ ; ; Ctrl2cap_Device_Init ; ; ; Entry: ebx -> System VM handle (not used) ; edx -> Reference data from real mode init portion ; ; Exit: If successful then ; Carry flag is clear ; else ; Carry flag is set to indicate an error -- Device not initialized ; ;============================================================================ BeginProc Ctrl2cap_Device_Init GetVxDServiceOrdinal eax, VKD_Filter_Keyboard_Input mov esi, offset32 Ctrl2cap VMMCall Hook_Device_Service mov Keyboard_Proc, esi clc ret EndProc Ctrl2cap_Device_Init VXD_ICODE_ENDS end 30-Jan-96 7:54:22-GMT,914;000000000005 Received: from skinner.cs.uoregon.edu (skinner.cs.uoregon.edu [128.223.4.13]) by watsun.cc.columbia.edu (8.7.3/8.7.3) with SMTP id CAA11690 for ; Tue, 30 Jan 1996 02:54:19 -0500 (EST) Received: from majestix.cs.uoregon.edu by skinner.cs.uoregon.edu with SMTP id AA29998 (5.65/IDA-1.4.2 for fdc@watsun.cc.columbia.edu); Mon, 29 Jan 96 23:54:12 -0800 Message-Id: <9601300754.AA29998@skinner.cs.uoregon.edu> To: Frank da Cruz Subject: Re: ctrl2cap.vxd In-Reply-To: Your message of "Mon, 29 Jan 1996 10:37:36 EST." Date: Mon, 29 Jan 1996 23:54:11 -0800 From: mark eugene russinovich >Terrific, thanks. Would you have any objection to our distributing it >with Kermit 95, with credit of course? Info about Kermit 95 is at: That would be fine. Thanks, -Mark 30-Jan-96 18:01:42-GMT,1148;000000000001 Received: from skinner.cs.uoregon.edu (skinner.cs.uoregon.edu [128.223.4.13]) by watsun.cc.columbia.edu (8.7.3/8.7.3) with SMTP id NAA10218 for ; Tue, 30 Jan 1996 13:01:40 -0500 (EST) Received: from majestix.cs.uoregon.edu by skinner.cs.uoregon.edu with SMTP id AA05107 (5.65/IDA-1.4.2 for fdc@watsun.cc.columbia.edu); Tue, 30 Jan 96 10:01:37 -0800 Message-Id: <9601301801.AA05107@skinner.cs.uoregon.edu> To: Frank da Cruz Subject: Re: ctrl2cap.vxd In-Reply-To: Your message of "Tue, 30 Jan 1996 12:06:11 EST." Date: Tue, 30 Jan 1996 10:01:36 -0800 From: mark eugene russinovich Okay, Frank, here it is: ;**************************************************************************** ; ; Ctrl2cap header file ; ;**************************************************************************** ; Ctrl2cap Info Equates Ctrl2capName EQU <'CTRL2CAP VXD '> ;Must be 16 chars Ctrl2capRev EQU 00H ; Ctrl2cap version equates CTRL2CAP_MAJOR_VERSION EQU 1 CTRL2CAP_MINOR_VERSION EQU 0