📄 keylocks.c
字号:
/*
* KEYLOCKS.C - Sets the NUMLOCK or SCROLL LOCK or CAPS LOCK on keyboard.
*
*
* PROGRAMMER: Martti Ylikoski
* CREATED: 23.8.1992
*/
static char *VERSION = "Version 1.0. Copyright (c) Martti Ylikoski, 1992." ;
/*
*/
static char *progname ;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define INCL_DOSDEVICES
#define INCL_DOSDEVIOCTL
#include <os2.h>
int main(int argc, char *argv[])
{
SHIFTSTATE ShiftState ;
USHORT ret ;
HFILE keyb ;
USHORT action ;
progname = argv[0] ;
printf("%s - Sets or clears NUMLOCK or CAPSLOCK or SCROLLLOCK on keyboard\n",progname) ;
puts(VERSION) ;
printf("Usage: %s [/C | /S ] + [NUMLOCK | CAPSLOCK | SCROLLLOCK ]\n", progname) ;
puts("E.g. KEYLOCKS /C NUMLOCK, would clear the NUM LOCK") ;
if (argc != 3 && argc != 1)
{
puts("Wrong number of arguments.") ;
return( 1 ) ;
}
if ((ret = DosOpen("KBD$", &keyb, &action, 0L, FILE_NORMAL, FILE_OPEN,
OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYREADWRITE, 0L)) != 0)
{
printf("%s: error in DosOpen\n", progname) ;
return( 1 ) ;
}
if ((ret = DosDevIOCtl(&ShiftState, 0L, 0x0073, 0x0004, keyb)) != 0)
{
printf("%s: error in DosDevIOCtl\n", progname) ;
return( 1 ) ;
}
if (argc == 3)
{
if ( toupper(argv[1][1]) == 'S')
{
if (strcmpi(argv[2], "CAPSLOCK") == 0)
{
ShiftState.fsState |= CAPSLOCK_ON ;
}
else
if (strcmpi(argv[2], "SCROLLLOCK") == 0)
{
ShiftState.fsState |= SCROLLLOCK_ON ;
}
else
if (strcmpi(argv[2], "NUMLOCK") == 0)
{
ShiftState.fsState |= NUMLOCK_ON ;
}
}
else
if ( toupper(argv[1][1]) == 'C')
{
if (strcmpi(argv[2], "CAPSLOCK") == 0)
{
ShiftState.fsState &= ~CAPSLOCK_ON ;
}
else
if (strcmpi(argv[2], "SCROLLLOCK") == 0)
{
ShiftState.fsState &= ~SCROLLLOCK_ON ;
}
else
if (strcmpi(argv[2], "NUMLOCK") == 0)
{
ShiftState.fsState &= ~NUMLOCK_ON ;
}
}
if ((ret = DosDevIOCtl(0L, &ShiftState, 0x0053, 0x0004, keyb)) != 0)
{
printf("%s: error in DosDevIOCtl\n", progname) ;
return( 1 ) ;
}
}
if ((ret = DosDevIOCtl(&ShiftState, 0L, 0x0073, 0x0004, keyb)) != 0)
{
printf("%s: error in DosDevIOCtl\n", progname) ;
return( 1 ) ;
}
puts("Keyboard status in effect:\n") ;
if (ShiftState.fsState & RIGHTSHIFT)
puts("Right shift key down.") ;
if (ShiftState.fsState & LEFTSHIFT)
puts("Left shift key down.") ;
if (ShiftState.fsState & CONTROL)
puts("Either CONTROL key down.") ;
if (ShiftState.fsState & ALT)
puts("Either ALT key down.") ;
if (ShiftState.fsState & SCROLLLOCK_ON)
puts("SCROLL LOCK mode turned on.") ;
if (ShiftState.fsState & NUMLOCK_ON)
puts("NUMLOCK mode turned on.") ;
if (ShiftState.fsState & CAPSLOCK_ON)
puts("CAPSLOCK mode turned on.") ;
if (ShiftState.fsState & INSERT_ON)
puts("INSERT mode turned on.") ;
if (ShiftState.fsState & LEFTCONTROL)
puts("Left CONTROL key down.") ;
if (ShiftState.fsState & RIGHTCONTROL)
puts("Right CONTROL key down.") ;
if (ShiftState.fsState & LEFTALT)
puts("Left ALT key down.") ;
if (ShiftState.fsState & RIGHTALT)
puts("Right ALT key down.") ;
if (ShiftState.fsState & SCROLLLOCK)
puts("SCROLL LOCK key down.") ;
if (ShiftState.fsState & NUMLOCK)
puts("NUMLOCK key down.") ;
if (ShiftState.fsState & CAPSLOCK)
puts("CAPSLOCK key down.") ;
if (ShiftState.fsState & SYSREQ)
puts("SYSREQ key down.") ;
return( 0 ) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -