/[LeafOK_CVS]/lbbs/src/io.c
ViewVC logotype

Diff of /lbbs/src/io.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 by sysadm, Fri Oct 22 15:21:28 2004 UTC Revision 1.3 by sysadm, Tue Nov 30 07:10:32 2004 UTC
# Line 25  outc(char c) Line 25  outc(char c)
25  {  {
26    int retval;    int retval;
27    
28    retval = printf("%c",c);    retval = fprintf(stdout, "%c", c);
29    
30    return retval;    return retval;
31  }  }
# Line 54  iflush() Line 54  iflush()
54  }  }
55    
56  int  int
 Ctrl (char c)  
 {  
   return (c - 'A' + 1);  
 }  
   
 int  
57  igetch ()  igetch ()
58  {  {
   char c, tmp[256];  
59    static char buf[256];    static char buf[256];
60    int out = 0, loop = 1, in_esc = 0, in_ascii = 0, i = 0;    unsigned char c, tmp[256];
61    static int len =0 , pos = 0;    int out = 0, loop = 1, in_esc = 0, in_ascii = 0, in_control = 0, i = 0, j;
62      static int len = 0 , pos = 0;
63    
64    if (pos >= len)    if (pos >= len)
65    {    {
66      len = s_receive (socket_client, buf, 255, "");      len = s_receive (socket_client, buf, 255, "");
67      pos = 0;      pos = 0;
68    
69        //For debug
70        //for (j = 0; j < len; j++)
71        //  log_std ("<--[%u]\n", (buf[j] + 256) % 256);
72    }    }
73    
74    while (pos < len)    while (pos < len)
# Line 83  igetch () Line 81  igetch ()
81          break;          break;
82        }        }
83    
84          if (c == KEY_CONTROL)
85            {
86              if (in_control == 0)
87                {
88                  in_control = 1;
89                  i = 0;
90                  continue;
91                }
92            }
93          
94          if (in_control)
95          {
96            tmp[i++] = c;
97            if (i >= 2)
98            {
99              out = (int)tmp[0] * 256 + tmp[1];
100              in_control = 0;
101              break;
102            }
103            continue;
104          }
105    
106        if (c == ESC_KEY)        if (c == ESC_KEY)
107          {          {
108            if (in_esc == 0)            if (in_esc == 0)
# Line 122  igetch () Line 142  igetch ()
142                    out = KEY_DOWN;                    out = KEY_DOWN;
143                    break;                    break;
144                  case 'C':                  case 'C':
145                    out = KEY_LEFT;                    out = KEY_RIGHT;
146                    break;                    break;
147                  case 'D':                  case 'D':
148                    out = KEY_RIGHT;                    out = KEY_LEFT;
149                      break;
150                    }
151                  break;
152                }
153              if (i == 3 && tmp[0] == 91 && tmp[2] == 126)
154                {
155                  in_ascii = 0;
156                  switch (tmp[1])
157                    {
158                    case 49:
159                      out = KEY_HOME;
160                      break;
161                    case 52:
162                      out = KEY_END;
163                      break;
164                    case 53:
165                      out = KEY_PGUP;
166                      break;
167                    case 54:
168                      out = KEY_PGDOWN;
169                    break;                    break;
170                  }                  }
171                break;                break;
# Line 138  igetch () Line 178  igetch ()
178      }      }
179    
180    //for debug    //for debug
181    //log_std ("[%d]\n", out);    //log_std ("-->[%u]\n", out);
182    
183    return out;    return out;
184  }  }


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1