Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61b64bb82a | ||
|
|
f11437aef3 | ||
|
|
fc13315300 | ||
|
|
72d3270547 | ||
|
|
92d0a71af7 | ||
|
|
08b405e1e9 | ||
|
|
13eda1b1a2 | ||
|
|
e8d577c081 | ||
|
|
ceb3ef955e | ||
|
|
bc2ebef876 | ||
|
|
7bdfbde35d |
No files matched your search
@@ -73,3 +73,6 @@ __pycache__
|
|||||||
|
|
||||||
# prerequisites for updating ChibiOS
|
# prerequisites for updating ChibiOS
|
||||||
/util/fmpp*
|
/util/fmpp*
|
||||||
|
|
||||||
|
# Allow to exist but don't include it in the repo
|
||||||
|
user_song_list.h
|
||||||
@@ -43,8 +43,6 @@ This is a C header file that is one of the first things included, and will persi
|
|||||||
* generally who/whatever brand produced the board
|
* generally who/whatever brand produced the board
|
||||||
* `#define PRODUCT Board`
|
* `#define PRODUCT Board`
|
||||||
* the name of the keyboard
|
* the name of the keyboard
|
||||||
* `#define DESCRIPTION a keyboard`
|
|
||||||
* a short description of what the keyboard is
|
|
||||||
* `#define MATRIX_ROWS 5`
|
* `#define MATRIX_ROWS 5`
|
||||||
* the number of rows in your keyboard's matrix
|
* the number of rows in your keyboard's matrix
|
||||||
* `#define MATRIX_COLS 15`
|
* `#define MATRIX_COLS 15`
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ This runs code every time that the layers get changed. This can be useful for l
|
|||||||
|
|
||||||
### Example `layer_state_set_*` Implementation
|
### Example `layer_state_set_*` Implementation
|
||||||
|
|
||||||
This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example
|
This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
@@ -343,6 +343,11 @@ layer_state_t layer_state_set_user(layer_state_t state) {
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Use the `IS_LAYER_ON_STATE(state, layer)` and `IS_LAYER_OFF_STATE(state, layer)` macros to check the status of a particular layer.
|
||||||
|
|
||||||
|
Outside of `layer_state_set_*` functions, you can use the `IS_LAYER_ON(layer)` and `IS_LAYER_OFF(layer)` macros to check global layer state.
|
||||||
|
|
||||||
### `layer_state_set_*` Function Documentation
|
### `layer_state_set_*` Function Documentation
|
||||||
|
|
||||||
* Keyboard/Revision: `layer_state_t layer_state_set_kb(layer_state_t state)`
|
* Keyboard/Revision: `layer_state_t layer_state_set_kb(layer_state_t state)`
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ El archivo `config.h` es donde configuras el hardware y el conjunto de caracter
|
|||||||
|
|
||||||
En la parte superior de `config.h` encontrarás ajustes relacionados con USB. Estos controlan la apariencia de tu teclado en el Sistema Operativo. Si no tienes una buena razón para cambiar debes dejar el `VENDOR_ID` como `0xFEED`. Para el `PRODUCT_ID` debes seleccionar un número que todavía no esté en uso.
|
En la parte superior de `config.h` encontrarás ajustes relacionados con USB. Estos controlan la apariencia de tu teclado en el Sistema Operativo. Si no tienes una buena razón para cambiar debes dejar el `VENDOR_ID` como `0xFEED`. Para el `PRODUCT_ID` debes seleccionar un número que todavía no esté en uso.
|
||||||
|
|
||||||
Cambia las líneas de `MANUFACTURER`, `PRODUCT`, y `DESCRIPTION` para reflejar con precisión tu teclado.
|
Cambia las líneas de `MANUFACTURER` y `PRODUCT` para reflejar con precisión tu teclado.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
@@ -75,7 +75,6 @@ Cambia las líneas de `MANUFACTURER`, `PRODUCT`, y `DESCRIPTION` para reflejar c
|
|||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER Tú
|
#define MANUFACTURER Tú
|
||||||
#define PRODUCT mi_teclado_fantastico
|
#define PRODUCT mi_teclado_fantastico
|
||||||
#define DESCRIPTION Un teclado personalizado
|
|
||||||
```
|
```
|
||||||
|
|
||||||
?> Windows y macOS mostrarán el `MANUFACTURER` y `PRODUCT` en la lista de dispositivos USB. `lsusb` en Linux toma estos de la lista mantenida por el [Repositorio de ID USB](http://www.linux-usb.org/usb-ids.html) por defecto. `lsusb -v` mostrará los valores reportados por el dispositivo, y también están presentes en los registros del núcleo después de conectarlo.
|
?> Windows y macOS mostrarán el `MANUFACTURER` y `PRODUCT` en la lista de dispositivos USB. `lsusb` en Linux toma estos de la lista mantenida por el [Repositorio de ID USB](http://www.linux-usb.org/usb-ids.html) por defecto. `lsusb -v` mostrará los valores reportados por el dispositivo, y también están presentes en los registros del núcleo después de conectarlo.
|
||||||
|
|||||||
@@ -74,10 +74,9 @@ There are a number of functions (and variables) related to how you can use or ma
|
|||||||
| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). |
|
| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). |
|
||||||
| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. |
|
| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. |
|
||||||
|
|
||||||
|
In addition to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passes the layer state to the function, where it can be read or modified.
|
||||||
|
|
||||||
In additional to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passed the layer state to the function, which can be read or modified.
|
|Callback |Description |
|
||||||
|
|
||||||
|Callbacks |Description |
|
|
||||||
|-----------------------------------------------------|----------------------------------------------------------------------------------------|
|
|-----------------------------------------------------|----------------------------------------------------------------------------------------|
|
||||||
| `layer_state_set_kb(layer_state_t state)` | Callback for layer functions, for keyboard. |
|
| `layer_state_set_kb(layer_state_t state)` | Callback for layer functions, for keyboard. |
|
||||||
| `layer_state_set_user(layer_state_t state)` | Callback for layer functions, for users. |
|
| `layer_state_set_user(layer_state_t state)` | Callback for layer functions, for users. |
|
||||||
@@ -86,9 +85,9 @@ In additional to the functions that you can call, there are a number of callback
|
|||||||
|
|
||||||
?> For additional details on how you can use these callbacks, check out the [Layer Change Code](custom_quantum_functions.md#layer-change-code) document.
|
?> For additional details on how you can use these callbacks, check out the [Layer Change Code](custom_quantum_functions.md#layer-change-code) document.
|
||||||
|
|
||||||
|Check functions |Description |
|
It is also possible to check the state of a particular layer using the following functions and macros.
|
||||||
|-------------------------------------------|------------------------------------------------------------------------------|
|
|
||||||
| `layer_state_cmp(cmp_layer_state, layer)` | This checks the `cmp_layer_state` to see if the specific `layer` is enabled. This is meant for use with the layer callbacks. |
|
|
||||||
| `layer_state_is(layer)` | This checks the layer state to see if the specific `layer` is enabled. (calls `layer_state_cmp` for the global layer state). |
|
|
||||||
|
|
||||||
!> There is `IS_LAYER_ON(layer)` as well, however the `layer_state_cmp` function has some additional handling to ensure that on layer 0 that it returns the correct value. Otherwise, if you check to see if layer 0 is on, you may get an incorrect value returned.
|
|Function |Description |Aliases
|
||||||
|
|---------------------------------|-------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
|
||||||
|
| `layer_state_is(layer)` | Checks if the specified `layer` is enabled globally. | `IS_LAYER_ON(layer)`, `IS_LAYER_OFF(layer)` |
|
||||||
|
| `layer_state_cmp(state, layer)` | Checks `state` to see if the specified `layer` is enabled. Intended for use in layer callbacks. | `IS_LAYER_ON_STATE(state, layer)`, `IS_LAYER_OFF_STATE(state, layer)` |
|
||||||
@@ -247,6 +247,10 @@ void oled_write_raw_byte(const char data, uint16_t index);
|
|||||||
// Writes a PROGMEM string to the buffer at current cursor position
|
// Writes a PROGMEM string to the buffer at current cursor position
|
||||||
void oled_write_raw_P(const char *data, uint16_t size);
|
void oled_write_raw_P(const char *data, uint16_t size);
|
||||||
|
|
||||||
|
// Sets a specific pixel on or off
|
||||||
|
// Coordinates start at top-left and go right and down for positive x and y
|
||||||
|
void oled_write_pixel(uint8_t x, uint8_t y, bool on);
|
||||||
|
|
||||||
// Can be used to manually turn on the screen if it is off
|
// Can be used to manually turn on the screen if it is off
|
||||||
// Returns true if the screen was on or turns on
|
// Returns true if the screen was on or turns on
|
||||||
bool oled_on(void);
|
bool oled_on(void);
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ The `config.h` file is where you configure the hardware and feature set for your
|
|||||||
|
|
||||||
At the top of the `config.h` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `VENDOR_ID` as `0xFEED`. For the `PRODUCT_ID` you should pick a number that is not yet in use.
|
At the top of the `config.h` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `VENDOR_ID` as `0xFEED`. For the `PRODUCT_ID` you should pick a number that is not yet in use.
|
||||||
|
|
||||||
Do change the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` lines to accurately reflect your keyboard.
|
Do change the `MANUFACTURER` and `PRODUCT` lines to accurately reflect your keyboard.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
@@ -75,7 +75,6 @@ Do change the `MANUFACTURER`, `PRODUCT`, and `DESCRIPTION` lines to accurately r
|
|||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER You
|
#define MANUFACTURER You
|
||||||
#define PRODUCT my_awesome_keyboard
|
#define PRODUCT my_awesome_keyboard
|
||||||
#define DESCRIPTION A custom keyboard
|
|
||||||
```
|
```
|
||||||
|
|
||||||
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead takes these from the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html) by default. `lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
|
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead takes these from the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html) by default. `lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
|
||||||
|
|||||||
@@ -48,8 +48,6 @@ QMK での全ての利用可能な設定にはデフォルトがあります。
|
|||||||
* 一般的に、誰もしくはどのブランドがボードを作成したか
|
* 一般的に、誰もしくはどのブランドがボードを作成したか
|
||||||
* `#define PRODUCT Board`
|
* `#define PRODUCT Board`
|
||||||
* キーボードの名前
|
* キーボードの名前
|
||||||
* `#define DESCRIPTION a keyboard`
|
|
||||||
* キーボードの簡単な説明
|
|
||||||
* `#define MATRIX_ROWS 5`
|
* `#define MATRIX_ROWS 5`
|
||||||
* キーボードのマトリックスの行の数
|
* キーボードのマトリックスの行の数
|
||||||
* `#define MATRIX_COLS 15`
|
* `#define MATRIX_COLS 15`
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ or open the directory in your favourite text editor.
|
|||||||
|
|
||||||
`config.h` の先頭には USB に関する設定があります。これらはキーボードが OS からどのように見えるかを制御しています。変更する理由がない場合は、`VENDOR_ID` を `0xFEED` のままにしておく必要があります。`PRODUCT_ID` にはまだ使用されていない番号を選ばなければいけません。
|
`config.h` の先頭には USB に関する設定があります。これらはキーボードが OS からどのように見えるかを制御しています。変更する理由がない場合は、`VENDOR_ID` を `0xFEED` のままにしておく必要があります。`PRODUCT_ID` にはまだ使用されていない番号を選ばなければいけません。
|
||||||
|
|
||||||
`MANUFACTURER`、 `PRODUCT`、 `DESCRIPTION` をキーボードにあった設定に変更します。
|
`MANUFACTURER`、 `PRODUCT` をキーボードにあった設定に変更します。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
@@ -81,7 +81,6 @@ or open the directory in your favourite text editor.
|
|||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER You
|
#define MANUFACTURER You
|
||||||
#define PRODUCT my_awesome_keyboard
|
#define PRODUCT my_awesome_keyboard
|
||||||
#define DESCRIPTION A custom keyboard
|
|
||||||
```
|
```
|
||||||
|
|
||||||
?> Windows や macOS では、`MANUFACTURER` と `PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりにデフォルトで [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストからこれらを取得します。`lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
|
?> Windows や macOS では、`MANUFACTURER` と `PRODUCT` が USBデバイスのリストに表示されます。Linux 上の `lsusb` では、代わりにデフォルトで [USB ID Repository](http://www.linux-usb.org/usb-ids.html) によって維持されているリストからこれらを取得します。`lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
|
||||||
|
|||||||
@@ -462,6 +462,19 @@ void oled_write_raw(const char *data, uint16_t size) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void oled_write_pixel(uint8_t x, uint8_t y, bool on) {
|
||||||
|
if (x >= OLED_DISPLAY_WIDTH || y >= OLED_DISPLAY_HEIGHT) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
uint16_t index = x + (y / 8) * OLED_DISPLAY_WIDTH;
|
||||||
|
if (on) {
|
||||||
|
oled_buffer[index] |= (1 << (y % 8));
|
||||||
|
} else {
|
||||||
|
oled_buffer[index] &= ~(1 << (y % 8));
|
||||||
|
}
|
||||||
|
oled_dirty |= (1 << (index / OLED_BLOCK_SIZE));
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__AVR__)
|
#if defined(__AVR__)
|
||||||
void oled_write_P(const char *data, bool invert) {
|
void oled_write_P(const char *data, bool invert) {
|
||||||
uint8_t c = pgm_read_byte(data);
|
uint8_t c = pgm_read_byte(data);
|
||||||
|
|||||||
@@ -206,6 +206,10 @@ void oled_pan(bool left);
|
|||||||
void oled_write_raw(const char *data, uint16_t size);
|
void oled_write_raw(const char *data, uint16_t size);
|
||||||
void oled_write_raw_byte(const char data, uint16_t index);
|
void oled_write_raw_byte(const char data, uint16_t index);
|
||||||
|
|
||||||
|
// Sets a specific pixel on or off
|
||||||
|
// Coordinates start at top-left and go right and down for positive x and y
|
||||||
|
void oled_write_pixel(uint8_t x, uint8_t y, bool on);
|
||||||
|
|
||||||
#if defined(__AVR__)
|
#if defined(__AVR__)
|
||||||
// Writes a PROGMEM string to the buffer at current cursor position
|
// Writes a PROGMEM string to the buffer at current cursor position
|
||||||
// Advances the cursor while writing, inverts the pixels if true
|
// Advances the cursor while writing, inverts the pixels if true
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_ESC, KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, \
|
KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_ESC, KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, \
|
||||||
BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, _______, _______, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, \
|
BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, _______, _______, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, \
|
||||||
KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, _______, _______, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, \
|
KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, _______, _______, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, \
|
||||||
MO(SHORT), KC_LCTL, _______, KC_LALT, KC_LGUI, KC_SPC, MO(NUMB), KC_RGUI, KC_RSFT, KC_SPC, _______, _______, _______, _______ \
|
MO(SHORT), KC_LCTL, _______, KC_LALT, KC_LGUI, KC_SPC, MO(NUMB), KC_ENT , KC_RSFT, KC_SPC, _______, _______, _______, _______ \
|
||||||
),
|
),
|
||||||
|
|
||||||
[NUMB] = LAYOUT( \
|
[NUMB] = LAYOUT( \
|
||||||
BP_HASH, BP_DQOT, BP_LDQT, BP_RDQT, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, BP_PERC, KC_BSPC, \
|
BP_HASH, BP_DQOT, BP_LDQU, BP_RDQU, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, BP_PERC, KC_BSPC, \
|
||||||
BP_DLR, BP_1, BP_2, BP_3, BP_4, BP_5, KC_LBRC, KC_RBRC, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEGR, \
|
BP_DLR, BP_1, BP_2, BP_3, BP_4, BP_5, KC_LBRC, KC_RBRC, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEGR, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
|
||||||
CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||||
[1] = LAYOUT( /* FN */
|
[1] = LAYOUT( /* FN */
|
||||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_HOME,
|
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_HOME,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
|
||||||
CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||||
[1] = LAYOUT( /* FN */
|
[1] = LAYOUT( /* FN */
|
||||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_HOME,
|
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_HOME,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ enum layers {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/*
|
/*
|
||||||
* Base Layer: QWERTY
|
* Base Layer: QWERTY
|
||||||
*
|
*
|
||||||
* ,-------------------------------------------. ,-------------------------------------------.
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/* Copyright 2019 Thomas Baart <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
#define OLED_DISPLAY_128X64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
|
||||||
|
// #define SPLIT_USB_DETECT
|
||||||
|
// #define NO_USB_STARTUP_CHECK
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
/* Copyright 2019 Thomas Baart <[email protected]>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "keymap_bepo.h"
|
||||||
|
|
||||||
|
enum layers {
|
||||||
|
_BEPO = 0,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
_ADJUST
|
||||||
|
};
|
||||||
|
|
||||||
|
#define RESC LT(_RAISE, KC_ESC)
|
||||||
|
#define BP_EA BP_E_ACUTE
|
||||||
|
#define BP_AG BP_AGRV
|
||||||
|
#define BP_EG BP_E_GRAVE
|
||||||
|
#define BP_DC BP_DCRC
|
||||||
|
#define BP_AP BP_APOS
|
||||||
|
#define BP_CO BP_COMM
|
||||||
|
#define BP_DT BP_DOT
|
||||||
|
#define LS KC_LSFT
|
||||||
|
#define BP_DOL BP_DOLLAR
|
||||||
|
|
||||||
|
/* Bottom Row */
|
||||||
|
#define BR01 KC_LCTL
|
||||||
|
#define BR02 KC_LALT
|
||||||
|
#define BR03 MT(MOD_LGUI, KC_ENT)
|
||||||
|
#define BR04 LT(_LOWER, KC_SPC)
|
||||||
|
#define BR05 LT(_RAISE, KC_ESC)
|
||||||
|
#define BR06 LT(_LOWER, KC_ENT)
|
||||||
|
#define BR07 LT(_RAISE, KC_SPC)
|
||||||
|
#define BR08 KC_TAB
|
||||||
|
#define BR09 KC_BSPC
|
||||||
|
#define BR10 KC_RALT
|
||||||
|
|
||||||
|
/* Under the screen row */
|
||||||
|
#define U1 KC_LSFT
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Base Layer: BÉPO
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* |RAIS/ESC| B | É | P | O | È | | ^ | V | D | L | J | | Z |
|
||||||
|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||||
|
* | W | A | U | I | E | , | | C | T | S | R | N | M |
|
||||||
|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||||
|
* | LShift | À | Y | X | . | K | SPC |LShift| |LShift|LShift| ’ | Q | G | H | F | Ç |
|
||||||
|
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||||
|
* | CTRL | Alt | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr|
|
||||||
|
* | | | CMD | Lower| Raise| | Lower| Raise| | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
*/
|
||||||
|
[_BEPO] = LAYOUT(
|
||||||
|
RESC, BP_B, BP_EA, BP_P, BP_O, BP_EG, BP_DC, BP_V, BP_D, BP_L, BP_J, BP_Z,
|
||||||
|
BP_W, BP_A, BP_U, BP_I, BP_E, BP_CO, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M,
|
||||||
|
LS, BP_AG, BP_Y, BP_X, BP_DT, BP_K, KC_SPC, U1, U1, U1, BP_AP, BP_Q, BP_G, BP_H, BP_F, BP_CCED,
|
||||||
|
BR01, BR02, BR03, BR04, BR05, BR06, BR07, BR08, BR09, BR10
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
* Lower Layer: Numbers and symbols ?
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | $ | " | « | » | ( | ) | | @ | + | - | / | * | = |
|
||||||
|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||||
|
* | # | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ° |
|
||||||
|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||||
|
* | % | | | | | | | | | | | | | | | | ` |
|
||||||
|
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
*/
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
BP_DOL , BP_DQUO, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR, BP_EQL,
|
||||||
|
BP_HASH, BP_1, BP_2, BP_3, BP_4, BP_5, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEGR,
|
||||||
|
BP_PERC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BP_GRV,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
* Raise Layer: Media
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||||
|
* | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | |
|
||||||
|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||||
|
* | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | |
|
||||||
|
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
*/
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||||
|
_______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
* Adjust Layer: Function keys, RGB
|
||||||
|
*
|
||||||
|
* ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
|
||||||
|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||||
|
* | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | |
|
||||||
|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||||
|
* | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
|
||||||
|
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
*/
|
||||||
|
[_ADJUST] = LAYOUT(
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||||
|
_______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
|
||||||
|
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
// /*
|
||||||
|
// * Layer template
|
||||||
|
// *
|
||||||
|
// * ,-------------------------------------------. ,-------------------------------------------.
|
||||||
|
// * | | | | | | | | | | | | | |
|
||||||
|
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||||
|
// * | | | | | | | | | | | | | |
|
||||||
|
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||||
|
// * | | | | | | | | | | | | | | | | | |
|
||||||
|
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||||
|
// * | | | | | | | | | | | |
|
||||||
|
// * | | | | | | | | | | | |
|
||||||
|
// * `----------------------------------' `----------------------------------'
|
||||||
|
// */
|
||||||
|
// [_LAYERINDEX] = LAYOUT(
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// ),
|
||||||
|
};
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
|
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
return OLED_ROTATION_180;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_kyria_logo(void) {
|
||||||
|
static const char PROGMEM kyria_logo[] = {
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
};
|
||||||
|
oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_qmk_logo(void) {
|
||||||
|
static const char PROGMEM qmk_logo[] = {
|
||||||
|
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||||
|
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||||
|
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
|
||||||
|
|
||||||
|
oled_write_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_status(void) {
|
||||||
|
// QMK Logo and version information
|
||||||
|
render_qmk_logo();
|
||||||
|
oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
|
||||||
|
|
||||||
|
// Host Keyboard Layer Status
|
||||||
|
oled_write_P(PSTR("Layer: "), false);
|
||||||
|
switch (get_highest_layer(layer_state)) {
|
||||||
|
case _BEPO:
|
||||||
|
oled_write_P(PSTR("BEPO\n"), false);
|
||||||
|
break;
|
||||||
|
case _LOWER:
|
||||||
|
oled_write_P(PSTR("NumSym\n"), false);
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
oled_write_P(PSTR("Media\n"), false);
|
||||||
|
break;
|
||||||
|
case _ADJUST:
|
||||||
|
oled_write_P(PSTR("Adjust\n"), false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
oled_write_P(PSTR("Undefined\n"), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Host Keyboard LED Status
|
||||||
|
uint8_t led_usb_state = host_keyboard_leds();
|
||||||
|
oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
|
||||||
|
oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
|
||||||
|
oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
if (is_keyboard_master()) {
|
||||||
|
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||||
|
} else {
|
||||||
|
render_kyria_logo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (index == 0) {
|
||||||
|
// Volume control
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (index == 1) {
|
||||||
|
// Page up/Page down
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_PGDN);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_PGUP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
|
||||||
|
ENCODER_ENABLE = yes # Enables the use of one or more encoders
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
/* Copyright %YEAR% %YOUR_NAME%
|
/* Copyright 2020 QMK Contributors
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
@@ -14,6 +14,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303
|
||||||
|
// so we need to change resolution and frequency to match.
|
||||||
// place overrides here
|
#define CH_CFG_ST_RESOLUTION 16
|
||||||
|
#define CH_CFG_ST_FREQUENCY 10000
|
||||||
|
#include_next "chconf.h"
|
||||||
@@ -126,17 +126,18 @@
|
|||||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||||
|
|
||||||
// #define WS2812_LED_N 2
|
|
||||||
// #define RGBLED_NUM WS2812_LED_N
|
/*
|
||||||
// #define WS2812_TIM_N 2
|
* WS2812 Underglow Matrix options
|
||||||
// #define WS2812_TIM_CH 2
|
*/
|
||||||
// #define PORT_WS2812 GPIOA
|
|
||||||
// #define PIN_WS2812 1
|
|
||||||
// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
|
||||||
//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP
|
|
||||||
//#define WS2812_EXTERNAL_PULLUP
|
|
||||||
#define RGB_DI_PIN A1
|
#define RGB_DI_PIN A1
|
||||||
#define RGBLED_NUM 9
|
#define RGBLED_NUM 9
|
||||||
#define RGBLIGHT_ANIMATIONS
|
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||||
|
|
||||||
|
#define WS2812_PWM_DRIVER PWMD2
|
||||||
|
#define WS2812_PWM_CHANNEL 2
|
||||||
|
#define WS2812_PWM_PAL_MODE 1
|
||||||
|
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
|
||||||
|
#define WS2812_DMA_CHANNEL 2
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright 2020 QMK Contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include_next "mcuconf.h"
|
||||||
|
|
||||||
|
// The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used
|
||||||
|
// on the Planck requires the use of TIM2 to run PWM -- rework which timers are
|
||||||
|
// allocated for PWM usage.
|
||||||
|
#undef STM32_PWM_USE_TIM2
|
||||||
|
#undef STM32_PWM_USE_TIM3
|
||||||
|
#define STM32_PWM_USE_TIM2 TRUE
|
||||||
|
#define STM32_PWM_USE_TIM3 FALSE
|
||||||
|
|
||||||
|
// As mentioned above, we need to reallocate the SysTick timer used from
|
||||||
|
// TIM2 to TIM3.
|
||||||
|
#undef STM32_ST_USE_TIMER
|
||||||
|
#define STM32_ST_USE_TIMER 3
|
||||||
@@ -15,6 +15,25 @@
|
|||||||
*/
|
*/
|
||||||
#include "rev6.h"
|
#include "rev6.h"
|
||||||
|
|
||||||
|
led_config_t g_led_config = { {
|
||||||
|
// Key Matrix to LED Index
|
||||||
|
{ NO_LED, 6, NO_LED, NO_LED, 5, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 },
|
||||||
|
{ NO_LED, 7, NO_LED, NO_LED, 2, NO_LED },
|
||||||
|
{ NO_LED, 4, NO_LED, NO_LED, 3, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
{ NO_LED, 1, NO_LED, NO_LED, 8, NO_LED },
|
||||||
|
}, {
|
||||||
|
// LED Index to Physical Position
|
||||||
|
{112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60}
|
||||||
|
}, {
|
||||||
|
// LED Index to Flag
|
||||||
|
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
|
||||||
|
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
|
||||||
|
} };
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,14 @@ AUDIO_ENABLE = yes # Audio output
|
|||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||||
WS2812_DRIVER = bitbang
|
WS2812_DRIVER = pwm
|
||||||
API_SYSEX_ENABLE = no
|
API_SYSEX_ENABLE = no
|
||||||
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
RGB_MATRIX_ENABLE = WS2812
|
||||||
# SERIAL_LINK_ENABLE = yes
|
# SERIAL_LINK_ENABLE = yes
|
||||||
ENCODER_ENABLE = yes
|
ENCODER_ENABLE = yes
|
||||||
DIP_SWITCH_ENABLE = yes
|
DIP_SWITCH_ENABLE = yes
|
||||||
|
|||||||
@@ -170,20 +170,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ,-----------------------------------------------------------------------------------.
|
* ,-----------------------------------------------------------------------------------.
|
||||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
* |RGB_TO| | WHL_U|Mclick| | HU_D | HU_I | LCTL | MS_U | WHL_U| | Del |
|
* | |RGB_TO| WHL_U|Mclick| | HU_D | HU_I | LCTL | MS_U | WHL_U| | Del |
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
* +------|------+------+------+------+-------------+------+------+------+------+------|
|
||||||
* |RGB_MO| | WHL_D|Rclick|Lclick| SA_D | SA_I | MS_L | MS_D | MS_R | | ACL0 |
|
* | |RGB_MO| WHL_D|Rclick|Lclick| SA_D | SA_I | MS_L | MS_D | MS_R | | ACL0 |
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
* +------|------+------+------+------+------|------+------+------+------+------+------|
|
||||||
* |RGB_MR| | | | | VA_D | VA_I | WHL_D| WHL_L| WHL_R| | ACL1 |
|
* | |RGB_MR| | | | VA_D | VA_I | WHL_D| WHL_L| WHL_R| | ACL1 |
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | ACL2 |
|
* | | | | | | | | | | | ACL2 |
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_MOUSE] = LAYOUT_preonic_grid(
|
[_MOUSE] = LAYOUT_preonic_grid(
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
|
||||||
RGB_TOG, _______, KC_WH_U, KC_BTN3, _______, RGB_HUD, RGB_HUI, KC_LCTL, KC_MS_U, KC_WH_U, _______, KC_DEL, \
|
_______, RGB_TOG, KC_WH_U, KC_BTN3, _______, RGB_HUD, RGB_HUI, KC_LCTL, KC_MS_U, KC_WH_U, _______, KC_DEL, \
|
||||||
RGB_MOD, _______, KC_WH_D, KC_BTN2, KC_BTN1, RGB_SAD, RGB_SAI, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_ACL0, \
|
_______, RGB_MOD, KC_WH_D, KC_BTN2, KC_BTN1, RGB_SAD, RGB_SAI, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_ACL0, \
|
||||||
RGB_RMOD,_______, _______, _______, _______, RGB_VAD, RGB_VAI, KC_WH_D, KC_WH_L, KC_WH_R, _______, KC_ACL1, \
|
_______, RGB_RMOD,_______, _______, _______, RGB_VAD, RGB_VAI, KC_WH_D, KC_WH_L, KC_WH_R, _______, KC_ACL1, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL2 \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL2 \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,6 @@ def _extract_config_h(info_data):
|
|||||||
'device_ver': config_c.get('DEVICE_VER'),
|
'device_ver': config_c.get('DEVICE_VER'),
|
||||||
'manufacturer': config_c.get('MANUFACTURER'),
|
'manufacturer': config_c.get('MANUFACTURER'),
|
||||||
'product': config_c.get('PRODUCT'),
|
'product': config_c.get('PRODUCT'),
|
||||||
'description': config_c.get('DESCRIPTION'),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return info_data
|
return info_data
|
||||||
|
|||||||
+129
-41
@@ -20,6 +20,12 @@
|
|||||||
|
|
||||||
#include "musical_notes.h"
|
#include "musical_notes.h"
|
||||||
|
|
||||||
|
#if __GNUC__ > 5 // don't use for older gcc compilers since check isn't supported.
|
||||||
|
# if __has_include("user_song_list.h")
|
||||||
|
# include "user_song_list.h"
|
||||||
|
# endif // if file exists
|
||||||
|
#endif // __GNUC__
|
||||||
|
|
||||||
#define NO_SOUND
|
#define NO_SOUND
|
||||||
|
|
||||||
/* Ode to Joy
|
/* Ode to Joy
|
||||||
@@ -146,44 +152,126 @@
|
|||||||
* proof of permission to use them, or public domain status.
|
* proof of permission to use them, or public domain status.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CLOSE_ENCOUNTERS_5_NOTE
|
#ifndef CLOSE_ENCOUNTERS_5_NOTE
|
||||||
#define DOE_A_DEER
|
# define CLOSE_ENCOUNTERS_5_NOTE
|
||||||
#define IN_LIKE_FLINT
|
#endif
|
||||||
#define IMPERIAL_MARCH
|
#ifndef DOE_A_DEER
|
||||||
#define BASKET_CASE
|
# define DOE_A_DEER
|
||||||
#define COIN_SOUND
|
#endif
|
||||||
#define ONE_UP_SOUND
|
#ifndef IN_LIKE_FLINT
|
||||||
#define SONIC_RING
|
# define IN_LIKE_FLINT
|
||||||
#define ZELDA_PUZZLE
|
#endif
|
||||||
#define ZELDA_TREASURE
|
#ifndef IMPERIAL_MARCH
|
||||||
#define OVERWATCH_THEME
|
# define IMPERIAL_MARCH
|
||||||
#define MARIO_THEME
|
#endif
|
||||||
#define MARIO_GAMEOVER
|
#ifndef BASKET_CASE
|
||||||
#define MARIO_MUSHROOM
|
# define BASKET_CASE
|
||||||
#define E1M1_DOOM
|
#endif
|
||||||
#define DISNEY_SONG
|
#ifndef COIN_SOUND
|
||||||
#define NUMBER_ONE
|
# define COIN_SOUND
|
||||||
#define CABBAGE_SONG
|
#endif
|
||||||
#define OLD_SPICE
|
#ifndef ONE_UP_SOUND
|
||||||
#define VICTORY_FANFARE_SHORT
|
# define ONE_UP_SOUND
|
||||||
#define ALL_STAR
|
#endif
|
||||||
#define RICK_ROLL
|
#ifndef SONIC_RING
|
||||||
#define FF_PRELUDE
|
# define SONIC_RING
|
||||||
#define TO_BOLDLY_GO
|
#endif
|
||||||
#define KATAWARE_DOKI
|
#ifndef ZELDA_PUZZLE
|
||||||
#define MEGALOVANIA
|
# define ZELDA_PUZZLE
|
||||||
#define MICHISHIRUBE
|
#endif
|
||||||
#define LIEBESLEID
|
#ifndef ZELDA_TREASURE
|
||||||
#define MELODIES_OF_LIFE
|
# define ZELDA_TREASURE
|
||||||
#define EYES_ON_ME
|
#endif
|
||||||
#define SONG_OF_THE_ANCIENTS
|
#ifndef OVERWATCH_THEME
|
||||||
#define NIER_AMUSEMENT_PARK
|
# define OVERWATCH_THEME
|
||||||
#define COPIED_CITY
|
#endif
|
||||||
#define VAGUE_HOPE_COLD_RAIN
|
#ifndef MARIO_THEME
|
||||||
#define KAINE_SALVATION
|
# define MARIO_THEME
|
||||||
#define WEIGHT_OF_THE_WORLD
|
#endif
|
||||||
#define ISABELLAS_LULLABY
|
#ifndef MARIO_GAMEOVER
|
||||||
#define TERRAS_THEME
|
# define MARIO_GAMEOVER
|
||||||
#define RENAI_CIRCULATION
|
#endif
|
||||||
#define PLATINUM_DISCO
|
#ifndef MARIO_MUSHROOM
|
||||||
#define LP_NUMB
|
# define MARIO_MUSHROOM
|
||||||
|
#endif
|
||||||
|
#ifndef E1M1_DOOM
|
||||||
|
# define E1M1_DOOM
|
||||||
|
#endif
|
||||||
|
#ifndef DISNEY_SONG
|
||||||
|
# define DISNEY_SONG
|
||||||
|
#endif
|
||||||
|
#ifndef NUMBER_ONE
|
||||||
|
# define NUMBER_ONE
|
||||||
|
#endif
|
||||||
|
#ifndef CABBAGE_SONG
|
||||||
|
# define CABBAGE_SONG
|
||||||
|
#endif
|
||||||
|
#ifndef OLD_SPICE
|
||||||
|
# define OLD_SPICE
|
||||||
|
#endif
|
||||||
|
#ifndef VICTORY_FANFARE_SHORT
|
||||||
|
# define VICTORY_FANFARE_SHORT
|
||||||
|
#endif
|
||||||
|
#ifndef ALL_STAR
|
||||||
|
# define ALL_STAR
|
||||||
|
#endif
|
||||||
|
#ifndef RICK_ROLL
|
||||||
|
# define RICK_ROLL
|
||||||
|
#endif
|
||||||
|
#ifndef FF_PRELUDE
|
||||||
|
# define FF_PRELUDE
|
||||||
|
#endif
|
||||||
|
#ifndef TO_BOLDLY_GO
|
||||||
|
# define TO_BOLDLY_GO
|
||||||
|
#endif
|
||||||
|
#ifndef KATAWARE_DOKI
|
||||||
|
# define KATAWARE_DOKI
|
||||||
|
#endif
|
||||||
|
#ifndef MEGALOVANIA
|
||||||
|
# define MEGALOVANIA
|
||||||
|
#endif
|
||||||
|
#ifndef MICHISHIRUBE
|
||||||
|
# define MICHISHIRUBE
|
||||||
|
#endif
|
||||||
|
#ifndef LIEBESLEID
|
||||||
|
# define LIEBESLEID
|
||||||
|
#endif
|
||||||
|
#ifndef MELODIES_OF_LIFE
|
||||||
|
# define MELODIES_OF_LIFE
|
||||||
|
#endif
|
||||||
|
#ifndef EYES_ON_ME
|
||||||
|
# define EYES_ON_ME
|
||||||
|
#endif
|
||||||
|
#ifndef SONG_OF_THE_ANCIENTS
|
||||||
|
# define SONG_OF_THE_ANCIENTS
|
||||||
|
#endif
|
||||||
|
#ifndef NIER_AMUSEMENT_PARK
|
||||||
|
# define NIER_AMUSEMENT_PARK
|
||||||
|
#endif
|
||||||
|
#ifndef COPIED_CITY
|
||||||
|
# define COPIED_CITY
|
||||||
|
#endif
|
||||||
|
#ifndef VAGUE_HOPE_COLD_RAIN
|
||||||
|
# define VAGUE_HOPE_COLD_RAIN
|
||||||
|
#endif
|
||||||
|
#ifndef KAINE_SALVATION
|
||||||
|
# define KAINE_SALVATION
|
||||||
|
#endif
|
||||||
|
#ifndef WEIGHT_OF_THE_WORLD
|
||||||
|
# define WEIGHT_OF_THE_WORLD
|
||||||
|
#endif
|
||||||
|
#ifndef ISABELLAS_LULLABY
|
||||||
|
# define ISABELLAS_LULLABY
|
||||||
|
#endif
|
||||||
|
#ifndef TERRAS_THEME
|
||||||
|
# define TERRAS_THEME
|
||||||
|
#endif
|
||||||
|
#ifndef RENAI_CIRCULATION
|
||||||
|
# define RENAI_CIRCULATION
|
||||||
|
#endif
|
||||||
|
#ifndef PLATINUM_DISCO
|
||||||
|
# define PLATINUM_DISCO
|
||||||
|
#endif
|
||||||
|
#ifndef LP_NUMB
|
||||||
|
# define LP_NUMB
|
||||||
|
#endif
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
#define CA_APSN RCTL(CA_N) // ʼn
|
#define CA_APSN RCTL(CA_N) // ʼn
|
||||||
#define CA_MICR RCTL(CA_M) // μ
|
#define CA_MICR RCTL(CA_M) // μ
|
||||||
#define CA_HRZB RCTL(CA_COMM) // ―
|
#define CA_HRZB RCTL(CA_COMM) // ―
|
||||||
#define CA_DOTA ALGR(CA_DOT) // ˙ (dead)
|
#define CA_DOTA RCTL(CA_DOT) // ˙ (dead)
|
||||||
|
|
||||||
/* Shift+Right Ctrl symbols
|
/* Shift+Right Ctrl symbols
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||||
|
|||||||
+5
-2
@@ -249,8 +249,11 @@ void set_single_persistent_default_layer(uint8_t default_layer);
|
|||||||
|
|
||||||
void tap_random_base64(void);
|
void tap_random_base64(void);
|
||||||
|
|
||||||
#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer)))
|
#define IS_LAYER_ON(layer) layer_state_is(layer)
|
||||||
#define IS_LAYER_OFF(layer) (~layer_state & (1UL << (layer)))
|
#define IS_LAYER_OFF(layer) !layer_state_is(layer)
|
||||||
|
|
||||||
|
#define IS_LAYER_ON_STATE(state, layer) layer_state_cmp(state, layer)
|
||||||
|
#define IS_LAYER_OFF_STATE(state, layer) !layer_state_cmp(state, layer)
|
||||||
|
|
||||||
void matrix_init_kb(void);
|
void matrix_init_kb(void);
|
||||||
void matrix_scan_kb(void);
|
void matrix_scan_kb(void);
|
||||||
|
|||||||
+39
-144
@@ -20,12 +20,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x0000
|
#define PRODUCT_ID 0x0000
|
||||||
#define DEVICE_VER 0x0001
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER %YOUR_NAME%
|
#define MANUFACTURER %YOUR_NAME%
|
||||||
#define PRODUCT %KEYBOARD%
|
#define PRODUCT %KEYBOARD%
|
||||||
#define DESCRIPTION A custom keyboard
|
|
||||||
|
|
||||||
/* key matrix size */
|
/* key matrix size */
|
||||||
#define MATRIX_ROWS 2
|
#define MATRIX_ROWS 2
|
||||||
@@ -45,7 +44,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define MATRIX_COL_PINS { F1, F0, B0 }
|
#define MATRIX_COL_PINS { F1, F0, B0 }
|
||||||
#define UNUSED_PINS
|
#define UNUSED_PINS
|
||||||
|
|
||||||
/* COL2ROW, ROW2COL*/
|
/* COL2ROW, ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -53,37 +52,37 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||||
|
|
||||||
// #define BACKLIGHT_PIN B7
|
//#define BACKLIGHT_PIN B7
|
||||||
// #define BACKLIGHT_BREATHING
|
//#define BACKLIGHT_LEVELS 3
|
||||||
// #define BACKLIGHT_LEVELS 3
|
//#define BACKLIGHT_BREATHING
|
||||||
|
|
||||||
// #define RGB_DI_PIN E2
|
//#define RGB_DI_PIN E2
|
||||||
// #ifdef RGB_DI_PIN
|
//#ifdef RGB_DI_PIN
|
||||||
// #define RGBLED_NUM 16
|
//# define RGBLED_NUM 16
|
||||||
// #define RGBLIGHT_HUE_STEP 8
|
//# define RGBLIGHT_HUE_STEP 8
|
||||||
// #define RGBLIGHT_SAT_STEP 8
|
//# define RGBLIGHT_SAT_STEP 8
|
||||||
// #define RGBLIGHT_VAL_STEP 8
|
//# define RGBLIGHT_VAL_STEP 8
|
||||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
// /*== all animations enable ==*/
|
/*== all animations enable ==*/
|
||||||
// #define RGBLIGHT_ANIMATIONS
|
//# define RGBLIGHT_ANIMATIONS
|
||||||
// /*== or choose animations ==*/
|
/*== or choose animations ==*/
|
||||||
// #define RGBLIGHT_EFFECT_BREATHING
|
//# define RGBLIGHT_EFFECT_BREATHING
|
||||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
// #define RGBLIGHT_EFFECT_SNAKE
|
//# define RGBLIGHT_EFFECT_SNAKE
|
||||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
//# define RGBLIGHT_EFFECT_KNIGHT
|
||||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
//# define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
//# define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
//# define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
// /*== customize breathing effect ==*/
|
/*== customize breathing effect ==*/
|
||||||
// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
// /*==== use exp() and sin() ====*/
|
/*==== use exp() and sin() ====*/
|
||||||
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
// #endif
|
//#endif
|
||||||
|
|
||||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
@@ -97,9 +96,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define LOCKING_RESYNC_ENABLE
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
*/
|
*/
|
||||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Force NKRO
|
* Force NKRO
|
||||||
@@ -122,59 +121,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*/
|
*/
|
||||||
//#define FORCE_NKRO
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
/*
|
|
||||||
* Magic Key Options
|
|
||||||
*
|
|
||||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
|
||||||
* the keyboard. They are best used in combination with the HID Listen program,
|
|
||||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
|
||||||
*
|
|
||||||
* The options below allow the magic key functionality to be changed. This is
|
|
||||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* key combination for magic key command */
|
|
||||||
/* defined by default; to change, uncomment and set to the combination you want */
|
|
||||||
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
|
||||||
|
|
||||||
/* control how magic key switches layers */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
|
||||||
|
|
||||||
/* override magic key keymap */
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
|
||||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
|
||||||
//#define MAGIC_KEY_HELP H
|
|
||||||
//#define MAGIC_KEY_HELP_ALT SLASH
|
|
||||||
//#define MAGIC_KEY_DEBUG D
|
|
||||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
|
||||||
//#define MAGIC_KEY_DEBUG_KBD K
|
|
||||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
|
||||||
//#define MAGIC_KEY_VERSION V
|
|
||||||
//#define MAGIC_KEY_STATUS S
|
|
||||||
//#define MAGIC_KEY_CONSOLE C
|
|
||||||
//#define MAGIC_KEY_LAYER0 0
|
|
||||||
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
|
||||||
//#define MAGIC_KEY_LAYER1 1
|
|
||||||
//#define MAGIC_KEY_LAYER2 2
|
|
||||||
//#define MAGIC_KEY_LAYER3 3
|
|
||||||
//#define MAGIC_KEY_LAYER4 4
|
|
||||||
//#define MAGIC_KEY_LAYER5 5
|
|
||||||
//#define MAGIC_KEY_LAYER6 6
|
|
||||||
//#define MAGIC_KEY_LAYER7 7
|
|
||||||
//#define MAGIC_KEY_LAYER8 8
|
|
||||||
//#define MAGIC_KEY_LAYER9 9
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER B
|
|
||||||
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
|
||||||
//#define MAGIC_KEY_LOCK CAPS
|
|
||||||
//#define MAGIC_KEY_EEPROM E
|
|
||||||
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
|
||||||
//#define MAGIC_KEY_NKRO N
|
|
||||||
//#define MAGIC_KEY_SLEEP_LED Z
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Feature disable options
|
* Feature disable options
|
||||||
* These options are also useful to firmware size reduction.
|
* These options are also useful to firmware size reduction.
|
||||||
@@ -195,57 +141,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define NO_ACTION_MACRO
|
#define NO_ACTION_MACRO
|
||||||
#define NO_ACTION_FUNCTION
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
/*
|
|
||||||
* MIDI options
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Prevent use of disabled MIDI features in the keymap */
|
|
||||||
//#define MIDI_ENABLE_STRICT 1
|
|
||||||
|
|
||||||
/* enable basic MIDI features:
|
|
||||||
- MIDI notes can be sent when in Music mode is on
|
|
||||||
*/
|
|
||||||
//#define MIDI_BASIC
|
|
||||||
|
|
||||||
/* enable advanced MIDI features:
|
|
||||||
- MIDI notes can be added to the keymap
|
|
||||||
- Octave shift and transpose
|
|
||||||
- Virtual sustain, portamento, and modulation wheel
|
|
||||||
- etc.
|
|
||||||
*/
|
|
||||||
//#define MIDI_ADVANCED
|
|
||||||
|
|
||||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
|
||||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HD44780 LCD Display Configuration
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
#define LCD_LINES 2 //< number of visible lines of the display
|
|
||||||
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
|
||||||
|
|
||||||
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
|
||||||
|
|
||||||
#if LCD_IO_MODE
|
|
||||||
#define LCD_PORT PORTB //< port for the LCD lines
|
|
||||||
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
|
||||||
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
|
||||||
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
|
||||||
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
|
||||||
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
|
||||||
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
|
||||||
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
|
||||||
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
|
||||||
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
|
||||||
#define LCD_RS_PIN 3 //< pin for RS line
|
|
||||||
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
|
||||||
#define LCD_RW_PIN 2 //< pin for RW line
|
|
||||||
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
|
||||||
#define LCD_E_PIN 1 //< pin for Enable line
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Bootmagic Lite key configuration */
|
/* Bootmagic Lite key configuration */
|
||||||
// #define BOOTMAGIC_LITE_ROW 0
|
//#define BOOTMAGIC_LITE_ROW 0
|
||||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
//#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -2,14 +2,18 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
A short description of the keyboard/project
|
*A short description of the keyboard/project*
|
||||||
|
|
||||||
* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
|
* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
|
||||||
* Hardware Supported: The PCBs, controllers supported
|
* Hardware Supported: *The PCBs, controllers supported*
|
||||||
* Hardware Availability: Links to where you can find this hardware
|
* Hardware Availability: *Links to where you can find this hardware*
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
make %KEYBOARD%:default
|
make %KEYBOARD%:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make %KEYBOARD%:default:flash
|
||||||
|
|
||||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -2,31 +2,21 @@
|
|||||||
MCU = atmega32u4
|
MCU = atmega32u4
|
||||||
|
|
||||||
# Bootloader selection
|
# Bootloader selection
|
||||||
# Teensy halfkay
|
|
||||||
# Pro Micro caterina
|
|
||||||
# Atmel DFU atmel-dfu
|
|
||||||
# LUFA DFU lufa-dfu
|
|
||||||
# QMK DFU qmk-dfu
|
|
||||||
# ATmega32A bootloadHID
|
|
||||||
# ATmega328P USBasp
|
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE = no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
MIDI_ENABLE = no # MIDI support
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
|
||||||
AUDIO_ENABLE = no # Audio output
|
AUDIO_ENABLE = no # Audio output
|
||||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
|
||||||
@@ -7,11 +7,12 @@
|
|||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"label":"k00", "x":0, "y":0},
|
{"label": "k00", "x": 0, "y": 0},
|
||||||
{"label":"k01", "x":1, "y":0},
|
{"label": "k01", "x": 1, "y": 0},
|
||||||
{"label":"k02", "x":2, "y":0},
|
{"label": "k02", "x": 2, "y": 0},
|
||||||
{"label":"k10", "x":0, "y":1, "w":1.5},
|
|
||||||
{"label":"k12", "x":1.5, "y":1, "w":1.5}
|
{"label": "k10", "x": 0, "y": 1, "w": 1.5},
|
||||||
|
{"label": "k12", "x": 1.5, "y": 1, "w": 1.5}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,36 +15,3 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "%KEYBOARD%.h"
|
#include "%KEYBOARD%.h"
|
||||||
|
|
||||||
// Optional override functions below.
|
|
||||||
// You can leave any or all of these undefined.
|
|
||||||
// These are only required if you want to perform custom actions.
|
|
||||||
|
|
||||||
/*
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
// put your keyboard start-up code here
|
|
||||||
// runs once when the firmware starts up
|
|
||||||
|
|
||||||
matrix_init_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
|
||||||
// put your looping keyboard code here
|
|
||||||
// runs every cycle (a lot)
|
|
||||||
|
|
||||||
matrix_scan_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
// put your per-action keyboard code here
|
|
||||||
// runs for every action, just before processing by the firmware
|
|
||||||
|
|
||||||
return process_record_user(keycode, record);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool led_update_kb(led_t led_state) {
|
|
||||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
|
||||||
|
|
||||||
return led_update_user(led_state);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -29,8 +29,7 @@
|
|||||||
#define LAYOUT( \
|
#define LAYOUT( \
|
||||||
k00, k01, k02, \
|
k00, k01, k02, \
|
||||||
k10, k12 \
|
k10, k12 \
|
||||||
) \
|
) { \
|
||||||
{ \
|
|
||||||
{ k00, k01, k02 }, \
|
{ k00, k01, k02 }, \
|
||||||
{ k10, KC_NO, k12 } \
|
{ k10, KC_NO, k12 } \
|
||||||
}
|
}
|
||||||
@@ -60,17 +60,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool led_update_user(led_t led_state) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -19,37 +19,120 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
#define VENDOR_ID 0x20A0
|
/* USB Device descriptor parameter */
|
||||||
#define PRODUCT_ID 0x422D
|
#define VENDOR_ID 0xFEED
|
||||||
#define DEVICE_VER 0x0001
|
#define PRODUCT_ID 0x0000
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
#define MANUFACTURER %YOUR_NAME%
|
#define MANUFACTURER %YOUR_NAME%
|
||||||
#define PRODUCT %KEYBOARD%
|
#define PRODUCT %KEYBOARD%
|
||||||
#define DESCRIPTION A custom keyboard
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
|
||||||
|
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW, ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN D4
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
//#define BACKLIGHT_BREATHING
|
||||||
|
|
||||||
#define RGBLED_NUM 16
|
#define RGBLED_NUM 16
|
||||||
|
//#define RGBLIGHT_HUE_STEP 8
|
||||||
|
//#define RGBLIGHT_SAT_STEP 8
|
||||||
|
//#define RGBLIGHT_VAL_STEP 8
|
||||||
|
//#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
//#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
/*== all animations enable ==*/
|
||||||
|
//#define RGBLIGHT_ANIMATIONS
|
||||||
|
/*== or choose animations ==*/
|
||||||
|
//#define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
//#define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
//#define RGBLIGHT_EFFECT_KNIGHT
|
||||||
|
//#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||||
|
//#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
//#define RGBLIGHT_EFFECT_RGB_TEST
|
||||||
|
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||||
|
/*== customize breathing effect ==*/
|
||||||
|
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
|
||||||
|
//#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
|
||||||
|
/*==== use exp() and sin() ====*/
|
||||||
|
//#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||||
|
//#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||||
|
|
||||||
#define MATRIX_ROWS 8
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
#define MATRIX_COLS 11
|
|
||||||
|
|
||||||
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
|
|
||||||
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5 }
|
|
||||||
// #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, C0, D7 }
|
|
||||||
#define UNUSED_PINS {}
|
|
||||||
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
#define BACKLIGHT_LEVELS 1
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
#define RGBLIGHT_ANIMATIONS
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||||
|
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||||
|
*/
|
||||||
|
//#define GRAVE_ESC_CTRL_OVERRIDE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
|
||||||
/* disable these deprecated features by default */
|
/* disable these deprecated features by default */
|
||||||
#define NO_ACTION_MACRO
|
#define NO_ACTION_MACRO
|
||||||
#define NO_ACTION_FUNCTION
|
#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
/* key combination for magic key command */
|
|
||||||
/* defined by default; to change, uncomment and set to the combination you want */
|
|
||||||
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
|
|
||||||
|
|
||||||
/* Bootmagic Lite key configuration */
|
/* Bootmagic Lite key configuration */
|
||||||
// #define BOOTMAGIC_LITE_ROW 0
|
//#define BOOTMAGIC_LITE_ROW 0
|
||||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
//#define BOOTMAGIC_LITE_COLUMN 0
|
||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
A short description of the keyboard/project
|
*A short description of the keyboard/project*
|
||||||
|
|
||||||
* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
|
* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
|
||||||
* Hardware Supported: The PCBs, controllers supported
|
* Hardware Supported: *The PCBs, controllers supported*
|
||||||
* Hardware Availability: links to where you can find this hardware
|
* Hardware Availability: *Links to where you can find this hardware*
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
|||||||
@@ -2,23 +2,18 @@
|
|||||||
MCU = atmega32a
|
MCU = atmega32a
|
||||||
|
|
||||||
# Bootloader selection
|
# Bootloader selection
|
||||||
# Teensy halfkay
|
|
||||||
# Pro Micro caterina
|
|
||||||
# Atmel DFU atmel-dfu
|
|
||||||
# LUFA DFU lufa-dfu
|
|
||||||
# QMK DFU qmk-dfu
|
|
||||||
# ATmega32A bootloadHID
|
|
||||||
# ATmega328P USBasp
|
|
||||||
BOOTLOADER = bootloadHID
|
BOOTLOADER = bootloadHID
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
WS2812_DRIVER = i2c
|
WS2812_DRIVER = i2c
|
||||||
@@ -141,7 +141,6 @@ static void command_common_help(void) {
|
|||||||
static void print_version(void) {
|
static void print_version(void) {
|
||||||
// print version & information
|
// print version & information
|
||||||
print("\n\t- Version -\n");
|
print("\n\t- Version -\n");
|
||||||
print("DESC: " STR(DESCRIPTION) "\n");
|
|
||||||
print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
|
print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
|
||||||
"PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
|
"PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
|
||||||
"VER: " STR(DEVICE_VER) "\n");
|
"VER: " STR(DEVICE_VER) "\n");
|
||||||
|
|||||||
@@ -1,126 +0,0 @@
|
|||||||
#----------------------------------------------------------------------------
|
|
||||||
# On command line:
|
|
||||||
#
|
|
||||||
# make all = Make software.
|
|
||||||
#
|
|
||||||
# make clean = Clean out built project files.
|
|
||||||
#
|
|
||||||
# make coff = Convert ELF to AVR COFF.
|
|
||||||
#
|
|
||||||
# make extcoff = Convert ELF to AVR Extended COFF.
|
|
||||||
#
|
|
||||||
# make program = Download the hex file to the device.
|
|
||||||
# Please customize your programmer settings(PROGRAM_CMD)
|
|
||||||
#
|
|
||||||
# make teensy = Download the hex file to the device, using teensy_loader_cli.
|
|
||||||
# (must have teensy_loader_cli installed).
|
|
||||||
#
|
|
||||||
# make dfu = Download the hex file to the device, using dfu-programmer (must
|
|
||||||
# have dfu-programmer installed).
|
|
||||||
#
|
|
||||||
# make flip = Download the hex file to the device, using Atmel FLIP (must
|
|
||||||
# have Atmel FLIP installed).
|
|
||||||
#
|
|
||||||
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
|
|
||||||
# (must have dfu-programmer installed).
|
|
||||||
#
|
|
||||||
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
|
|
||||||
# (must have Atmel FLIP installed).
|
|
||||||
#
|
|
||||||
# make debug = Start either simulavr or avarice as specified for debugging,
|
|
||||||
# with avr-gdb or avr-insight as the front end for debugging.
|
|
||||||
#
|
|
||||||
# make filename.s = Just compile filename.c into the assembler code only.
|
|
||||||
#
|
|
||||||
# make filename.i = Create a preprocessed source file for use in submitting
|
|
||||||
# bug reports to the GCC project.
|
|
||||||
#
|
|
||||||
# To rebuild project do "make clean" then "make all".
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Target file name (without extension).
|
|
||||||
TARGET = usb_hid_test
|
|
||||||
|
|
||||||
TMK_DIR = ../../..
|
|
||||||
|
|
||||||
# Directory keyboard dependent files exist
|
|
||||||
TARGET_DIR = .
|
|
||||||
|
|
||||||
# MCU name
|
|
||||||
MCU = atmega32u4
|
|
||||||
|
|
||||||
|
|
||||||
# Processor frequency.
|
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
|
||||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
|
||||||
# automatically to create a 32-bit value in your source code.
|
|
||||||
#
|
|
||||||
# This will be an integer division of F_USB below, as it is sourced by
|
|
||||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
|
||||||
# does not *change* the processor frequency - it should merely be updated to
|
|
||||||
# reflect the processor speed set externally so that the code can use accurate
|
|
||||||
# software delays.
|
|
||||||
F_CPU = 16000000
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# LUFA specific
|
|
||||||
#
|
|
||||||
# Target architecture (see library "Board Types" documentation).
|
|
||||||
ARCH = AVR8
|
|
||||||
# Input clock frequency.
|
|
||||||
# This will define a symbol, F_USB, in all source code files equal to the
|
|
||||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
|
||||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
|
||||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
|
||||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
|
||||||
# at the end, this will be done automatically to create a 32-bit value in your
|
|
||||||
# source code.
|
|
||||||
#
|
|
||||||
# If no clock division is performed on the input clock inside the AVR (via the
|
|
||||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
|
||||||
F_USB = $(F_CPU)
|
|
||||||
# Interrupt driven control endpoint task
|
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build Options
|
|
||||||
# comment out to disable the options.
|
|
||||||
#
|
|
||||||
# Console for debug
|
|
||||||
OPT_DEFS += -DCONSOLE_ENABLE
|
|
||||||
|
|
||||||
# Boot Section Size in bytes
|
|
||||||
# Teensy halfKay 512
|
|
||||||
# Atmel DFU loader 4096
|
|
||||||
# LUFA bootloader 4096
|
|
||||||
#OPT_DEFS += -DBOOT_SIZE=4096
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SRC = test.cpp
|
|
||||||
SRC += common/debug.c
|
|
||||||
SRC += common/print.c
|
|
||||||
|
|
||||||
CONFIG_H = config.h
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Search Path
|
|
||||||
VPATH += $(TARGET_DIR)
|
|
||||||
VPATH += $(TMK_DIR)
|
|
||||||
VPATH += $(TMK_DIR)/common
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# program Leonardo
|
|
||||||
PROGRAM_CMD = avrdude -p$(MCU) -cavr109 -P$(DEV) -b57600 -Uflash:w:$(TARGET).hex
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
include $(TMK_DIR)/protocol/usb_hid.mk
|
|
||||||
include $(TMK_DIR)/protocol/lufa.mk
|
|
||||||
include $(TMK_DIR)/rules.mk
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <[email protected]>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#define VENDOR_ID 0xFEED
|
|
||||||
#define PRODUCT_ID 0xCAFE
|
|
||||||
#define DEVICE_VER 0x0814
|
|
||||||
#define MANUFACTURER t.m.k.
|
|
||||||
#define PRODUCT USB to USB keyboard converter
|
|
||||||
|
|
||||||
#define DESCRIPTION Product from t.m.k. keyboard firmware project
|
|
||||||
|
|
||||||
/* matrix size */
|
|
||||||
#define MATRIX_ROWS 32
|
|
||||||
#define MATRIX_COLS 8
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
#include <avr/io.h>
|
|
||||||
#include <avr/wdt.h>
|
|
||||||
#include <avr/power.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
#include <Arduino.h>
|
|
||||||
|
|
||||||
// USB HID host
|
|
||||||
#include "Usb.h"
|
|
||||||
#include "hid.h"
|
|
||||||
#include "hidboot.h"
|
|
||||||
#include "parser.h"
|
|
||||||
|
|
||||||
// LUFA
|
|
||||||
#include "lufa.h"
|
|
||||||
|
|
||||||
#include "debug.h"
|
|
||||||
|
|
||||||
#include "leonardo_led.h"
|
|
||||||
|
|
||||||
|
|
||||||
static USB usb_host;
|
|
||||||
static HIDBoot<HID_PROTOCOL_KEYBOARD> kbd(&usb_host);
|
|
||||||
static KBDReportParser kbd_parser;
|
|
||||||
|
|
||||||
static void LUFA_setup(void)
|
|
||||||
{
|
|
||||||
/* Disable watchdog if enabled by bootloader/fuses */
|
|
||||||
MCUSR &= ~(1 << WDRF);
|
|
||||||
wdt_disable();
|
|
||||||
|
|
||||||
/* Disable clock division */
|
|
||||||
clock_prescale_set(clock_div_1);
|
|
||||||
|
|
||||||
// Leonardo needs. Without this USB device is not recognized.
|
|
||||||
USB_Disable();
|
|
||||||
|
|
||||||
USB_Init();
|
|
||||||
|
|
||||||
// for Console_Task
|
|
||||||
USB_Device_EnableSOFEvents();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void HID_setup()
|
|
||||||
{
|
|
||||||
// Arduino Timer startup: wiring.c
|
|
||||||
init();
|
|
||||||
|
|
||||||
if (usb_host.Init() == -1) {
|
|
||||||
debug("HID init: failed\n");
|
|
||||||
LED_TX_OFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
_delay_ms(200);
|
|
||||||
|
|
||||||
kbd.SetReportParser(0, (HIDReportParser*)&kbd_parser);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
// LED for debug
|
|
||||||
LED_TX_INIT;
|
|
||||||
LED_TX_ON;
|
|
||||||
|
|
||||||
print_enable = true;
|
|
||||||
debug_enable = true;
|
|
||||||
debug_matrix = true;
|
|
||||||
debug_keyboard = true;
|
|
||||||
debug_mouse = true;
|
|
||||||
|
|
||||||
LUFA_setup();
|
|
||||||
sei();
|
|
||||||
|
|
||||||
// wait for startup of sendchar routine
|
|
||||||
while (USB_DeviceState != DEVICE_STATE_Configured) ;
|
|
||||||
if (debug_enable) {
|
|
||||||
_delay_ms(1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
HID_setup();
|
|
||||||
|
|
||||||
debug("init: done\n");
|
|
||||||
for (;;) {
|
|
||||||
usb_host.Task();
|
|
||||||
|
|
||||||
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
|
|
||||||
// LUFA Task for control request
|
|
||||||
USB_USBTask();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -67,7 +67,6 @@ Start Your Own Project
|
|||||||
#define PRODUCT_ID 0xBEEF
|
#define PRODUCT_ID 0xBEEF
|
||||||
#define MANUFACTURER t.m.k.
|
#define MANUFACTURER t.m.k.
|
||||||
#define PRODUCT Macway mod
|
#define PRODUCT Macway mod
|
||||||
#define DESCRIPTION t.m.k. keyboard firmware for Macway mod
|
|
||||||
|
|
||||||
#### 2. Keyboard matrix configuration
|
#### 2. Keyboard matrix configuration
|
||||||
#define MATRIX_ROWS 8
|
#define MATRIX_ROWS 8
|
||||||
|
|||||||
@@ -48,9 +48,6 @@
|
|||||||
#define LCT_CPS LCTL_T(KC_CAPS)
|
#define LCT_CPS LCTL_T(KC_CAPS)
|
||||||
#define RSF_SLS RSFT_T(KC_SLSH)
|
#define RSF_SLS RSFT_T(KC_SLSH)
|
||||||
|
|
||||||
#define IS_LAYER_ON_STATE(state, layer) ( (state) & (1UL << (layer)))
|
|
||||||
#define IS_LAYER_OFF_STATE(state, layer) (~(state) & (1UL << (layer)))
|
|
||||||
|
|
||||||
// Clear mods, perform action, restore mods
|
// Clear mods, perform action, restore mods
|
||||||
#define CLEAN_MODS(action) { \
|
#define CLEAN_MODS(action) { \
|
||||||
uint8_t mods = get_mods(); \
|
uint8_t mods = get_mods(); \
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ replace_year_placeholders() {
|
|||||||
"${keyboard_dir}/config.h"
|
"${keyboard_dir}/config.h"
|
||||||
"${keyboard_dir}/${keyboard_base_name}.c"
|
"${keyboard_dir}/${keyboard_base_name}.c"
|
||||||
"${keyboard_dir}/${keyboard_base_name}.h"
|
"${keyboard_dir}/${keyboard_base_name}.h"
|
||||||
"${keyboard_dir}/keymaps/default/config.h"
|
|
||||||
"${keyboard_dir}/keymaps/default/keymap.c"
|
"${keyboard_dir}/keymaps/default/keymap.c"
|
||||||
)
|
)
|
||||||
replace_placeholders "%YEAR%" "$(date +%Y)" "${replace_year_filenames[@]}"
|
replace_placeholders "%YEAR%" "$(date +%Y)" "${replace_year_filenames[@]}"
|
||||||
@@ -104,7 +103,6 @@ replace_name_placeholders() {
|
|||||||
"${keyboard_dir}/readme.md"
|
"${keyboard_dir}/readme.md"
|
||||||
"${keyboard_dir}/${keyboard_base_name}.c"
|
"${keyboard_dir}/${keyboard_base_name}.c"
|
||||||
"${keyboard_dir}/${keyboard_base_name}.h"
|
"${keyboard_dir}/${keyboard_base_name}.h"
|
||||||
"${keyboard_dir}/keymaps/default/config.h"
|
|
||||||
"${keyboard_dir}/keymaps/default/keymap.c"
|
"${keyboard_dir}/keymaps/default/keymap.c"
|
||||||
)
|
)
|
||||||
replace_placeholders "%YOUR_NAME%" "$username" "${replace_name_filenames[@]}"
|
replace_placeholders "%YOUR_NAME%" "$username" "${replace_name_filenames[@]}"
|
||||||
|
|||||||
Reference in new issue
Block a user