Windows keyhandling

This commit is contained in:
nhmall
2022-04-11 15:24:55 -04:00
parent f68b90e1ea
commit 4d1caf8e3a

View File

@@ -267,19 +267,16 @@ struct console_t {
#endif /* VIRTUAL_TERMINAL_SEQUENCES */
};
static DWORD ccount, acount;
#ifndef CLR_MAX
#define CLR_MAX 16
#endif
static const char default_name[] = "default";
const char *const legal_key_handling[] = {
"none",
"default",
"ray",
"340",
};
int ttycolors[CLR_MAX];
int ttycolors_inv[CLR_MAX];
#define MAX_OVERRIDES 256
unsigned char key_overrides[MAX_OVERRIDES];
static char nullstr[] = "";
char erase_char, kill_char;
#define DEFTEXTCOLOR ttycolors[7]
enum windows_key_handling keyh[] = { no_keyhandling, default_keyhandling, ray_keyhandling,
nh340_keyhandling };
int default_processkeystroke(HANDLE, INPUT_RECORD *, boolean *, boolean, int);
int default_kbhit(HANDLE, INPUT_RECORD *);
@@ -297,19 +294,32 @@ int nh340_checkinput(HANDLE, INPUT_RECORD *, DWORD *, boolean,
int, int *, coord *);
struct keyboard_handling_t {
char *pKeyHandlingName;
enum windows_key_handling khid;
int (*pProcessKeystroke)(HANDLE, INPUT_RECORD *, boolean *,
boolean, int);
int (*pNHkbhit)(HANDLE, INPUT_RECORD *);
int (*pCheckInput)(HANDLE, INPUT_RECORD *, DWORD *, boolean,
int, int *, coord *);
} keyboard_handling = {
"none",
no_keyhandling,
default_processkeystroke,
default_kbhit,
default_checkinput
};
static DWORD ccount, acount;
#ifndef CLR_MAX
#define CLR_MAX 16
#endif
int ttycolors[CLR_MAX];
int ttycolors_inv[CLR_MAX];
#define MAX_OVERRIDES 256
unsigned char key_overrides[MAX_OVERRIDES];
static char nullstr[] = "";
char erase_char, kill_char;
#define DEFTEXTCOLOR ttycolors[7]
static INPUT_RECORD bogus_key;
#ifdef VIRTUAL_TERMINAL_SEQUENCES
@@ -2922,15 +2932,6 @@ nh340_numpad[PADKEYS] = {
static struct pad keypad[PADKEYS], numpad[PADKEYS];
static BYTE KeyState[256];
static const char default_name[] = "default";
const char *const legal_key_handling[] = {
"none",
"default",
"ray",
"340",
};
enum windows_key_handling keyh[] = { no_keyhandling, default_keyhandling, ray_keyhandling,
nh340_keyhandling };
void set_altkeyhandling(const char *inName)
{
@@ -2938,22 +2939,18 @@ void set_altkeyhandling(const char *inName)
/*backward compatibility - so people's existing config files
may work as is */
if (!strcmpi(inName, "nhraykey.dll"))
inName = legal_key_handling[ray_keyhandling];
inName = legal_key_handling[ray_keyhandling];
else if (!strcmpi(inName, "nh340key.dll"))
inName = legal_key_handling[nh340_keyhandling];
inName = legal_key_handling[nh340_keyhandling];
else if (!strcmpi(inName, "nhdefkey.dll"))
inName = legal_key_handling[default_keyhandling];
inName = legal_key_handling[default_keyhandling];
for (i = default_keyhandling; i < SIZE(legal_key_handling); i++) {
if (!strcmpi(inName, legal_key_handling[i])) {
iflags.key_handling = keyh[i];
if (keyboard_handling.pKeyHandlingName) {
free((genericptr_t) keyboard_handling.pKeyHandlingName);
keyboard_handling.pKeyHandlingName = (char *) 0;
}
switch(iflags.key_handling) {
case ray_keyhandling:
keyboard_handling.pKeyHandlingName = strdup("ray");
keyboard_handling.khid = ray_keyhandling;
keyboard_handling.pProcessKeystroke = ray_processkeystroke;
keyboard_handling.pNHkbhit = ray_kbhit;
keyboard_handling.pCheckInput = ray_checkinput;
@@ -2972,7 +2969,7 @@ void set_altkeyhandling(const char *inName)
}
break;
case nh340_keyhandling:
keyboard_handling.pKeyHandlingName = strdup("340");
keyboard_handling.khid = nh340_keyhandling;
keyboard_handling.pProcessKeystroke = nh340_processkeystroke;
keyboard_handling.pNHkbhit = nh340_kbhit;
keyboard_handling.pCheckInput = nh340_checkinput;
@@ -2983,7 +2980,7 @@ void set_altkeyhandling(const char *inName)
break;
case default_keyhandling:
default:
keyboard_handling.pKeyHandlingName = strdup("default");
keyboard_handling.khid = default_keyhandling;
keyboard_handling.pProcessKeystroke
= default_processkeystroke;
keyboard_handling.pNHkbhit = default_kbhit;