forked from windoze/tvision
-
Notifications
You must be signed in to change notification settings - Fork 0
/
drivers2.cc
86 lines (75 loc) · 3.45 KB
/
drivers2.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
* Turbo Vision - Version 2.0
*
* Copyright (c) 1994 by Borland International
* All Rights Reserved.
*
Modified by Robert H”hne to be used for RHIDE.
*
*
*/
#define Uses_TKeys
#include <tv.h>
/*------------------------------------------------------------------------*/
/* */
/* ctrlToArrow */
/* */
/* argument: */
/* */
/* keyCode - scan code to be mapped to keypad arrow code */
/* */
/* returns: */
/* */
/* scan code for arrow key corresponding to Wordstar key, */
/* or original key code if no correspondence exists */
/* */
/*------------------------------------------------------------------------*/
ushort ctrlToArrow(ushort keyCode)
{
static const ushort ctrlCodes[] =
{
kbCtrlS, kbCtrlD, kbCtrlE, kbCtrlX, kbCtrlA,
kbCtrlF, kbCtrlG, kbCtrlV, kbCtrlR, kbCtrlC, kbCtrlH
};
static const ushort arrowCodes[] =
{
kbLeft, kbRight, kbUp, kbDown, kbHome,
kbEnd, kbDel, kbIns,kbPgUp, kbPgDn, kbBack
};
/* The keycode contains now also the shift flags, which the
caller don't want to see */
ushort _keyCode = keyCode & 0x7F;
for( unsigned i = 0; i<(sizeof(ctrlCodes)/sizeof(ushort)) ; i++ )
if( _keyCode==ctrlCodes[i] )
return arrowCodes[i];
/* If it was not found, return the original code */
return keyCode;
}
/*------------------------------------------------------------------------*/
/* */
/* cstrlen */
/* */
/* argument: */
/* */
/* s - pointer to 0-terminated string */
/* */
/* returns */
/* */
/* length of string, ignoring '~' characters. */
/* */
/* Comments: */
/* */
/* Used in determining the displayed length of command strings, */
/* which use '~' to toggle between display attributes */
/* */
/*------------------------------------------------------------------------*/
int cstrlen( const char *s )
{
int len = 0;
while( *s != EOS )
{
if( *s++ != '~' )
len++;
}
return len;
}