| |
| |
| |
| |
| |
| |
| #include <psxtypes/psxtypes.h> |
| #include <ntcon/ntcon.h> |
| #include <ntapi/ntapi.h> |
| #include <gdi/gdi.h> |
| |
| #include <ptycon/ptycon.h> |
| #include "ptycon_driver_impl.h" |
| |
| static int ptyc_dbg_input_record(void * hout, nt_input_record * rec) |
| { |
| char * ch; |
| uintptr_t buffer[512/sizeof(uintptr_t)]; |
| uint32_t nwritten; |
| |
| ntapi->tt_aligned_block_memset( |
| buffer,0,sizeof(buffer)); |
| |
| ch = (char *)buffer; |
| |
| switch (rec->event_type) { |
| case NT_KEY_EVENT: |
| ntapi->snprintf(ch,sizeof(buffer), |
| "key event. " |
| "key down: %d; " |
| "repeat count: %d; " |
| "virtual key code: 0x%04x; " |
| "virtual scan code: 0x%04x; " |
| "unicode char: 0x%04x; " |
| "control key: 0x%04x.\n", |
| rec->key_event.key_down, |
| rec->key_event.repeat_count, |
| rec->key_event.virtual_key_code, |
| rec->key_event.virtual_scan_code, |
| rec->key_event.unicode_char, |
| rec->key_event.control_key_state); |
| break; |
| |
| case NT_MOUSE_EVENT: |
| ntapi->snprintf(ch,sizeof(buffer), |
| "mouse event. " |
| "pos.x: %d; " |
| "pos.y: %d; " |
| "button state: 0x%04x; " |
| "ctrl key state: 0x%04x; " |
| "event flags: 0x%04x.\n", |
| rec->mouse_event.mouse_position.x, |
| rec->mouse_event.mouse_position.y, |
| rec->mouse_event.button_state, |
| rec->mouse_event.control_key_state, |
| rec->mouse_event.event_flags); |
| break; |
| |
| case NT_WINDOW_BUFFER_SIZE_EVENT: |
| ntapi->snprintf(ch,sizeof(buffer), |
| "window event. " |
| "size.x: %d; " |
| "size.y: %d.\n", |
| rec->window_event.size.x, |
| rec->window_event.size.y); |
| |
| break; |
| |
| case NT_MENU_EVENT: |
| ntapi->snprintf(ch,sizeof(buffer), |
| "menu event. " |
| "command id: %d.\n", |
| rec->menu_event.command_id); |
| break; |
| |
| case NT_FOCUS_EVENT: |
| ntapi->snprintf(ch,sizeof(buffer), |
| "focus event. " |
| "set focus: %d.\n", |
| rec->focus_event.set_focus); |
| break; |
| |
| default: |
| return NT_STATUS_INTERNAL_ERROR; |
| } |
| |
| return ntcon->write_console_ansi( |
| hout,ch, |
| (uint32_t)ntapi->tt_string_null_offset_multibyte(ch), |
| &nwritten,0); |
| } |
| |
| |
| int __stdcall ptyc_dbg_event(struct ptyc_driver_ctx_impl * ictx) |
| { |
| nt_input_record conevt[64]; |
| uint32_t nread; |
| unsigned i; |
| |
| do { |
| if (!(ntcon->read_console_input_utf16( |
| ictx->tctx.hin, |
| conevt,64, |
| &nread))) |
| return -1; |
| |
| for (i=0; i<nread; i++) |
| if (!(ptyc_dbg_input_record( |
| ictx->tctx.hout, |
| &conevt[i]))) |
| return -2; |
| } while (1); |
| |
| return -3; |
| } |