@@ -30,7 +30,7 @@ namespace Nexus {
30
30
31
31
KeyEvent () { }
32
32
33
- int key;
33
+ char key;
34
34
35
35
};
36
36
@@ -59,46 +59,49 @@ namespace Nexus {
59
59
{
60
60
task_wait ();
61
61
62
- c = _stream.read ();
63
-
64
- if (c == 10 ) continue ;
65
-
66
- if (c == 13 )
67
- {
68
- key = KeyEvent::KeyEnter;
69
- }
70
- else if (c == 8 || c == 127 )
71
- {
72
- key = KeyEvent::KeyDelete;
73
- }
74
- else if (c == 27 )
62
+ if (message.get <StreamEvent>())
75
63
{
76
- task_wait4 ( 10 );
64
+ c = _stream. read ( );
77
65
78
- if (message.get <StreamEvent>())
66
+ if (c == 10 ) continue ;
67
+
68
+ if (c == 13 )
69
+ {
70
+ key = KeyEvent::KeyEnter;
71
+ }
72
+ else if (c == 8 || c == 127 )
73
+ {
74
+ key = KeyEvent::KeyDelete;
75
+ }
76
+ else if (c == 27 )
79
77
{
80
- c = _stream. read ( );
78
+ task_wait4 ( 10 );
81
79
82
- if (c == ' [ ' )
80
+ if (message. get <StreamEvent>() )
83
81
{
84
- task_wait ();
85
-
86
82
c = _stream.read ();
87
83
88
- switch (c)
84
+ if (c == ' [ ' )
89
85
{
90
- break ; case ' A' : key = KeyEvent::KeyUp;
91
- break ; case ' B' : key = KeyEvent::KeyDown;
92
- break ; case ' C' : key = KeyEvent::KeyRight;
93
- break ; case ' D' : key = KeyEvent::KeyLeft;
86
+ task_wait ();
87
+
88
+ c = _stream.read ();
89
+
90
+ switch (c)
91
+ {
92
+ break ; case ' A' : key = KeyEvent::KeyUp;
93
+ break ; case ' B' : key = KeyEvent::KeyDown;
94
+ break ; case ' C' : key = KeyEvent::KeyRight;
95
+ break ; case ' D' : key = KeyEvent::KeyLeft;
96
+ }
94
97
}
95
98
}
99
+ else key = 27 ;
96
100
}
97
- else key = 27 ;
98
- }
99
- else key = c;
101
+ else key = c;
100
102
101
- if (_task) _task->send (KeyEvent (key));
103
+ if (_task) _task->send (KeyEvent (key));
104
+ }
102
105
}
103
106
104
107
task_exit;
@@ -112,3 +115,24 @@ namespace Nexus {
112
115
};
113
116
114
117
}
118
+
119
+ // struct Messenger : public Coro {
120
+
121
+ // Messenger(Task* task, Stream& stream) : Coro(&run),
122
+ // task(task), stream(stream)
123
+ // { }
124
+
125
+ // Task* task;
126
+ // Stream& stream;
127
+
128
+ // static void run(Coro* coro_, const Message& message)
129
+ // {
130
+ // Messenger* coro = (Messenger*) coro_;
131
+
132
+ // if (coro->stream.available() > 0)
133
+ // {
134
+ // coro->task->send(StreamEvent(coro->stream));
135
+ // }
136
+ // }
137
+
138
+ // };
0 commit comments