int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // disable JTAG,use SWD only GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); timebase_init(); led_init(); vcp_init(); // for debug use if (!key_is_pressed()) { USB_HW_Config(); USB_Init(); } led_flash(1000, 100, 0); while (1) { led_update(); if (bDeviceState == CONFIGURED) { if (key_is_pressed()) { GPIO_ResetBits(GPIOB, GPIO_Pin_2); GPIO_ResetBits(GPIOB, GPIO_Pin_1); while (key_is_pressed()); GPIO_SetBits(GPIOB, GPIO_Pin_2); } } } }
static void handle_mouse_key_event(Key mappedKey, uint8_t keyState) { if (key_toggled_off(keyState)) { if (mappedKey.keyCode & KEY_MOUSE_UP || mappedKey.keyCode & KEY_MOUSE_DOWN) { MouseWrapper.mouseActiveForCyclesY=0; } if (mappedKey.keyCode & KEY_MOUSE_LEFT || mappedKey.keyCode & KEY_MOUSE_RIGHT) { MouseWrapper.mouseActiveForCyclesX=0; } } if (!key_is_pressed(keyState)) return; if (mappedKey.keyCode & KEY_MOUSE_UP) { MouseWrapper.move(0,-1); } else if (mappedKey.keyCode & KEY_MOUSE_DOWN) { MouseWrapper.move(0,1); } if (mappedKey.keyCode & KEY_MOUSE_LEFT) { MouseWrapper.move(-1,0); } else if (mappedKey.keyCode & KEY_MOUSE_RIGHT) { MouseWrapper.move(1,0); } }
boolean key_toggled_on(byte keyState) { if (key_is_pressed(keyState) && key_was_not_pressed(keyState)) { return true; } else { return false; } }
void handle_key_event(byte row, byte col, uint8_t *switchState) { //for every newly pressed button, figure out what logical key it is and send a key down event // for every newly released button, figure out what logical key it is and send a key up event Key mappedKey = keymaps[temporary_keymap][row][col]; if (keymaps[primary_keymap][row][col].flags & SWITCH_TO_KEYMAP) { handle_keymap_key_event(*switchState, keymaps[primary_keymap][row][col]); } if (mappedKey.flags & SYNTHETIC_KEY) { handle_synthetic_key_event(*switchState, mappedKey); } else if (key_is_pressed(*switchState)) { press_key(mappedKey); } }
void handle_mouse_key_event(uint8_t switchState, Key mappedKey) { if (key_is_pressed(switchState)) { if (mappedKey.rawKey & KEY_MOUSE_UP) { MouseWrapper.move(0,-1); } if (mappedKey.rawKey & KEY_MOUSE_DOWN) { MouseWrapper.move(0,1); } if (mappedKey.rawKey & KEY_MOUSE_LEFT) { MouseWrapper.move(-1,0); } if (mappedKey.rawKey & KEY_MOUSE_RIGHT) { MouseWrapper.move(1,0); } } }
boolean key_is_not_pressed (byte keyState) { return !key_is_pressed(keyState); }