void kbd_fetch_data(long *dst)
{
// OK, FF84A390 GetKbdState
volatile long *mmio0 = (void*)0xc0220200;
volatile long *mmio1 = (void*)0xc0220204;
volatile long *mmio2 = (void*)0xc0220208;
dst[0] = *mmio0;
dst[1] = *mmio1;
dst[2] = *mmio2;
}
void my_kbd_read_keys()
{
kbd_prev_state[0] = kbd_new_state[0];
kbd_prev_state[1] = kbd_new_state[1];
kbd_prev_state[2] = kbd_new_state[2];
_kbd_pwr_on();
kbd_fetch_data(kbd_new_state);
//_platformsub_kbd_fetch_data(kbd_new_state);
if (kbd_process() == 0){
// leave it alone...
physw_status[0] = kbd_new_state[0];
physw_status[1] = kbd_new_state[1];
// physw_status[2] = kbd_new_state[2];
} else {
// override keys
// physw_status[0] = (kbd_new_state[0] & (~KEYS_MASK0)) |
// (kbd_mod_state[0] & KEYS_MASK0);
// physw_status[1] = (kbd_new_state[1] & (~KEYS_MASK1)) |
// (kbd_mod_state[1] & KEYS_MASK1);
//physw_status[2] = (kbd_new_state[2] & (~KEYS_MASK2)) |
// (kbd_mod_state[2] & KEYS_MASK2);
}
_kbd_read_keys_r2(physw_status);
remote_key = (physw_status[2] & USB_MASK)==USB_MASK;
if (remote_key)
remote_count += 1;
else if (remote_count) {
usb_power = remote_count;
remote_count = 0;
}
if (conf.remote_enable) {
physw_status[2] = physw_status[2] & ~(SD_READONLY_FLAG | USB_MASK);
} else {
physw_status[2] = physw_status[2] & ~SD_READONLY_FLAG;
}
_kbd_pwr_off();
}
void gui_draw_debug_vals_osd() {
#ifdef OPT_DEBUGGING
// if (conf.debug_misc_vals_show) {
// long v=get_file_counter();
// sprintf(osd_buf, "1:%03d-%04d ", (v>>18)&0x3FF, (v>>4)&0x3FFF);
// sprintf(osd_buf, "1:%d, %08X ", xxxx, eeee);
extern long physw_status[3];
sprintf(osd_buf, "1:%8x ", physw_status[0]);
draw_txt_string(8, 10, osd_buf, conf.osd_color);
sprintf(osd_buf, "2:%8x ", physw_status[1]);
draw_txt_string(8, 11, osd_buf, conf.osd_color);
sprintf(osd_buf, "3:%8x ", physw_status[2]);
draw_txt_string(8, 12, osd_buf, conf.osd_color);
result:
1 30d0000c
2 c2800eb
3 d0ff