snskbd.c

来自「gsac程序包」· C语言 代码 · 共 126 行

C
126
字号
/* File>>> snskbd.c---- %M% -- version %I% (IMEC)            last updated: %E%---- Copyright (c) 1993-- IMEC vzw-- Kapeldreef 75-- B-3001 LEUVEN-- BELGIUM---- Author   : A. Demaree---- Date     : February 1, 1993---- Function :---- Comment  :---- Review   :--*//*-------------------------------------------------------------------------------- Global include files------------------------------------------------------------------------------*/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <X11/Xlib.h>/*-------------------------------------------------------------------------------- Local include files------------------------------------------------------------------------------*/#include "xviglocal.h"/*-------------------------------------------------------------------------------- Static variable declarations------------------------------------------------------------------------------*//*-------------------------------------------------------------------------------- Local function declarations------------------------------------------------------------------------------*//*------------------------------------------------------------------------------------------------------------------------------------------------------------------*/void XviG_SetSenseKbd(int sense_char){  /*  -- Send the ClientMessage to set the `sense keyboard' functionality on/off  */  if (sense_char)  {    XviG_event.xclient.message_type = XviG_MESSAGE_SENSEKBD_ON;    XviG_event.xclient.data.b[0] = (char) sense_char;  }  else    XviG_event.xclient.message_type = XviG_MESSAGE_SENSEKBD_OFF;  XviG_event.xclient.format = 8;  XviG_event.type = ClientMessage;  if (!XSendEvent(XviG_display, XviG_window, False, NoEventMask, &XviG_event))    fprintf(stderr, "ERROR : Cannot send ClientMessage 'sense_kbd_on/off'.\n");}/*------------------------------------------------------------------------------------------------------------------------------------------------------------------*/int XviG_SenseKbd(void){  int sense_kbd;  /*  -- First send the ClientMessage to ask for a `sense keyboard'  */  XviG_event.xclient.message_type = XviG_MESSAGE_SENSEKBD;  XviG_event.xclient.format = 8;  XviG_event.type = ClientMessage;  if (!XSendEvent(XviG_display, XviG_window, False, NoEventMask, &XviG_event))  {    fprintf(stderr, "ERROR : Cannot send ClientMessage 'sense_kbd'.\n");    return 0;  }  /*  -- Now ask for the `sense keyboard' event  */  while (1)  {    XNextEvent(XviG_display, &XviG_event);    if (XviG_event.type == ClientMessage)    {      if (XviG_event.xclient.message_type == XviG_MESSAGE_SENSEKBD)      {        sense_kbd = XviG_event.xclient.data.b[0];        break;      }      else        printf("WARNING : Wrong ClientMessage received .....\n");    }    /*    else      printf("WARNING : Other event received .....\n");    */  }  return sense_kbd;}

⌨️ 快捷键说明

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