⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbd.c

📁 使用于OS/2下的小工具的C源程序,使用于OS/2下的小工具的C源程序
💻 C
字号:
/*
* KBD.C - Program to determine flags and codes generated from kbdsubsystem.
*
*
* PROGRAMMER:	    Martti Ylikoski
* CREATED:	    6.8.1991
*/
static char *VERSION = "Version  1.0. Copyright (c) Martti Ylikoski, 1990, 1991." ;
/*
*/

static char *progname ;

#include <stdio.h>
#include <string.h>
#include <memory.h>
#include <time.h>
#include <process.h>
#include <stddef.h>
#include <param.h>
#include <paramstd.h>

#define INCL_DOS
#define INCL_KBD
#define INCL_VIO
#define INCL_DOSPROCESS
#include <os2.h>
extern unsigned long pflags ;

ParamEntry pentry[12] = {
     "P", &ParamSetPause, 0,
     "F", &ParamSetFold, 0,
     "V", &ParamSetVerbose, 1,
     "R", &ParamSetReport, 0,
     "S", &ParamSetSubDirs, 0,
     "?", &ParamSetHelp, 1,
     "H", &ParamSetHelp, 1,
     "NOD", &ParamSetNoDefault, 0,
     "TEST", &ParamSetTest, 1,
     "Y", &ParamSetYes, 1,
     "N", &ParamSetTest, 1,
     "\0", NULL, 0
} ;

ParamBlock params = {
    "/-",   IGNORECASE | NOPRIORITY | NOTRIGGERSALLOWED ,
    pentry
} ;


typedef struct kbdpacket
{
   unsigned monflags ;
   KBDKEYINFO kbdkeyinfo ;
   unsigned ddflags ;
} KBDBUF ;

KBDBUF kbdbuf ;


int main(int argc, char *argv[])
{
USHORT ret ;
KBDKEYINFO  kbdkey ;
KBDINFO kbdinfo ;

   progname = argv[0] ;

   ParamHandle(&params, &argc, argv) ;

   KbdGetStatus( &kbdinfo, 0) ;
   kbdinfo.fsMask = KEYBOARD_BINARY_MODE | KEYBOARD_ECHO_OFF ; // | KEYBOARD_SHIFT_REPORT ;
   KbdSetStatus( &kbdinfo, 0) ;

   printf("%s - Display keycodes, scancodes and flags from keyboard.\n", progname) ;
   puts(VERSION) ;

   if (pflags & PA_HELP)
      return( 0 ) ;

   while ( TRUE )
   {
      ret = KbdCharIn(&kbdkey, IO_WAIT, 0) ;
      printf("---------------------------------------\n") ;
      printf("chChar (character) = %c\nchScan (character) = %c\n", kbdkey.chChar, kbdkey.chScan) ;
      printf("chChar (decimal)   = %d\nchScan (decimal)   = %d\n", kbdkey.chChar, kbdkey.chScan) ;
      if (kbdkey.fbStatus & SHIFT_KEY_IN)
	 printf("fbstatus = SHIFT_KEY_IN\n") ;
      if (kbdkey.fbStatus & CONVERSION_REQUEST)
	 printf("fbstatus = CONVERSION_REQUEST\n") ;
      if (kbdkey.fbStatus & FINAL_CHAR_IN)
	 printf("fbstatus = FINAL_CHAR_IN\n") ;
      if (kbdkey.fbStatus & INTERIM_CHAR_IN)
	 printf("fbstatus = INTERIM_CHAR_IN\n") ;
//	if (kbdkey.fbStatus & EXTENDED_CODE)
//	 printf("fbstatus = EXTENDED_CODE\n") ;

    if (kbdkey.fsState & RIGHTSHIFT)
	 printf("fsState = RIGHTSHIFT\n") ;

    if (kbdkey.fsState & LEFTSHIFT)
	 printf("fsState = LEFTSHIFT\n") ;

    if (kbdkey.fsState & CONTROL)
	 printf("fsState = CONTROL\n") ;

    if (kbdkey.fsState & ALT)
	 printf("fsState = ALT\n") ;

    if (kbdkey.fsState & SCROLLLOCK_ON)
	 printf("fsState = SCROLLLOCK_ON\n") ;

    if (kbdkey.fsState & NUMLOCK_ON)
	 printf("fsState = NUMLOCK_ON\n") ;

    if (kbdkey.fsState & CAPSLOCK_ON)
	 printf("fsState = CAPSLOCK_ON\n") ;

    if (kbdkey.fsState & INSERT_ON)
	 printf("fsState = INSERT_ON\n") ;

    if (kbdkey.fsState & LEFTCONTROL)
	 printf("fsState = LEFTCONTROL\n") ;

    if (kbdkey.fsState & LEFTALT)
	 printf("fsState = LEFTALT\n") ;

    if (kbdkey.fsState & RIGHTCONTROL)
	 printf("fsState = RIGHTCONTROL\n") ;

    if (kbdkey.fsState & RIGHTALT)
	 printf("fsState = RIGHTALT\n") ;

    if (kbdkey.fsState & SCROLLLOCK)
	 printf("fsState = SCROLLLOCK\n") ;

    if (kbdkey.fsState & NUMLOCK)
	 printf("fsState = NUMLOCK\n") ;

    if (kbdkey.fsState & CAPSLOCK)
	 printf("fsState = CAPSLOCK\n") ;

    if (kbdkey.fsState & SYSREQ)
	 printf("fsState = SYSREQ\n") ;

   }

   return( 0 ) ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -