home *** CD-ROM | disk | FTP | other *** search
- @echo off
- REM KeyState - Macro to set, unset, or display the state of keys.
- cenvi %0.bat %1 %2 %3 %4
- GOTO CENVI_EXIT
-
- #define NUMLOCK_BIT 0x20
- #define CAPSLOCK_BIT 0x40
- #define INSERT_BIT 0x80
- #define KEYS_SEGMENT 0x0040
- #define KEYS_OFFSET 0x0017
- KeysAddress = Address(KEYS_SEGMENT,KEYS_OFFSET)
-
- main(argc,argv)
- {
- // check that the input is valid
- if ( argc != 3
- || ( argv[1][1] != 0 || !strchr("+?-",argv[1][0]) )
- || ( strnicmp("CAP",argv[2],3)
- && strnicmp("NUM",argv[2],3)
- && strnicmp("INS",argv[2],3) ) ) {
- Instructions()
- } else {
- // determine whether to apply to CapsLock or NumLock
- if ( !strnicmp("CAP",argv[2],3) ) {
- KeyName = "CapsLock", KeyBit = CAPSLOCK_BIT
- }
- else if ( !strnicmp("NUM",argv[2],3) ) {
- KeyName = "NumLock", KeyBit = NUMLOCK_BIT
- } else {
- KeyName = "Insert", KeyBit = INSERT_BIT
- }
- // perform action on the selected key
- CurrentState = peek(KeysAddress)
- switch( argv[1][0] ) {
- case '+': // Set Key ON
- poke(KeysAddress,CurrentState | KeyBit)
- break
- case '-': // Turn KEY OFF
- poke(KeysAddress,CurrentState & ~KeyBit)
- break
- case '?': // display and return state of key
- printf("%s is currently set %s.\n",KeyName,CurrentState & KeyBit ? "ON" : "OFF")
- return( CurrentState & KeyBit ? 1 : 0 )
- }
- }
- }
-
-
- Instructions()
- {
- printf("\a\n")
- printf("KeyState - Set, Clear, or Show the keyboard state of NumLock or CapsLock\n");
- printf("\n");
- printf("SYNTAX: KeyState < + | - | ? > < CAP | NUM | INS >\n");
- printf("\n");
- printf("Where: + Set KeyState ON\n");
- printf(" - Set KeySTate OFF\n");
- printf(" ? Display current Key State, and return ERRORLEVEL 1 if set\n");
- printf(" and ERRORLEVEL 0 if clear\n");
- printf(" NUM Apply command < + | - | ? > to the NumLock key\n");
- printf(" CAP Apply command < + | - | ? > to the CapsLock key\n");
- printf(" INS Apply command < + | - | ? > to the Insert key\n");
- printf("\n");
- printf("Examples: KeyState + Num Turn on the Numlock key\n");
- printf(" KeyState - Cap Turn of the CapsLock key\n");
- printf(" KeyState ? Num Show state of NumLock, return ERRORLEVEL if set\n");
- printf("\n")
- }
-
- :CENVI_EXIT