int main(void) { int i; /* Hardware initialization */ init(); /* Put your code here... */ kprintf("USB HID Mouse configured\n"); kbd_setRepeatMask(K_WAKEUP); while (1) { /* Wait until WAKE_UP is pressed */ kbd_get(); /* Left button pressed down */ usbmouse_sendEvent(0, 0, BV(0)); timer_delay(100); /* Move left */ for (i = 0; i < 25; i++) { usbmouse_sendEvent(-2, 0, BV(0)); timer_delay(10); } /* Move down */ for (i = 0; i < 25; i++) { usbmouse_sendEvent(0, 2, BV(0)); timer_delay(10); } /* Move right */ for (i = 0; i < 25; i++) { usbmouse_sendEvent(2, 0, BV(0)); timer_delay(10); } /* Move up */ for (i = 0; i < 25; i++) { usbmouse_sendEvent(0, -2, BV(0)); timer_delay(10); } /* Left button released */ usbmouse_sendEvent(0, 0, 0); } }
/* * Lcd */ static void setBrightness(Bitmap *bm) { while (1) { gfx_bitmapClear(bm); text_xprintf(bm, 1, 0, TEXT_FILL | TEXT_CENTER, "Brightness: %d", lcd_brightness); text_xprintf(bm, 3, 0, TEXT_FILL | TEXT_CENTER, "RIGHT key: change"); text_xprintf(bm, 4, 0, TEXT_FILL | TEXT_CENTER, "LEFT key: back "); lcd_ili9225_blitBitmap(bm); keymask_t mask = kbd_get(); if (mask & K_LEFT) break; else if (mask & K_RIGHT) { if (++lcd_brightness > LCD_BACKLIGHT_MAX) lcd_brightness = 0; lcd_setBacklight(lcd_brightness); } } }
enum sl_status kbd_set(enum sl_status status) { UINT ret; DWORD err; INPUT keys[2]; enum sl_status current; odprintf("kbd[set]: status=%d", status); keys[0].type = INPUT_KEYBOARD; keys[0].ki.wVk = VK_SCROLL; keys[0].ki.wScan = 0; keys[0].ki.dwFlags = 0; keys[1].type = INPUT_KEYBOARD; keys[1].ki.wVk = VK_SCROLL; keys[1].ki.wScan = 0; keys[1].ki.dwFlags = KEYEVENTF_KEYUP; current = kbd_get(); switch (current) { case SL_ON: case SL_OFF: if (current == status) return status; SetLastError(0); ret = SendInput(2, (LPINPUT)&keys, sizeof(INPUT)); err = GetLastError(); odprintf("SendInput: %d (%d)", ret, err); if (ret == 0 || err == 0) current = status; break; default: break; } return current; }
int kbdreset(void) { int c; /* Flush all pending data */ while(kbd_get(10) != -1); /* Send self-test */ kbd_put(KBD_CCMD_SELF_TEST, 10, KBD_CNTL_REG); c = kbd_get(1000); if (c != 0x55) return 1; /* Enable then reset the KB */ kbd_put(KBD_CCMD_KBD_ENABLE, 10, KBD_CNTL_REG); while (1) { kbd_put(KBD_CMD_RESET, 10, KBD_DATA_REG); c = kbd_get(1000); if (c == KBD_REPLY_ACK) break; if (c != KBD_REPLY_RESEND) return 2; } if (kbd_get(1000) != KBD_REPLY_POR) return 3; /* Disable the keyboard while setting up the controller */ kbd_put(KBD_CMD_DISABLE, 10, KBD_DATA_REG); if (kbd_get(10)!=KBD_REPLY_ACK) return 4; /* Enable interrupts and keyboard controller */ kbd_put(KBD_CCMD_WRITE_MODE, 10, KBD_CNTL_REG); kbd_put(KBD_MODE_KBD_INT | KBD_MODE_SYS | KBD_MODE_DISABLE_MOUSE | KBD_MODE_KCC, 10, KBD_DATA_REG); /* Reenable the keyboard */ kbd_put(KBD_CMD_ENABLE, 10, KBD_DATA_REG); if (kbd_get(10)!=KBD_REPLY_ACK) return 5; return 0; }