Rev 1516 | Rev 1518 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1516 | Rev 1517 | ||
---|---|---|---|
Line 169... | Line 169... | ||
169 | return; |
169 | return; |
170 | case KBD_PUSHCHAR: |
170 | case KBD_PUSHCHAR: |
171 | /* got key from keyboard driver */ |
171 | /* got key from keyboard driver */ |
172 | 172 | ||
173 | retval = 0; |
173 | retval = 0; |
174 | c = IPC_GET_ARG1(call); |
174 | c = IPC_GET_ARG1(call) - '0'; |
175 | /* switch to another virtual console */ |
175 | /* switch to another virtual console */ |
176 | 176 | ||
177 | conn = &connections[active_console]; |
177 | conn = &connections[active_console]; |
178 | // if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) { |
178 | // if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) { |
179 | if ((c >= '1') && (c < '1' + CONSOLE_COUNT)) { |
179 | if ((c >= 0) && (c < CONSOLE_COUNT)) { |
180 | /*FIXME: draw another console content from buffer */ |
180 | /*FIXME: draw another console content from buffer */ |
181 | if (c - '1' == active_console) |
181 | if (c == active_console) |
182 | break; |
182 | break; |
- | 183 | ||
- | 184 | if (c == 0) { |
|
- | 185 | /* switch to kernel console*/ |
|
- | 186 | __SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE); |
|
- | 187 | ||
- | 188 | } else { |
|
183 | active_console = c - '1'; |
189 | active_console = c; |
- | 190 | } |
|
- | 191 | ||
- | 192 | ||
184 | conn = &connections[active_console]; |
193 | conn = &connections[active_console]; |
185 | 194 | ||
186 | ipc_call_async(fb_info.phone, FB_CURSOR_VISIBILITY, 0, NULL, NULL); |
195 | ipc_call_async(fb_info.phone, FB_CURSOR_VISIBILITY, 0, NULL, NULL); |
187 | 196 | ||
188 | if (interbuffer) { |
197 | if (interbuffer) { |
189 | for (i = 0; i < conn->screenbuffer.size_x; i++) |
198 | for (i = 0; i < conn->screenbuffer.size_x; i++) |
190 | for (j = 0; j < conn->screenbuffer.size_y; j++) |
199 | for (j = 0; j < conn->screenbuffer.size_y; j++) |
191 | interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j); |
200 | interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j); |
192 | 201 | ||
193 | ipc_call_sync(fb_info.phone, FB_DRAW_TEXT_DATA, 0, NULL); |
202 | sync_send_2(fb_info.phone, FB_DRAW_TEXT_DATA, 0, 0, NULL, NULL); |
194 | } else { |
203 | } else { |
195 | 204 | ||
196 | ipc_call_async_2(fb_info.phone, FB_CLEAR, 0, 0, NULL, NULL); |
205 | ipc_call_async_2(fb_info.phone, FB_CLEAR, 0, 0, NULL, NULL); |
197 | 206 | ||
198 | 207 |