#ifndef KEYBOARDFIRMWARE_CONFIG_H #define KEYBOARDFIRMWARE_CONFIG_H 1 #define RESET_BUTTON_PIN 8 #define PAIR_LED_PIN 7 #define PAIR_BUTTON_PIN 6 #define OUTPUT_LED_PIN 5 #define KEY_LED_PIN 4 #define OUTPUT_LED_ON HIGH #define OUTPUT_LED_OFF LOW #define DEBUGGING_LED 13 #define DEBUGGING_LED_ON HIGH #define DEBUGGING_LED_OFF LOW #define DEBUG_ENABLE true #define EXTRAKEY_ENABLE 1 #define MOUSEKEY_ENABLE 1 #define MATRIX_ROWS 17 #define MATRIX_COLS 8 #define PS2_CLOCK_PORT PORTD #define PS2_CLOCK_PIN PIND #define PS2_CLOCK_DDR DDRD #define PS2_CLOCK_BIT 1 #define PS2_DATA_PORT PORTD #define PS2_DATA_PIN PIND #define PS2_DATA_DDR DDRD #define PS2_DATA_BIT 0 #define PS2_USE_BUSYWAIT true #ifndef PS2_MATRIX_HAS_GHOSTING #define PS2_MATRIX_HAS_GHOSTING false #endif #endif
- DEBUG_ENABLE - this is a useful feature when you're building your project, as it will output a lot of great information over the Arduino serial monitor as you type. Also debugging information from the Bluefruit module is forwarded to the serial monitor as well. To be sure this is available however on the Arduino Micro (and Leonardo) you have to loop and keep checking to see if it is ready... this will cause your keyboard to hang when it is turned on if you don't have anything connected and listening on the Micro's USB port. Therefore if you use this feature during testing be sure to disable before closing your keyboard up!
- EXTRAKEY_ENABLE and MOUSEKEY_ENABLE - these features enable and disable the "consumer keys" (or "media keys", like volume and music playback) as well as the "mouse keys" feature (which lets you control the mouse cursor using your keyboard). If you don't want these features, you can comment out these lines and your sketch will be a bit smaller. Don't forget to add them back in if you decide to use them - you won't get any errors if you map these keys while they're disabled, they just won't work!
- MATRIX_ROWS and MATRIX_COLS - these values are needed throughout the firmware and they don't typically change so its useful to define them here. Unless you're implementing this on a different keyboard you won't need or want to change these.
- PS2_USE_BUSYWAIT and the PS2 register and and pin definitions - this tells the framework that we are using the bitbang implementation for PS/2, and sets it up on pins 2 and 3. TMK Firmware uses the regular AVR C definitions for the registers as opposed to the Arduino pin numbers; these values should be fine on the Micro, but you might need to double check on a different Arduino. These are also interrupt pins on the Micro so you don't have to change these if you decide to switch to the interrupt based PS/2 driver instead.
- PS2_MATRIX_HAS_GHOSTING - You won't need to do anything with this for this project... if we were implementing a keyboard matrix directly instead of making a converter, we might have to account for cases where multiple keys being pressed could create alternate paths for current to flow on the matrix and create "ghost" keystrokes. The Model M already accounts for ghosting on its matrix so we don't have to worry about it.