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

📄 keyxdef.c

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 C
📖 第 1 页 / 共 2 页
字号:
/* {{{ Copyright */

/* Additional keyboard support routines.

   Copyright (C) 1998 the Free Software Foundation.

   Written by: 1998, Gyorgy Tamasi

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */

/* }}} */

/*
 * PURPOSE:
 *
 *   We would like to support the direct ALT-?/META-? and some other 'extra'
 *   keyboard functionality provided by some terminals under some OSes (and
 *   not supported by the 'learn keys...' facility of 'mc'.
 *   (First target platform: QNX.)
 *
 * REMARK:
 *
 *   Implementation strategy: we don't want to rely on a specific terminal
 *   information database management API (termcap,terminfo,SLang,...), so we
 *   try to define a superset of the possible key identifiers here.
 *
 */
#include <config.h>
#include "mouse.h" /* required before key.h */
#include "key.h"
#include "myslang.h"


#ifdef __QNX__

/* select implementation: use QNX/term interface */
#define __USE_QNX_TI

/* implementation specific _TE() definition */
#ifdef __USE_QNX_TI

/* include QNX/term.h (not NCURSES/term.h!) */
#if __WATCOMC__ > 1000
    #include <sys/term.h>
#else
    #include <term.h>
#endif
#include <stdlib.h> /* getenv() */

/* fieldname -> index conversion */
#define __QTISX(_qtisn) \
	(((int)(&((struct _strs*)0)->_qtisn))/sizeof(charoffset))

/* define the OS/implementation-specific __TK() format */
#define __TK(_tis,_tcs,_tisx,_qtisn)  __QTISX(_qtisn)

#endif /* __USE_QNX_TI */

#endif /* __QNX__ */


/* {{{ */

/* general key definitions:
 *
 * format:
 *
 *   terminfo name,
 *   termcap name,
 *   index in the terminfo string table (ncurses),
 *   field name in the QNX terminfo strings struct
 */

#define Key_backspace   __TK("kbs",   "kb",  55, _ky_backspace )
#define Key_catab       __TK("ktbc",  "ka",  56, _ky_catab )
#define Key_clear       __TK("kclr",  "kC",  57, _ky_clear )
#define Key_ctab        __TK("kctab", "kt",  58, _ky_ctab )
#define Key_dc          __TK("kdch1", "kD",  59, _ky_dc )
#define Key_dl          __TK("kdl1",  "kL",  60, _ky_dl )
#define Key_down        __TK("kcud1", "kd",  61, _ky_down )
#define Key_eic         __TK("krmir", "kM",  62, _ky_eic )
#define Key_eol         __TK("kel",   "kE",  63, _ky_eol )
#define Key_eos         __TK("ked",   "kS",  64, _ky_eos )
#define Key_f0          __TK("kf0",   "k0",  65, _ky_f0 )
#define Key_f1          __TK("kf1",   "k1",  66, _ky_f1 )
#define Key_f10         __TK("kf10",  "k;",  67, _ky_f10 )
#define Key_f2          __TK("kf2",   "k2",  68, _ky_f2 )
#define Key_f3          __TK("kf3",   "k3",  69, _ky_f3 )
#define Key_f4          __TK("kf4",   "k4",  70, _ky_f4 )
#define Key_f5          __TK("kf5",   "k5",  71, _ky_f5 )
#define Key_f6          __TK("kf6",   "k6",  72, _ky_f6 )
#define Key_f7          __TK("kf7",   "k7",  73, _ky_f7 )
#define Key_f8          __TK("kf8",   "k8",  74, _ky_f8 )
#define Key_f9          __TK("kf9",   "k9",  75, _ky_f9 )
#define Key_home        __TK("khome", "kh",  76, _ky_home )
#define Key_ic          __TK("kich1", "kI",  77, _ky_ic )
#define Key_il          __TK("kil1",  "kA",  78, _ky_il )
#define Key_left        __TK("kcub1", "kl",  79, _ky_left )
#define Key_ll          __TK("kll",   "kH",  80, _ky_ll )
#define Key_npage       __TK("knp",   "kN",  81, _ky_npage )
#define Key_ppage       __TK("kpp",   "kP",  82, _ky_ppage )
#define Key_right       __TK("kcuf1", "kr",  83, _ky_right )
#define Key_sf          __TK("kind",  "kF",  84, _ky_sf )
#define Key_sr          __TK("kri",   "kR",  85, _ky_sr )
#define Key_stab        __TK("khts",  "kT",  86, _ky_stab )
#define Key_up          __TK("kcuu1", "ku",  87, _ky_up )
#define Key_a1          __TK("ka1",   "K1", 139, _ky_a1 )
#define Key_a3          __TK("ka3",   "K3", 140, _ky_a3 )
#define Key_b2          __TK("kb2",   "K2", 141, _ky_b2 )
#define Key_c1          __TK("kc1",   "K4", 142, _ky_c1 )
#define Key_c3          __TK("kc3",   "K5", 143, _ky_c3 )
#define Key_btab        __TK("kcbt",  "kB", 148, _ky_btab )
#define Key_beg         __TK("kbeg",  "@1", 158, _ky_beg )
#define Key_cancel      __TK("kcan",  "@2", 159, _ky_cancel )
#define Key_close       __TK("kclo",  "@3", 160, _ky_close )
#define Key_command     __TK("kcmd",  "@4", 161, _ky_command )
#define Key_copy        __TK("kcpy",  "@5", 162, _ky_copy )
#define Key_create      __TK("kcrt",  "@6", 163, _ky_create )
#define Key_end         __TK("kend",  "@7", 164, _ky_end )
#define Key_enter       __TK("kent",  "@8", 165, _ky_enter )
#define Key_exit        __TK("kext",  "@9", 166, _ky_exit )
#define Key_find        __TK("kfnd",  "@0", 167, _ky_find )
#define Key_help        __TK("khlp",  "%1", 168, _ky_help )
#define Key_mark        __TK("kmrk",  "%2", 169, _ky_mark )
#define Key_message     __TK("kmsg",  "%3", 170, _ky_message )
#define Key_move        __TK("kmov",  "%4", 171, _ky_move )
#define Key_next        __TK("knxt",  "%5", 172, _ky_next )
#define Key_open        __TK("kopn",  "%6", 173, _ky_open )
#define Key_options     __TK("kopt",  "%7", 174, _ky_options )
#define Key_previous    __TK("kprv",  "%8", 175, _ky_previous )
#define Key_print       __TK("kprt",  "%9", 176, _ky_print )
#define Key_redo        __TK("krdo",  "%0", 177, _ky_redo )
#define Key_reference   __TK("kref",  "&1", 178, _ky_reference )
#define Key_refresh     __TK("krfr",  "&2", 179, _ky_refresh )
#define Key_replace     __TK("krpl",  "&3", 180, _ky_replace )
#define Key_restart     __TK("krst",  "&4", 181, _ky_restart )
#define Key_resume      __TK("kres",  "&5", 182, _ky_resume )
#define Key_save        __TK("ksav",  "&6", 183, _ky_save )
#define Key_suspend     __TK("kspd",  "&7", 184, _ky_suspend )
#define Key_undo        __TK("kund",  "&8", 185, _ky_undo )
#define Key_sbeg        __TK("kBEG",  "&9", 186, _ky_sbeg )
#define Key_scancel     __TK("kCAN",  "&0", 187, _ky_scancel )
#define Key_scommand    __TK("kCMD",  "*1", 188, _ky_scommand )
#define Key_scopy       __TK("kCPY",  "*2", 189, _ky_scopy )
#define Key_screate     __TK("kCRT",  "*3", 190, _ky_screate )
#define Key_sdc         __TK("kDC",   "*4", 191, _ky_sdc )
#define Key_sdl         __TK("kDL",   "*5", 192, _ky_sdl )
#define Key_select      __TK("kslt",  "*6", 193, _ky_select )
#define Key_send        __TK("kEND",  "*7", 194, _ky_send )
#define Key_seol        __TK("kEOL",  "*8", 195, _ky_seol )
#define Key_sexit       __TK("kEXT",  "*9", 196, _ky_sexit )
#define Key_sfind       __TK("kFND",  "*0", 197, _ky_sfind )
#define Key_shelp       __TK("kHLP",  "#1", 198, _ky_shelp )
#define Key_shome       __TK("kHOM",  "#2", 199, _ky_shome )
#define Key_sic         __TK("kIC",   "#3", 200, _ky_sic )
#define Key_sleft       __TK("kLFT",  "#4", 201, _ky_sleft )
#define Key_smessage    __TK("kMSG",  "%a", 202, _ky_smessage )
#define Key_smove       __TK("kMOV",  "%b", 203, _ky_smove )
#define Key_snext       __TK("kNXT",  "%c", 204, _ky_snext )
#define Key_soptions    __TK("kOPT",  "%d", 205, _ky_soptions )
#define Key_sprevious   __TK("kPRV",  "%e", 206, _ky_sprevious )
#define Key_sprint      __TK("kPRT",  "%f", 207, _ky_sprint )
#define Key_sredo       __TK("kRDO",  "%g", 208, _ky_sredo )
#define Key_sreplace    __TK("kRPL",  "%h", 209, _ky_sreplace )
#define Key_sright      __TK("kRIT",  "%i", 210, _ky_sright )
#define Key_srsume      __TK("kRES",  "%j", 211, _ky_srsume )
#define Key_ssave       __TK("kSAV",  "!1", 212, _ky_ssave )
#define Key_ssuspend    __TK("kSPD",  "!2", 213, _ky_ssuspend )
#define Key_sundo       __TK("kUND",  "!3", 214, _ky_sundo )
#define Key_f11         __TK("kf11",  "F1", 216, _ky_f11 )
#define Key_f12         __TK("kf12",  "F2", 217, _ky_f12 )
#define Key_f13         __TK("kf13",  "F3", 218, _ky_f13 )
#define Key_f14         __TK("kf14",  "F4", 219, _ky_f14 )
#define Key_f15         __TK("kf15",  "F5", 220, _ky_f15 )
#define Key_f16         __TK("kf16",  "F6", 221, _ky_f16 )
#define Key_f17         __TK("kf17",  "F7", 222, _ky_f17 )
#define Key_f18         __TK("kf18",  "F8", 223, _ky_f18 )
#define Key_f19         __TK("kf19",  "F9", 224, _ky_f19 )
#define Key_f20         __TK("kf20",  "FA", 225, _ky_f20 )
#define Key_f21         __TK("kf21",  "FB", 226, _ky_f21 )
#define Key_f22         __TK("kf22",  "FC", 227, _ky_f22 )
#define Key_f23         __TK("kf23",  "FD", 228, _ky_f23 )
#define Key_f24         __TK("kf24",  "FE", 229, _ky_f24 )
#define Key_f25         __TK("kf25",  "FF", 230, _ky_f25 )
#define Key_f26         __TK("kf26",  "FG", 231, _ky_f26 )
#define Key_f27         __TK("kf27",  "FH", 232, _ky_f27 )
#define Key_f28         __TK("kf28",  "FI", 233, _ky_f28 )
#define Key_f29         __TK("kf29",  "FJ", 234, _ky_f29 )
#define Key_f30         __TK("kf30",  "FK", 235, _ky_f30 )
#define Key_f31         __TK("kf31",  "FL", 236, _ky_f31 )
#define Key_f32         __TK("kf32",  "FM", 237, _ky_f32 )
#define Key_f33         __TK("kf33",  "FN", 238, _ky_f33 )
#define Key_f34         __TK("kf34",  "FO", 239, _ky_f34 )
#define Key_f35         __TK("kf35",  "FP", 240, _ky_f35 )
#define Key_f36         __TK("kf36",  "FQ", 241, _ky_f36 )
#define Key_f37         __TK("kf37",  "FR", 242, _ky_f37 )
#define Key_f38         __TK("kf38",  "FS", 243, _ky_f38 )
#define Key_f39         __TK("kf39",  "FT", 244, _ky_f39 )

⌨️ 快捷键说明

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