ReactOS  0.4.12-dev-18-gf469aca
tncon.h File Reference
#include "tparams.h"
Include dependency graph for tncon.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  { SC_UP, SC_DOWN, SC_ESC, SC_MOUSE }
 
enum  {
  TNNOCON, TNPROMPT, TNSCROLLBACK, TNSPAWN,
  TNDONE
}
 

Functions

int telProcessConsole (NetParams *pParams, KeyTranslator &KeyTrans, TConsole &Console, TNetwork &Network, TMouse &Mouse, Tnclip &Clipboard, HANDLE hThread)
 
WORD scrollkeys ()
 
BOOL WINAPI ControlEventHandler (DWORD)
 
void setTNetwork (TNetwork)
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
SC_UP 
SC_DOWN 
SC_ESC 
SC_MOUSE 

Definition at line 7 of file tncon.h.

7  {
8  SC_UP,
9  SC_DOWN,
10  SC_ESC,
11  SC_MOUSE
12 };
Definition: tncon.h:9
Definition: tncon.h:8
Definition: tncon.h:11
Definition: tncon.h:10

◆ anonymous enum

anonymous enum
Enumerator
TNNOCON 
TNPROMPT 
TNSCROLLBACK 
TNSPAWN 
TNDONE 

Definition at line 14 of file tncon.h.

14  {
15  TNNOCON,
16  TNPROMPT,
18  TNSPAWN,
19  TNDONE
20 };
Definition: tncon.h:15
Definition: tncon.h:18
Definition: tncon.h:19
Definition: tncon.h:16

Function Documentation

◆ ControlEventHandler()

BOOL WINAPI ControlEventHandler ( DWORD  )

Definition at line 357 of file tncon.cpp.

Referenced by Telnet::Open().

357  {
358  switch(event) {
359  case CTRL_BREAK_EVENT:
360  // Bryan Montgomery 10/14/98
361  if(ini.get_control_break_as_c()) net.WriteString("\x3",1);
362  return TRUE;
363  default:
364  return FALSE;
365  }
366 }
#define TRUE
Definition: types.h:120
#define CTRL_BREAK_EVENT
Definition: wincon.h:66
bool get_control_break_as_c() const
Definition: tnconfig.h:61
TConfig ini
Definition: tnconfig.cpp:45
int WriteString(const char *str, const int length)
Definition: tnetwork.cpp:53
struct _cl_event * event
Definition: glext.h:7739
static TNetwork net
Definition: tncon.cpp:351

◆ scrollkeys()

WORD scrollkeys ( )

Definition at line 320 of file tncon.cpp.

Referenced by TScroller::ScrollBack().

320  {
322  INPUT_RECORD InputRecord;
323  BOOL done = FALSE;
324 
325  while (!done) {
326  DWORD dwInput;
327  WaitForSingleObject( hConsole, INFINITE );
328  if (!ReadConsoleInput(hConsole, &InputRecord, 1, &dwInput)){
329  done = TRUE;
330  continue;
331  }
332  if (InputRecord.EventType == KEY_EVENT &&
333  InputRecord.Event.KeyEvent.bKeyDown ) {
334  // Why not just return the key code? (Paul Brannan 12/5/98)
335  return InputRecord.Event.KeyEvent.wVirtualKeyCode;
336  } else if(InputRecord.EventType == MOUSE_EVENT) {
337  if(!InputRecord.Event.MouseEvent.dwEventFlags) {
338  // Put the mouse's X and Y coords back into the input buffer
339  WriteConsoleInput(hConsole, &InputRecord, 1, &dwInput);
340  return SC_MOUSE;
341  }
342  }
343  }
344  return SC_ESC;
345 }
#define TRUE
Definition: types.h:120
DWORD dwEventFlags
Definition: wincon.h:245
#define WriteConsoleInput
Definition: wincon.h:773
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
WORD wVirtualKeyCode
Definition: wincon.h:227
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
#define ReadConsoleInput
Definition: wincon.h:766
#define KEY_EVENT
Definition: wincon.h:122
#define STD_INPUT_HANDLE
Definition: winbase.h:264
unsigned int BOOL
Definition: ntddk_ex.h:94
#define MOUSE_EVENT
Definition: wincon.h:123
KEY_EVENT_RECORD KeyEvent
Definition: wincon.h:263
unsigned long DWORD
Definition: ntddk_ex.h:95
Definition: tncon.h:11
WORD EventType
Definition: wincon.h:261
MOUSE_EVENT_RECORD MouseEvent
Definition: wincon.h:264
Definition: tncon.h:10
#define INFINITE
Definition: serial.h:102
union _INPUT_RECORD::@3146 Event

◆ setTNetwork()

void setTNetwork ( TNetwork  )

Definition at line 352 of file tncon.cpp.

352  {
353  net = tnet;
354 }
static TNetwork net
Definition: tncon.cpp:351

◆ telProcessConsole()

int telProcessConsole ( NetParams pParams,
KeyTranslator KeyTrans,
TConsole Console,
TNetwork Network,
TMouse Mouse,
Tnclip Clipboard,
HANDLE  hThread 
)

Definition at line 199 of file tncon.cpp.

Referenced by Telnet::Resume().

202 {
203  KeyDefType_const keydef;
204  const char *p;
205  int p_len;
206  unsigned int i;
207  int opval;
209 
211 
212  const DWORD nHandle = 2;
213  HANDLE hHandle[nHandle] = {hConsole, pParams->hExit};
214 
215  for (;;) {
216  DWORD dwInput;
217  switch (WaitForMultipleObjects(nHandle, hHandle, FALSE, INFINITE)) {
218  case WAIT_OBJECT_0: {
219 
220  // Paul Brannan 7/29/98
221  if(ini.get_input_redir()) {
222  char InputBuffer[10];
223 
224  // Correction from Joe Manns <joe.manns@ardenenginneers.com>
225  // to fix race conditions (4/13/99)
226  int bResult;
227  bResult = ReadFile(hConsole, InputBuffer, 10, &dwInput, 0);
228  if(bResult && dwInput == 0) return TNNOCON;
229 
230  // no key translation for redirected input
231  Network.WriteString(InputBuffer, dwInput);
232  break;
233  }
234 
235  INPUT_RECORD InputRecord[11];
236  if (!ReadConsoleInput(hConsole, &InputRecord[0], 10, &dwInput))
237  return TNPROMPT;
238 
239  for (i = 0; (unsigned)i < dwInput; i++){
240  switch (InputRecord[i].EventType) {
241  case KEY_EVENT:{
242  if (KEYEVENT.bKeyDown) {
243 
244  WORD keyCode = KEYEVENT.wVirtualKeyCode;
245  DWORD keyState = KEYEVENT.dwControlKeyState;
246 
247  // Paul Brannan 5/27/98
248  // Moved the code that was here to FindClosestKey()
249  keydef.szKeyDef = FindClosestKey(keyCode,
250  keyState, KeyTrans);
251 
252  if(keydef.szKeyDef) {
253  if(!keydef.op->sendstr)
254  if((opval = do_op(keydef.op->the_op, Network,
255  Clipboard)) != 0)
256  return opval;
257  }
258 
259  if(Network.get_line_mode()) {
260  if(DoLineModeSpecial(KEYEVENT_CHAR, Console, Network, pParams))
261  continue;
262  }
263 
264  p = keydef.szKeyDef;
265  if (p == NULL) { // if we don't have a translator
266  if(!KEYEVENT_CHAR) continue;
267  p_len = 1;
268  p = KEYEVENT_PCHAR;
269  } else {
270  p_len = strlen(p);
271  }
272 
273  // Local echo (Paul Brannan 5/16/98)
274  DoEcho(p, p_len, Console, Network, pParams);
275  // Line mode (Paul Brannan 12/31/98)
276  DoLineMode(p, p_len, Console, Network);
277  }
278  }
279  break;
280 
281  case MOUSE_EVENT:
282  if(!InputRecord[i].Event.MouseEvent.dwEventFlags) {
283  ResetEvent(pParams->hUnPause);
284  SetEvent(pParams->hPause);
285  while (!*pParams->bNetPaused); // thread paused
286  // SuspendThread(hThread);
287 
288  // Put the mouse's X and Y coords back into the
289  // input buffer
290  DWORD Result;
291  WriteConsoleInput(hConsole, &InputRecord[i], 1,
292  &Result);
293 
294  Mouse.doMouse();
295 
296  SetEvent(pParams->hUnPause);
297  // ResumeThread(hThread);
298  }
299  break;
300 
301  case FOCUS_EVENT:
302  break;
304  // FIX ME!! This should take care of the window re-sizing bug
305  // Unfortunately, it doesn't.
306  Console.sync();
307  Network.do_naws(Console.GetWidth(), Console.GetHeight());
308  break;
309  }
310 
311  } // keep going until no more input
312  break;
313  }
314  default:
315  return TNNOCON;
316  }
317  }
318 }
const optype * op
Definition: tkeydef.h:33
void DoEcho(const char *p, int l, TConsole &Console, TNetwork &Network, NetParams *pParams)
Definition: tncon.cpp:61
void DoLineMode(const char *p, int p_len, TConsole &Console, TNetwork &Network)
Definition: tncon.cpp:100
HANDLE hUnPause
Definition: tparams.h:7
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define WINDOW_BUFFER_SIZE_EVENT
Definition: wincon.h:124
void sync()
Definition: tconsole.cpp:109
#define WriteConsoleInput
Definition: wincon.h:773
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:679
HANDLE WINAPI GetStdHandle(IN DWORD nStdHandle)
Definition: console.c:152
tn_ops the_op
Definition: tkeydef.h:23
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
Definition: synch.c:151
CHAR InputBuffer[80]
Definition: conmgr.c:33
volatile int * bNetPaused
Definition: tparams.h:8
#define KEYEVENT_PCHAR
Definition: tncon.cpp:58
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define ReadConsoleInput
Definition: wincon.h:766
BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
Definition: console.c:1608
#define KEY_EVENT
Definition: wincon.h:122
const char * szKeyDef
Definition: tkeydef.h:32
smooth NULL
Definition: ftsmooth.c:416
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
Definition: tncon.h:15
#define FOCUS_EVENT
Definition: wincon.h:126
#define STD_INPUT_HANDLE
Definition: winbase.h:264
TConfig ini
Definition: tnconfig.cpp:45
int WriteString(const char *str, const int length)
Definition: tnetwork.cpp:53
#define WAIT_OBJECT_0
Definition: winbase.h:387
#define KEYEVENT_CHAR
Definition: tncon.cpp:55
#define KEYEVENT
Definition: tncon.cpp:49
#define MOUSE_EVENT
Definition: wincon.h:123
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
void doMouse()
Definition: tmouse.cpp:141
#define ENABLE_MOUSE_INPUT
Definition: wincon.h:79
int get_input_redir() const
Definition: tnconfig.h:42
int GetWidth()
Definition: tconsole.h:81
bool get_enable_mouse() const
Definition: tnconfig.h:79
BOOL get_line_mode()
Definition: tnetwork.h:43
bool DoLineModeSpecial(char keychar, TConsole &Console, TNetwork &Network, NetParams *pParams)
Definition: tncon.cpp:84
HANDLE hExit
Definition: tparams.h:6
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
Definition: synch.c:660
HANDLE hPause
Definition: tparams.h:7
char sendstr
Definition: tkeydef.h:22
void do_naws(int width, int height)
Definition: tnetwork.cpp:81
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_ EVENT_TYPE EventType
Definition: exfuncs.h:165
GLfloat GLfloat p
Definition: glext.h:8902
#define INFINITE
Definition: serial.h:102
BOOL WINAPI ReadFile(IN HANDLE hFile, IN LPVOID lpBuffer, IN DWORD nNumberOfBytesToRead, OUT LPDWORD lpNumberOfBytesRead OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:123
Definition: tncon.h:16
const char * FindClosestKey(WORD keyCode, DWORD keyState, KeyTranslator &KeyTrans)
Definition: tncon.cpp:144
int do_op(tn_ops op, TNetwork &Network, Tnclip &Clipboard)
Definition: tncon.cpp:174
int GetHeight()
Definition: tconsole.h:82