示例#1
0
文件: main.c 项目: DINKIN/bertos
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);
	}
}
示例#2
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);
		}
	}
}
示例#3
0
文件: keyboard.c 项目: lp0/slmpc
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;
}
示例#4
0
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;
}