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

📄 kb_stuff.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/***  KB_STUFF.C - Functions to stuff characters and/or strings into a PC's**               (BIOS) keyboard buffer.****  Original Copyright 1988-1991 by Bob Stout as part of**  the MicroFirm Function Library (MFL)****  The user is granted a free limited license to use this source file**  to create royalty-free programs, subject to the terms of the**  license restrictions specified in the LICENSE.MFL file.*/#include <dos.h>#include "sniptype.h"#include "pchwio.h"#include "snipkbio.h"static unsigned head, tail, start, end;static int idx = 0;static unsigned short keystack[16][2];/***  ungetkey()****  Stuffs characters into the keyboard buffer.****  Parameters: 1 - Extended character to stuff****  Returns: Success_ or EOF****  Note: This function assumes that the keyboard buffer is in**        the normal (for IBM) location of 40:1E.***/int ungetkey(unsigned short key){      int count;      head  = Peekw(0x40, 0x1a);      tail  = Peekw(0x40, 0x1c);      start = Peekw(0x40, 0x80);      end   = Peekw(0x40, 0x82);      count = tail - head;      if (0 > count)            count += (16 * sizeof(unsigned));      count >>= 1;      if (15 > count)      {            disable();            keystack[idx][0] = Peekw(0x40, tail);            keystack[idx][1] = tail;            Pokew(0x40, tail, key);            tail += sizeof(unsigned);            if (end <= tail)                  tail = start;            Pokew(0x40, 0x1c, tail);            enable();            return key;      }      return EOF;}/***  KB_stuff()****  Stuffs strings into the keyboard buffer.****  Parameters: 1 - String to stuff****  Returns: Success_ if successful**           Error_   in case of error, plus keyboard buffer is**                    restored****  Note: This function assumes that the keyboard buffer is in**        the normal (for IBM) location of 40:1E.*/int KB_stuff(char *str){      int ercode = Success_;      idx = 0;      while (*str)      {            if (EOF == ungetkey((unsigned)(*str++)))            {                  disable();                  while (0 <= --idx)                  {                        tail = keystack[idx][1];                        Pokew(0x40, tail, keystack[idx][0]);                  }                  Pokew(0x40, 0x1c, tail);                  enable();                  ercode = Error_;                  break;            }            else  ++idx;      }      idx = 0;      return ercode;}

⌨️ 快捷键说明

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