mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-08-06 06:54:58 +00:00
Compare commits
65 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2f08a34394 | ||
![]() |
a9c6adb083 | ||
![]() |
f9d88da86f | ||
![]() |
2538d341d8 | ||
![]() |
83ee79565c | ||
![]() |
5c3991cb90 | ||
![]() |
abee0610ee | ||
![]() |
9aea0fd52b | ||
![]() |
42d8ee16e1 | ||
![]() |
403849bff0 | ||
![]() |
ba35c11807 | ||
![]() |
875bb48a20 | ||
![]() |
968e4f96a4 | ||
![]() |
311cf865dc | ||
![]() |
4720aa4a34 | ||
![]() |
ed0451bc28 | ||
![]() |
22cd151fc3 | ||
![]() |
96c8afea2d | ||
![]() |
3966599940 | ||
![]() |
09e22b9cfc | ||
![]() |
9cf4148aa9 | ||
![]() |
c00a9937f2 | ||
![]() |
d0a3506d0f | ||
![]() |
3d546c0853 | ||
![]() |
a9525d88a3 | ||
![]() |
0713797c58 | ||
![]() |
ae45faca26 | ||
![]() |
449b4b8d86 | ||
![]() |
3d62e1dfbf | ||
![]() |
a08486597d | ||
![]() |
f48bd8cde3 | ||
![]() |
c16b7d63e7 | ||
![]() |
db36e2be9f | ||
![]() |
0ef145db15 | ||
![]() |
2e90ef0536 | ||
![]() |
d684b8cafe | ||
![]() |
39c8ed32b4 | ||
![]() |
5073dc33e9 | ||
![]() |
21aa7890cb | ||
![]() |
4dda716712 | ||
![]() |
9975e17712 | ||
![]() |
9dcd03b6ca | ||
![]() |
e0acd3e53d | ||
![]() |
c277ae4768 | ||
![]() |
b52b8f1d23 | ||
![]() |
b7ef959400 | ||
![]() |
17e6e04600 | ||
![]() |
a0ed583b75 | ||
![]() |
093a89c534 | ||
![]() |
c1bd8eed76 | ||
![]() |
9dffd35762 | ||
![]() |
b10728edc1 | ||
![]() |
94e80912a4 | ||
![]() |
7b666245d6 | ||
![]() |
23631de191 | ||
![]() |
0374e4c733 | ||
![]() |
add10524d6 | ||
![]() |
7aab06ffdf | ||
![]() |
ab6128e86d | ||
![]() |
8128c5f822 | ||
![]() |
770a3349be | ||
![]() |
c7c9f3e3cf | ||
![]() |
e660dcff09 | ||
![]() |
6eb18a6ccb | ||
![]() |
af91221ddb |
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -22,5 +22,6 @@
|
||||
"[markdown]": {
|
||||
"editor.trimAutoWhitespace": false,
|
||||
"files.trimTrailingWhitespace": false
|
||||
}
|
||||
},
|
||||
"python.formatting.provider": "yapf"
|
||||
}
|
||||
|
1
bin/qmk
1
bin/qmk
@@ -35,6 +35,7 @@ def main():
|
||||
print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr)
|
||||
|
||||
# Import the subcommands
|
||||
import milc.subcommand.config # noqa
|
||||
import qmk.cli # noqa
|
||||
|
||||
# Execute
|
||||
|
@@ -90,12 +90,16 @@ ifeq ($(strip $(BOOTLOADER)), USBasp)
|
||||
endif
|
||||
ifeq ($(strip $(BOOTLOADER)), lufa-ms)
|
||||
OPT_DEFS += -DBOOTLOADER_MS
|
||||
BOOTLOADER_SIZE = 6144
|
||||
BOOTLOADER_SIZE ?= 8192
|
||||
FIRMWARE_FORMAT = bin
|
||||
$(info LUFA MASS STORAGE Bootloader selected)
|
||||
$(info DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!)
|
||||
$(info It is extremely prone to bricking, and is only included to support existing boards.)
|
||||
$(info )
|
||||
cpfirmware: lufa_warning
|
||||
.INTERMEDIATE: lufa_warning
|
||||
lufa_warning: $(FIRMWARE_FORMAT)
|
||||
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
|
||||
$(info LUFA MASS STORAGE Bootloader selected)
|
||||
$(info DO NOT USE THIS BOOTLOADER IN NEW PROJECTS!)
|
||||
$(info It is extremely prone to bricking, and is only included to support existing boards.)
|
||||
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
|
||||
endif
|
||||
ifdef BOOTLOADER_SIZE
|
||||
OPT_DEFS += -DBOOTLOADER_SIZE=$(strip $(BOOTLOADER_SIZE))
|
||||
|
@@ -108,6 +108,7 @@
|
||||
* [Haptic Feedback](feature_haptic_feedback.md)
|
||||
* [Joystick](feature_joystick.md)
|
||||
* [LED Indicators](feature_led_indicators.md)
|
||||
* [MIDI](feature_midi.md)
|
||||
* [Proton C Conversion](proton_c_conversion.md)
|
||||
* [PS/2 Mouse](feature_ps2_mouse.md)
|
||||
* [Split Keyboard](feature_split_keyboard.md)
|
||||
|
@@ -131,12 +131,14 @@ You can override the default songs by doing something like this in your `config.
|
||||
|
||||
```c
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
# define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
#endif
|
||||
```
|
||||
|
||||
A full list of sounds can be found in [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) - feel free to add your own to this list! All available notes can be seen in [quantum/audio/musical_notes.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/musical_notes.h).
|
||||
|
||||
Additionally, if you with to maintain your own list of songs (such as ones that may be copyrighted) and not have them added to the repo, you can create a `user_song_list.h` file and place it in your keymap (or userspace) folder. This file will be automatically included, it just needs to exist.
|
||||
|
||||
To play a custom sound at a particular time, you can define a song like this (near the top of the file):
|
||||
|
||||
```c
|
||||
@@ -301,8 +303,7 @@ You can configure the default, min and max frequencies, the stepping and built i
|
||||
|
||||
## MIDI Functionality
|
||||
|
||||
This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to see what's happening. Enable from the Makefile.
|
||||
|
||||
See [MIDI](feature_midi.md)
|
||||
|
||||
## Audio Keycodes
|
||||
|
||||
@@ -319,114 +320,3 @@ This is still a WIP, but check out `quantum/process_keycode/process_midi.c` to s
|
||||
|`MU_OFF` | |Turns off Music Mode |
|
||||
|`MU_TOG` | |Toggles Music Mode |
|
||||
|`MU_MOD` | |Cycles through the music modes |
|
||||
|
||||
<!-- FIXME: this formatting needs work
|
||||
|
||||
## Audio
|
||||
|
||||
```c
|
||||
#ifdef AUDIO_ENABLE
|
||||
AU_ON,
|
||||
AU_OFF,
|
||||
AU_TOG,
|
||||
|
||||
// Music mode on/off/toggle
|
||||
MU_ON,
|
||||
MU_OFF,
|
||||
MU_TOG,
|
||||
|
||||
// Music voice iterate
|
||||
MUV_IN,
|
||||
MUV_DE,
|
||||
#endif
|
||||
```
|
||||
|
||||
### Midi
|
||||
|
||||
#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
|
||||
MI_ON, // send midi notes when music mode is enabled
|
||||
MI_OFF, // don't send midi notes when music mode is enabled
|
||||
#endif
|
||||
|
||||
MIDI_TONE_MIN,
|
||||
MIDI_TONE_MAX
|
||||
|
||||
MI_C = MIDI_TONE_MIN,
|
||||
MI_Cs,
|
||||
MI_Db = MI_Cs,
|
||||
MI_D,
|
||||
MI_Ds,
|
||||
MI_Eb = MI_Ds,
|
||||
MI_E,
|
||||
MI_F,
|
||||
MI_Fs,
|
||||
MI_Gb = MI_Fs,
|
||||
MI_G,
|
||||
MI_Gs,
|
||||
MI_Ab = MI_Gs,
|
||||
MI_A,
|
||||
MI_As,
|
||||
MI_Bb = MI_As,
|
||||
MI_B,
|
||||
|
||||
MIDI_TONE_KEYCODE_OCTAVES > 1
|
||||
|
||||
where x = 1-5:
|
||||
MI_C_x,
|
||||
MI_Cs_x,
|
||||
MI_Db_x = MI_Cs_x,
|
||||
MI_D_x,
|
||||
MI_Ds_x,
|
||||
MI_Eb_x = MI_Ds_x,
|
||||
MI_E_x,
|
||||
MI_F_x,
|
||||
MI_Fs_x,
|
||||
MI_Gb_x = MI_Fs_x,
|
||||
MI_G_x,
|
||||
MI_Gs_x,
|
||||
MI_Ab_x = MI_Gs_x,
|
||||
MI_A_x,
|
||||
MI_As_x,
|
||||
MI_Bb_x = MI_As_x,
|
||||
MI_B_x,
|
||||
|
||||
MI_OCT_Nx 1-2
|
||||
MI_OCT_x 0-7
|
||||
MIDI_OCTAVE_MIN = MI_OCT_N2,
|
||||
MIDI_OCTAVE_MAX = MI_OCT_7,
|
||||
MI_OCTD, // octave down
|
||||
MI_OCTU, // octave up
|
||||
|
||||
MI_TRNS_Nx 1-6
|
||||
MI_TRNS_x 0-6
|
||||
MIDI_TRANSPOSE_MIN = MI_TRNS_N6,
|
||||
MIDI_TRANSPOSE_MAX = MI_TRNS_6,
|
||||
MI_TRNSD, // transpose down
|
||||
MI_TRNSU, // transpose up
|
||||
|
||||
MI_VEL_x 1-10
|
||||
MIDI_VELOCITY_MIN = MI_VEL_1,
|
||||
MIDI_VELOCITY_MAX = MI_VEL_9,
|
||||
MI_VELD, // velocity down
|
||||
MI_VELU, // velocity up
|
||||
|
||||
MI_CHx 1-16
|
||||
MIDI_CHANNEL_MIN = MI_CH1
|
||||
MIDI_CHANNEL_MAX = MI_CH16,
|
||||
MI_CHD, // previous channel
|
||||
MI_CHU, // next channel
|
||||
|
||||
MI_ALLOFF, // all notes off
|
||||
|
||||
MI_SUS, // sustain
|
||||
MI_PORT, // portamento
|
||||
MI_SOST, // sostenuto
|
||||
MI_SOFT, // soft pedal
|
||||
MI_LEG, // legato
|
||||
|
||||
MI_MOD, // modulation
|
||||
MI_MODSD, // decrease modulation speed
|
||||
MI_MODSU, // increase modulation speed
|
||||
#endif // MIDI_ADVANCED
|
||||
|
||||
-->
|
||||
|
@@ -67,6 +67,8 @@ Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet]
|
||||
|
||||
---
|
||||
|
||||
## Common Configuration :id=common-configuration
|
||||
|
||||
From this point forward the configuration is the same for all the drivers. The `led_config_t` struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:
|
||||
|
||||
```c
|
||||
|
260
docs/feature_midi.md
Normal file
260
docs/feature_midi.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# MIDI
|
||||
|
||||
## Usage
|
||||
|
||||
First, enable MIDI by adding the following to your `rules.mk`:
|
||||
|
||||
```makefile
|
||||
MIDI_ENABLE = yes
|
||||
```
|
||||
|
||||
There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like `MI_OCTU` and `MI_OCTD` will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more.
|
||||
|
||||
### Basic MIDI
|
||||
|
||||
To enable basic MIDI, add the following to your `config.h`:
|
||||
|
||||
```c
|
||||
#define MIDI_BASIC
|
||||
```
|
||||
|
||||
### Advanced MIDI
|
||||
|
||||
To enable advanced MIDI, add the following to your `config.h`:
|
||||
|
||||
```c
|
||||
#define MIDI_ADVANCED
|
||||
```
|
||||
|
||||
#### Sending Control Change (CC) Messages
|
||||
|
||||
If you're aiming to emulate the features of something like a Launchpad or other MIDI controller you'll need to access the internal MIDI device directly.
|
||||
|
||||
Because there are so many possible CC messages, not all of them are implemented as keycodes. Additionally, you might need to provide more than just two values that you would get from a keycode (pressed and released) - for example, the analog values from a fader or a potentiometer. So, you will need to implement [custom keycodes](feature_macros.md) if you want to use them in your keymap directly using `process_record_user()`.
|
||||
|
||||
|
||||
For reference of all the possible control code numbers see [MIDI Specification](#midi-specification)
|
||||
|
||||
#### Example code for using Generic On Off Switches as per MIDI Specification.
|
||||
```c
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern MidiDevice midi_device;
|
||||
|
||||
// MIDI CC codes for generic on/off switches (80, 81, 82, 83)
|
||||
// Off: 0-63
|
||||
// On: 64-127
|
||||
|
||||
#define MIDI_CC_OFF 0
|
||||
#define MIDI_CC_ON 127
|
||||
|
||||
enum custom_keycodes {
|
||||
MIDI_CC80 = SAFE_RANGE,
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case MIDI_CC80:
|
||||
if (record->event.pressed) {
|
||||
midi_send_cc(&midi_device, midi_config.channel, 80, ON);
|
||||
} else {
|
||||
midi_send_cc(&midi_device, midi_config.channel, 80, OFF);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
LAYOUT(
|
||||
// ...
|
||||
MIDI_CC80,
|
||||
// ...
|
||||
)
|
||||
};
|
||||
```
|
||||
|
||||
### Keycodes
|
||||
|
||||
|Keycode |Aliases |Description |
|
||||
|------------|---------|---------------------------------|
|
||||
|`MI_ON` | |Turn MIDI on |
|
||||
|`MI_OFF` | |Turn MIDI off |
|
||||
|`MI_TOG` | |Toggle MIDI enabled |
|
||||
|`MI_C` | |C octave 0 |
|
||||
|`MI_Cs` |`MI_Db` |C♯/D♭ octave 0 |
|
||||
|`MI_D` | |D octave 0 |
|
||||
|`MI_Ds` |`MI_Eb` |D♯/E♭ octave 0 |
|
||||
|`MI_E` | |E octave 0 |
|
||||
|`MI_F` | |F octave 0 |
|
||||
|`MI_Fs` |`MI_Gb` |F♯/G♭ octave 0 |
|
||||
|`MI_G` | |G octave 0 |
|
||||
|`MI_Gs` |`MI_Gs` |G♯/A♭ octave 0 |
|
||||
|`MI_A` | |A octave 0 |
|
||||
|`MI_As` |`MI_Bb` |A♯/B♭ octave 0 |
|
||||
|`MI_B` | |B octave 0 |
|
||||
|`MI_C_1` | |C octave 1 |
|
||||
|`MI_Cs_1` |`MI_Db_1`|C♯/D♭ octave 1 |
|
||||
|`MI_D_1` | |D octave 1 |
|
||||
|`MI_Ds_1` |`MI_Eb_1`|D♯/E♭ octave 1 |
|
||||
|`MI_E_1` | |E octave 1 |
|
||||
|`MI_F_1` | |F octave 1 |
|
||||
|`MI_Fs_1` |`MI_Gb_1`|F♯/G♭ octave 1 |
|
||||
|`MI_G_1` | |G octave 1 |
|
||||
|`MI_Gs_1` |`MI_Ab_1`|G♯/A♭ octave 1 |
|
||||
|`MI_A_1` | |A octave 1 |
|
||||
|`MI_As_1` |`MI_Bb_1`|A♯/B♭ octave 1 |
|
||||
|`MI_B_1` | |B octave 1 |
|
||||
|`MI_C_2` | |C octave 2 |
|
||||
|`MI_Cs_2` |`MI_Db_2`|C♯/D♭ octave 2 |
|
||||
|`MI_D_2` | |D octave 2 |
|
||||
|`MI_Ds_2` |`MI_Eb_2`|D♯/E♭ octave 2 |
|
||||
|`MI_E_2` | |E octave 2 |
|
||||
|`MI_F_2` | |F octave 2 |
|
||||
|`MI_Fs_2` |`MI_Gb_2`|F♯/G♭ octave 2 |
|
||||
|`MI_G_2` | |G octave 2 |
|
||||
|`MI_Gs_2` |`MI_Ab_2`|G♯/A♭ octave 2 |
|
||||
|`MI_A_2` | |A octave 2 |
|
||||
|`MI_As_2` |`MI_Bb_2`|A♯/B♭ octave 2 |
|
||||
|`MI_B_2` | |B octave 2 |
|
||||
|`MI_C_3` | |C octave 3 |
|
||||
|`MI_Cs_3` |`MI_Db_3`|C♯/D♭ octave 3 |
|
||||
|`MI_D_3` | |D octave 3 |
|
||||
|`MI_Ds_3` |`MI_Eb_3`|D♯/E♭ octave 3 |
|
||||
|`MI_E_3` | |E octave 3 |
|
||||
|`MI_F_3` | |F octave 3 |
|
||||
|`MI_Fs_3` |`MI_Gb_3`|F♯/G♭ octave 3 |
|
||||
|`MI_G_3` | |G octave 3 |
|
||||
|`MI_Gs_3` |`MI_Ab_3`|G♯/A♭ octave 3 |
|
||||
|`MI_A_3` | |A octave 3 |
|
||||
|`MI_As_3` |`MI_Bb_3`|A♯/B♭ octave 3 |
|
||||
|`MI_B_3` | |B octave 3 |
|
||||
|`MI_C_4` | |C octave 4 |
|
||||
|`MI_Cs_4` |`MI_Db_4`|C♯/D♭ octave 4 |
|
||||
|`MI_D_4` | |D octave 4 |
|
||||
|`MI_Ds_4` |`MI_Eb_4`|D♯/E♭ octave 4 |
|
||||
|`MI_E_4` | |E octave 4 |
|
||||
|`MI_F_4` | |F octave 4 |
|
||||
|`MI_Fs_4` |`MI_Gb_4`|F♯/G♭ octave 4 |
|
||||
|`MI_G_4` | |G octave 4 |
|
||||
|`MI_Gs_4` |`MI_Ab_4`|G♯/A♭ octave 4 |
|
||||
|`MI_A_4` | |A octave 4 |
|
||||
|`MI_As_4` |`MI_Bb_4`|A♯/B♭ octave 4 |
|
||||
|`MI_B_4` | |B octave 4 |
|
||||
|`MI_C_5` | |C octave 5 |
|
||||
|`MI_Cs_5` |`MI_Db_5`|C♯/D♭ octave 5 |
|
||||
|`MI_D_5` | |D octave 5 |
|
||||
|`MI_Ds_5` |`MI_Eb_5`|D♯/E♭ octave 5 |
|
||||
|`MI_E_5` | |E octave 5 |
|
||||
|`MI_F_5` | |F octave 5 |
|
||||
|`MI_Fs_5` |`MI_Gb_5`|F♯/G♭ octave 5 |
|
||||
|`MI_G_5` | |G octave 5 |
|
||||
|`MI_Gs_5` |`MI_Ab_5`|G♯/A♭ octave 5 |
|
||||
|`MI_A_5` | |A octave 5 |
|
||||
|`MI_As_5` |`MI_Bb_5`|A♯/B♭ octave 5 |
|
||||
|`MI_B_5` | |B octave 5 |
|
||||
|`MI_OCT_N2` | |Set octave to -2 |
|
||||
|`MI_OCT_N1` | |Set octave to -1 |
|
||||
|`MI_OCT_0` | |Set octave to 0 |
|
||||
|`MI_OCT_1` | |Set octave to 1 |
|
||||
|`MI_OCT_2` | |Set octave to 2 |
|
||||
|`MI_OCT_3` | |Set octave to 3 |
|
||||
|`MI_OCT_4` | |Set octave to 4 |
|
||||
|`MI_OCT_5` | |Set octave to 5 |
|
||||
|`MI_OCT_6` | |Set octave to 6 |
|
||||
|`MI_OCT_7` | |Set octave to 7 |
|
||||
|`MI_OCTD` | |Move down an octave |
|
||||
|`MI_OCTU` | |Move up an octave |
|
||||
|`MI_TRNS_N6`| |Set transposition to -6 semitones|
|
||||
|`MI_TRNS_N5`| |Set transposition to -5 semitones|
|
||||
|`MI_TRNS_N4`| |Set transposition to -4 semitones|
|
||||
|`MI_TRNS_N3`| |Set transposition to -3 semitones|
|
||||
|`MI_TRNS_N2`| |Set transposition to -2 semitones|
|
||||
|`MI_TRNS_N1`| |Set transposition to -1 semitone |
|
||||
|`MI_TRNS_0` | |No transposition |
|
||||
|`MI_TRNS_1` | |Set transposition to +1 semitone |
|
||||
|`MI_TRNS_2` | |Set transposition to +2 semitones|
|
||||
|`MI_TRNS_3` | |Set transposition to +3 semitones|
|
||||
|`MI_TRNS_4` | |Set transposition to +4 semitones|
|
||||
|`MI_TRNS_5` | |Set transposition to +5 semitones|
|
||||
|`MI_TRNS_6` | |Set transposition to +6 semitones|
|
||||
|`MI_TRNSD` | |Decrease transposition |
|
||||
|`MI_TRNSU` | |Increase transposition |
|
||||
|`MI_VEL_0` | |Set velocity to 0 |
|
||||
|`MI_VEL_1` | |Set velocity to 12 |
|
||||
|`MI_VEL_2` | |Set velocity to 25 |
|
||||
|`MI_VEL_3` | |Set velocity to 38 |
|
||||
|`MI_VEL_4` | |Set velocity to 51 |
|
||||
|`MI_VEL_5` | |Set velocity to 64 |
|
||||
|`MI_VEL_6` | |Set velocity to 76 |
|
||||
|`MI_VEL_7` | |Set velocity to 89 |
|
||||
|`MI_VEL_8` | |Set velocity to 102 |
|
||||
|`MI_VEL_9` | |Set velocity to 114 |
|
||||
|`MI_VEL_10` | |Set velocity to 127 |
|
||||
|`MI_VELD` | |Decrease velocity |
|
||||
|`MI_VELU` | |Increase velocity |
|
||||
|`MI_CH1` | |Set channel to 1 |
|
||||
|`MI_CH2` | |Set channel to 2 |
|
||||
|`MI_CH3` | |Set channel to 3 |
|
||||
|`MI_CH4` | |Set channel to 4 |
|
||||
|`MI_CH5` | |Set channel to 5 |
|
||||
|`MI_CH6` | |Set channel to 6 |
|
||||
|`MI_CH7` | |Set channel to 7 |
|
||||
|`MI_CH8` | |Set channel to 8 |
|
||||
|`MI_CH9` | |Set channel to 9 |
|
||||
|`MI_CH10` | |Set channel to 10 |
|
||||
|`MI_CH11` | |Set channel to 11 |
|
||||
|`MI_CH12` | |Set channel to 12 |
|
||||
|`MI_CH13` | |Set channel to 13 |
|
||||
|`MI_CH14` | |Set channel to 14 |
|
||||
|`MI_CH15` | |Set channel to 15 |
|
||||
|`MI_CH16` | |Set channel to 16 |
|
||||
|`MI_CHD` | |Decrease channel |
|
||||
|`MI_CHU` | |Increase channel |
|
||||
|`MI_ALLOFF` | |Stop all notes |
|
||||
|`MI_SUS` | |Sustain |
|
||||
|`MI_PORT` | |Portmento |
|
||||
|`MI_SOST` | |Sostenuto |
|
||||
|`MI_SOFT` | |Soft Pedal |
|
||||
|`MI_LEG` | |Legato |
|
||||
|`MI_MOD` | |Modulation |
|
||||
|`MI_MODSD` | |Decrease modulation speed |
|
||||
|`MI_MODSU` | |Increase modulation speed |
|
||||
|`MI_BENDD` | |Bend pitch down |
|
||||
|`MI_BENDU` | |Bend pitch up |
|
||||
|
||||
### Configuration
|
||||
|
||||
Certain values are stored in the `midi_config` struct. This configuration is not persisted to EEPROM. By default, these values are:
|
||||
|
||||
|Configuration |Value|Comments |
|
||||
|-------------------|-----|-------------------------|
|
||||
|Octave |`4` |Corresponds to `MI_OCT_2`|
|
||||
|Transposition |`0` | |
|
||||
|Velocity |`127`| |
|
||||
|Channel |`0` | |
|
||||
|Modulation Interval|`8` | |
|
||||
|
||||
For the above, the `MI_C` keycode will produce a C3 (note number 48), and so on.
|
||||
|
||||
### References
|
||||
#### MIDI Specification
|
||||
|
||||
* [MIDI.org](https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message)
|
||||
* [CMU MIDI Programmer's Reference](https://www.cs.cmu.edu/~music/cmsip/readings/MIDI%20tutorial%20for%20programmers.html)
|
||||
#### QMK C Files
|
||||
|
||||
* `quantum/process_keycode/process_midi.c`
|
||||
* `quantum/quantum_keycodes.h`
|
||||
* `tmk_core/protocol/midi.h`
|
||||
* `tmk_core/protocol/midi.c`
|
||||
* `tmk_core/protocol/qmk_midi.c`
|
||||
* `tmk_core/protocol/midi_device.h`
|
||||
|
||||
<!--
|
||||
#### QMK Internals (Autogenerated)
|
||||
|
||||
* [Internals/MIDI Device Setup Process](internals_midi_device_setup_process.md)
|
||||
* [Internals/MIDI Device](internals_midi_device.md)
|
||||
* [Internals/MIDI Util](internals_midi_util.md)
|
||||
-->
|
@@ -263,11 +263,25 @@ void oled_write(const char *data, bool invert);
|
||||
void oled_write_ln(const char *data, bool invert);
|
||||
|
||||
// Pans the buffer to the right (or left by passing true) by moving contents of the buffer
|
||||
// Useful for moving the screen in preparation for new drawing
|
||||
// Useful for moving the screen in preparation for new drawing
|
||||
// oled_scroll_left or oled_scroll_right should be preferred for all cases of moving a static
|
||||
// image such as a logo or to avoid burn-in as it's much, much less cpu intensive
|
||||
void oled_pan(bool left);
|
||||
|
||||
// Returns a pointer to the requested start index in the buffer plus remaining
|
||||
// buffer length as struct
|
||||
oled_buffer_reader_t oled_read_raw(uint16_t start_index);
|
||||
|
||||
// Writes a string to the buffer at current cursor position
|
||||
void oled_write_raw(const char *data, uint16_t size);
|
||||
|
||||
// Writes a single byte into the buffer at the specified 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);
|
||||
|
||||
// Writes a PROGMEM string to the buffer at current cursor position
|
||||
// Advances the cursor while writing, inverts the pixels if true
|
||||
// Remapped to call 'void oled_write(const char *data, bool invert);' on ARM
|
||||
@@ -279,23 +293,9 @@ void oled_write_P(const char *data, bool invert);
|
||||
// Remapped to call 'void oled_write_ln(const char *data, bool invert);' on ARM
|
||||
void oled_write_ln_P(const char *data, bool invert);
|
||||
|
||||
// Returns a pointer to the requested start index in the buffer plus remaining
|
||||
// buffer length as struct
|
||||
oled_buffer_reader_t oled_read_raw(uint16_t start_index);
|
||||
|
||||
// Writes a string to the buffer at current cursor position
|
||||
void oled_write_raw(const char *data, uint16_t size);
|
||||
|
||||
// Writes a single byte into the buffer at the specified index
|
||||
void oled_write_raw_byte(const char data, uint16_t index);
|
||||
|
||||
// Writes a PROGMEM string to the buffer at current cursor position
|
||||
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
|
||||
// Returns true if the screen was on or turns on
|
||||
bool oled_on(void);
|
||||
|
@@ -229,6 +229,8 @@ Configure the hardware via your `config.h`:
|
||||
|
||||
---
|
||||
|
||||
## Common Configuration :id=common-configuration
|
||||
|
||||
From this point forward the configuration is the same for all the drivers. The `led_config_t` struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:
|
||||
|
||||
```c
|
||||
|
@@ -60,6 +60,7 @@ The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0/D1/D2/D3 (aka
|
||||
The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros.
|
||||
|
||||
The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves.
|
||||
Note that the total resistance for the connected system should be within spec at 2.2k-10kOhm, with an 'ideal' at 4.7kOhm, regardless of the placement and number.
|
||||
|
||||
<img alt="sk-i2c-connection-mono" src="https://user-images.githubusercontent.com/2170248/92297182-92b98580-ef77-11ea-9d7d-d6033914af43.JPG" width="50%"/>
|
||||
|
||||
|
@@ -155,6 +155,7 @@
|
||||
* [QMK への貢献](ja/contributing.md)
|
||||
* [QMK ドキュメントの翻訳](ja/translating.md)
|
||||
* [設定オプション](ja/config_options.md)
|
||||
* [データ駆動型コンフィギュレーション](ja/data_driven_config.md)
|
||||
* [Make ドキュメント](ja/getting_started_make_guide.md)
|
||||
* [ドキュメント ベストプラクティス](ja/documentation_best_practices.md)
|
||||
* [ドキュメント テンプレート](ja/documentation_templates.md)
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# キーボードの挙動をカスタマイズする方法
|
||||
|
||||
<!---
|
||||
original document: 0.10.52:docs/custom_quantum_functions.md
|
||||
git diff 0.10.52 HEAD -- docs/custom_quantum_functions.md | cat
|
||||
original document: 0.12.41:docs/custom_quantum_functions.md
|
||||
git diff 0.12.41 HEAD -- docs/custom_quantum_functions.md | cat
|
||||
-->
|
||||
|
||||
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
|
||||
@@ -190,6 +190,14 @@ void keyboard_post_init_user(void) {
|
||||
|
||||
カスタムマトリックススキャンコードが必要な場合は、この関数を使う必要があります。また、カスタムステータス出力 (LED あるいはディスプレイなど)や、ユーザが入力していない場合でも定期的にトリガーするその他の機能のために使うことができます。
|
||||
|
||||
# キーボードハウスキーピング :id=keyboard-housekeeping
|
||||
|
||||
* キーボード/リビジョン: `void housekeeping_task_kb(void)`
|
||||
* キーマップ: `void housekeeping_task_user(void)`
|
||||
|
||||
この関数は、全ての QMK 処理の最後に、次の繰り返しを開始する前に呼び出されます。`housekeeping_task_*` の関数が呼び出された時点で、QMK が最後のマトリックススキャンを処理したと、安全に見なすことができます -- レイヤーの状態が更新され、USB レポートが送信され、LED が更新され、表示が描画されています。
|
||||
|
||||
`matrix_scan_*` と同様に、これらは MCU が処理できる頻度で呼び出されます。キーボードの応答性を維持するために、これらの関数の呼び出し中にできるだけ何もしないことをお勧めします。実際に何か特別なものを実装する必要がある場合に動作を停止させる可能性があります。
|
||||
|
||||
# キーボードアイドリング/ウェイクコード
|
||||
|
||||
|
123
docs/ja/data_driven_config.md
Normal file
123
docs/ja/data_driven_config.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# データ駆動型コンフィギュレーション
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 0.12.7:docs/data_driven_config.md
|
||||
git diff 0.12.7 HEAD -- docs/data_driven_config.md | cat
|
||||
-->
|
||||
|
||||
このページでは、QMK のデータ駆動型 JSON コンフィギュレーションシステムがどのように動作するかを説明します。これは、QMK 自体に取り組みたい開発者を対象としています。
|
||||
|
||||
## ヒストリー
|
||||
|
||||
これまで、QMK は、`rules.mk` と `config.h` の2つのメカニズムを組み合わせてコンフィギュレーションされてきました。
|
||||
この方法は、QMK がほんの一握りのキーボードをサポートしていたときは上手く機能していましたが、今では、サポートするキーボードは1500近くまで成長しました。
|
||||
`keyboards` の下だけで6000個の設定ファイルがあることが推定されます。
|
||||
これらのファイルの自由形式の性質と、重複を避けるために人々が使用してきたユニークなパターンが継続的なメンテナンスを困難にしており、また、多くのキーボードが時代遅れで時には理解が難しいパターンに従っています。
|
||||
|
||||
また、CLI に慣れていない人に QMK のパワーを提供することにも取り組んでおり、VIA などの他のプロジェクトでは、プログラムをインストールするのと同じくらい簡単に QMK を使用できるように取り組んでいます。
|
||||
これらのツールには、ユーザーが QMK を最大限に活用できるように、キーボードのレイアウト方法や使用可能なピンと機能に関する情報が必要です。
|
||||
その第一歩として `info.json` を導入しました。
|
||||
QMK API は、これら3つの情報源(`config.h`、` rules.mk`、および `info.json`)を、エンドユーザーツールが使用できる信頼できる単一の情報源に結合するための取り組みです。
|
||||
|
||||
これで、`info.json`から `rules.mk` と `config.h` の値を生成することがサポートされ、信頼できる単一の情報源を持つことができます。
|
||||
これにより、自動化されたツールを使用してキーボードを保守できるため、時間と保守作業を大幅に節約できます。
|
||||
|
||||
## 概要
|
||||
|
||||
C 側では何も変わりません。
|
||||
新しいルールを作成したり、定義したりする必要がある場合は、同じプロセスに従います。
|
||||
|
||||
1. `docs/config_options.md` に追加します。
|
||||
1. 適切なコアファイルにデフォルトを設定します。
|
||||
1. 必要に応じて ifdef 文を追加します。
|
||||
|
||||
次に、新しい構成のサポートを `info.json` に追加する必要があります。
|
||||
基本的なプロセスは次のとおりです。
|
||||
|
||||
1. `data/schemas/keyboards.jsonschema` のスキーマに追加します
|
||||
1. `data/maps` にマッピングを追加します
|
||||
1. (オプションおよび非推奨)構成を抽出/生成するコードを追加します。
|
||||
* `lib/python/qmk/info.py`
|
||||
* `lib/python/qmk/cli/generate/config_h.py`
|
||||
* `lib/python/qmk/cli/generate/rules_mk.py`
|
||||
|
||||
## info.json にオプションを追加する
|
||||
|
||||
このセクションでは、info.json に `config.h`/`rules.mk` の値のサポートを追加することについて説明します。
|
||||
|
||||
### スキーマに追加する
|
||||
|
||||
QMK では、[jsonschema](https:json-schema.org) のファイルを `data/schemas` に保持しています。
|
||||
キーボード固有の `info.json` ファイルに入る値は `keyboard.jsonschema` に保持されています。
|
||||
エンドユーザーが編集できるようにしたい値はすべてここに入れなければなりません。
|
||||
|
||||
場合によっては、新しいトップレベルキーを追加するだけで済みます。
|
||||
従うべきいくつかの例は、 `keyboard_name`、`maintainer`、 `processor`、および `url` です。
|
||||
これは、オプションが自己完結型で、他のオプションと直接関係がない場合に適しています。
|
||||
|
||||
その他の場合、1つの `object` の中に、似ているオプションを集める必要があります。
|
||||
これは、機能のサポートを追加する場合に特に当てはまります。
|
||||
このために従うべきいくつかの例は、`indicators`、`matrix_pins`、および `rgblight` です。
|
||||
新しいオプションを統合する方法がわからない場合は、[問題を開く](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=)か、[Discord で #cli に参加](https://discord.gg/heQPAgy)して、そこで会話を始めてください。
|
||||
|
||||
### マッピングを追加する
|
||||
|
||||
ほとんどの場合、単純なマッピングを追加することができます。
|
||||
これらは `data/mappings/info_config.json` と `data/mappings/info_rules.json` に JSON ファイルとして保持され、それぞれ `config.h` と `rules.mk` のマッピングを制御します。
|
||||
各マッピングは `config.h` または `rules.mk` 変数名をキーとし、値は以下のキーを持つハッシュです。
|
||||
|
||||
* `info_key`: (必須)この値の `info.json` 内の場所。 下記参照。
|
||||
* `value_type`: (オプション)デフォルトは `str`。 この変数の値の形式。 下記参照。
|
||||
* `to_json`: (オプション)デフォルトは `true`。 このマッピングを info.json から除外するには、`false` に設定します
|
||||
* `to_c`: (オプション)デフォルトは `true`。 このマッピングを config.h から除外するには、`false` に設定します
|
||||
* `warn_duplicate`: (オプション)デフォルトは `true`。 値が両方の場所に存在する場合に警告をオフにするには、`false` に設定します
|
||||
|
||||
#### Info Key
|
||||
|
||||
info.json 内の変数をアドレス指定するために JSON ドット表記を使用します。
|
||||
たとえば、`info_json["rgblight"]["split_count"]` にアクセスするには、`rgblight.split_count` を指定します。
|
||||
これにより、深くネストされたキーを単純な文字列でアドレス指定できます。
|
||||
|
||||
内部では [Dotty Dict](https://dotty-dict.readthedocs.io/en/latest/) を使用しています。これらの文字列がオブジェクトアクセスに変換される方法についてはそのドキュメントを参照してください。
|
||||
|
||||
#### Value Types
|
||||
|
||||
デフォルトでは、すべての値を単純な文字列として扱います。
|
||||
値がより複雑な場合は、次のいずれかのタイプを使用してデータをインテリジェントに解析できます。
|
||||
|
||||
* `array`: 文字列のコンマ区切りの配列
|
||||
* `array.int`: 整数のコンマ区切り配列
|
||||
* `int`: 整数
|
||||
* `hex`: 16進数としてフォーマットされた数値
|
||||
* `list`: 文字列のスペース区切りの配列
|
||||
* `mapping`: キーと値のペアのハッシュ
|
||||
|
||||
### 抽出するコードを追加する
|
||||
|
||||
ほとんどのユースケースは、上記のマッピングファイルによって解決できます。
|
||||
できない場合は、代わりに設定値を抽出するコードを書くことができます。
|
||||
|
||||
QMK が完全な `info.json` を生成するときはいつでも、`config.h` と `rules.mk` から情報を抽出します。
|
||||
あなたの新しい設定値のためのコードを `lib/python/qmk/info.py` に追加する必要があります。
|
||||
通常、これは、新しい `_extract_<feature>()` 関数を追加してから、 `_extract_config_h()` または `_extract_rules_mk()` のいずれかで関数を呼び出すことを意味します。
|
||||
|
||||
このファイルの編集方法がわからない場合、または Python に慣れていない場合は、[issue を開く](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=)か [Discord で #cli に参加](https://discord.gg/heQPAgy)すると、この部分を誰かが手伝ってくれるでしょう。
|
||||
|
||||
### 生成するコードを追加する
|
||||
|
||||
パズルの最後のピースは、ビルドシステムに新しいオプションを提供することです。
|
||||
これは、2つのファイルを生成することによって行われます。
|
||||
|
||||
* `.build/obj_<keyboard>/src/info_config.h`
|
||||
* `.build/obj_<keyboard>/src/rules.mk`
|
||||
|
||||
この2つのファイルは、次のコードによって生成されます。
|
||||
|
||||
* `lib/python/qmk/cli/generate/config_h.py`
|
||||
* `lib/python/qmk/cli/generate/rules_mk.py`
|
||||
|
||||
`config.h`値の場合、ルール用の関数を記述し、その関数を `generate_config_h()` で呼び出す必要があります。
|
||||
|
||||
`rules.mk` の新しいトップレベルの `info.json` キーがある場合は、`lib/python/qmk/cli/generate/rules_mk.py` の上部にある `info_to_rules` にキーを追加するだけです。
|
||||
それ以外の場合は、`generate_rules_mk()` で機能の新しい if ブロックを作成する必要があります。
|
@@ -1,8 +1,8 @@
|
||||
# レイヤー :id=layers
|
||||
|
||||
<!---
|
||||
original document: 0.9.43:docs/feature_layers.md
|
||||
git diff 0.9.43 HEAD -- docs/feature_layers.md | cat
|
||||
original document: 0.12.41:docs/feature_layers.md
|
||||
git diff 0.12.41 HEAD -- docs/feature_layers.md | cat
|
||||
-->
|
||||
|
||||
QMK ファームウェアの最も強力で良く使われている機能の一つは、レイヤーを使う機能です。ほとんどの人にとって、これはラップトップやタブレットキーボードにあるのと同じように、様々なキーを可能にするファンクションキーに相当します。
|
||||
@@ -24,12 +24,10 @@ QMK ファームウェアの最も強力で良く使われている機能の一
|
||||
|
||||
### 注意事項 :id=caveats
|
||||
|
||||
現在のところ、`LT()` と `MT()` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。特に、`LT` と `MT` のような二重の機能キーは16ビットキーコードを使います。4ビットは機能の識別のために使われ、次の12ビットはパラメータに分かれます。レイヤータップはレイヤーに4ビットを使います(実はレイヤータップがレイヤー 0-15 に制限されている理由です)。モッドタップも同じですが、識別子に4ビット、モッドのために4ビットが使われ、全体でキーコードに8ビットを使います。このため、使用されるキーコードは `0xFF` (0-255) に制限され、基本的なキーコードのみです。
|
||||
現在のところ、`LT()` の `layer` 引数はレイヤー 0-15 に制限され、`kc` 引数は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD` あるいは `0xFF` より大きなキーコードを使うことができません。これは、QMK が16ビットのキーコードを使うためです。4ビットは機能の識別のために使われ、4ビットはレイヤーのために使われ、キーコードには8ビットしか残されていません。
|
||||
|
||||
これを拡張してもせいぜい複雑になるだけでしょう。32ビットキーコードに移行すると、これの多くが解決されますが、キーマップマトリックスが使用する領域が2倍になります。また、問題が起きる可能性もあります。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys)を使うことができます。
|
||||
|
||||
さらに、モッドタップあるいはレイヤータップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることはできません。
|
||||
|
||||
## レイヤーとの連携 :id=working-with-layers
|
||||
|
||||
レイヤーを切り替える時は注意してください。(キーボードを取り外さずに)そのレイヤーを非アクティブにすることができずレイヤーから移動できなくなる可能性があります。最も一般的な問題を避けるためのガイドラインを作成しました。
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# ポインティングデバイス :id=pointing-device
|
||||
|
||||
<!---
|
||||
original document: 0.9.43:docs/feature_pointing_device.md
|
||||
git diff 0.9.43 HEAD -- docs/feature_pointing_device.md | cat
|
||||
original document: 0.12.41:docs/feature_pointing_device.md
|
||||
git diff 0.12.41 HEAD -- docs/feature_pointing_device.md | cat
|
||||
-->
|
||||
|
||||
ポインティングデバイスは汎用的な機能の総称です: システムポインタを移動します。マウスキーのような他のオプションも確かにありますが、これは簡単に変更可能で軽量であることを目指しています。機能を制御するためにカスタムキーを実装したり、他の周辺機器から情報を収集してここに直接挿入したりできます - QMK に処理を任せてください。
|
||||
@@ -24,7 +24,7 @@ report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つ
|
||||
* `mouseReport.y` - これは、y軸の動き(+ 上へ、- 下へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
|
||||
* `mouseReport.v` - これは、垂直スクロール(+ 上へ、- 下へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
|
||||
* `mouseReport.h` - これは、水平スクロール(+ 右へ、- 左へ)を表す -127 から 127 (128ではなく、USB HID 仕様で定義されています)の符号付き整数です。
|
||||
* `mouseReport.buttons` - これは uint8_t で、上位の5ビットを使っています。これらのビットはマウスボタンの状態を表します - ビット 3 はマウスボタン 5、ビット 7 はマウスボタン 1 です。
|
||||
* `mouseReport.buttons` - これは uint8_t で、8ビット全てを使っています。これらのビットはマウスボタンの状態を表します - ビット 0 はマウスボタン 1、ビット 7 はマウスボタン 8 です。
|
||||
|
||||
マウスレポートに必要な変更を行ったら、それを送信する必要があります:
|
||||
|
||||
@@ -32,6 +32,10 @@ report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つ
|
||||
|
||||
マウスレポートが送信されると、x、y、v、h のいずれの値も 0 に設定されます (これは `pointing_device_send()` で行われます。この挙動を回避するためにオーバーライドすることができます)。このように、ボタンの状態は持続しますが、動きは1度だけ起こります。さらにカスタマイズするために、`pointing_device_init` と `pointing_device_task` のどちらもオーバーライドすることができます。
|
||||
|
||||
さらに、デフォルトでは、`pointing_device_send()` はレポートが実際に変更された場合のみレポートを送信します。これにより、マウスレポートが継続的に送信されてホストシステムが起動されたままになることを防ぎます。この動作は、独自の `pointing_device_send()` 関数を作成することで変更できます。
|
||||
|
||||
また、`has_mouse_report_changed(new, old)` 関数を使って、レポートが変更されたかどうかを確認できます。(訳注:独自の `pointing_device_send()` 関数を作成する場合でも、その中で `has_mouse_report_changed(new, old)` 関数でチェックして、デフォルトの `pointing_device_send()` と類似の無駄なレポートの抑制をして、ホストシステムがスリープ状態に入れる余地を残すようにしておくのが良いでしょう。)
|
||||
|
||||
以下の例では、カスタムキーを使ってマウスをクリックし垂直および水平方向に127単位スクロールし、リリースされた時にそれを全て元に戻します - なぜならこれは完全に便利な機能だからです。いいですか、以下はひとつの例です:
|
||||
|
||||
```c
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# Raw HID
|
||||
|
||||
<!---
|
||||
original document: 0.10.47:docs/feature_rawhid.md
|
||||
git diff 0.10.47 HEAD -- docs/feature_rawhid.md | cat
|
||||
original document: 0.12.41:docs/feature_rawhid.md
|
||||
git diff 0.12.41 HEAD -- docs/feature_rawhid.md | cat
|
||||
-->
|
||||
|
||||
Raw HID は、HID インタフェースを介して QMK とホストコンピュータ間の双方向通信を可能にします。これには、キーマップをその場で切り替えたり、RGB LED の色とモードを変更したりなど、多くの潜在的な使用方法があります。
|
||||
@@ -34,7 +34,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
|
||||
}
|
||||
```
|
||||
|
||||
`raw_hid_receive` はホストから最大長 `RAW_EPSIZE` の可変サイズのパケットを受信することができます。一方、`raw_hid_send` はパケットを厳密に `RAW_EPSIZE` の長さで送信するため、長さ `RAW_EPSIZE` のデータを使う必要があります。
|
||||
これら2つの関数は、ホストとの間で長さ `RAW_EPSIZE` バイトのパケットを送受信します (LUFA/ChibiOS/V-USB では 32、ATSAM では 64)。
|
||||
|
||||
ホスト側での作業を進める前に、raw 対応のファームウェアを書き込むようにしてください。
|
||||
|
||||
|
@@ -2,8 +2,8 @@
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 0.10.33:docs/hardware_avr.md
|
||||
git diff 0.10.33 HEAD -- docs/hardware_avr.md | cat
|
||||
original document: 0.12.41:docs/hardware_avr.md
|
||||
git diff 0.12.41 HEAD -- docs/hardware_avr.md | cat
|
||||
-->
|
||||
|
||||
このページでは QMK における AVR マイコンのサポートについて説明します。AVR マイコンには、Atmel 社製の atmega32u4、atmega32u2、at90usb1286 やその他のマイコンを含みます。AVR マイコンは、簡単に動かせるよう設計された8ビットの MCU です。キーボードでよく使用される AVR マイコンには USB 機能や大きなキーボードマトリックスのためのたくさんの GPIO を搭載しています。これらは、現在、キーボードで使われる最も一般的な MCU です。
|
||||
@@ -83,7 +83,7 @@ or open the directory in your favourite text editor.
|
||||
#define PRODUCT my_awesome_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) によって維持されているリストの値を優先します。デフォルトでは、リストに `VENDOR_ID` / `PRODUCT_ID` を含まない場合にのみ、`MANUFACTURER` と `PRODUCT` を使います。`sudo lsusb -v` を使用するとデバイスから示された値を表示します。また、接続したときのカーネルログにも表示されます。
|
||||
|
||||
### キーボードマトリックスの設定
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# モッドタップ
|
||||
|
||||
<!---
|
||||
original document: 0.9.34:docs/mod_tap.md
|
||||
git diff 0.9.34 HEAD -- docs/mod_tap.md | cat
|
||||
original document: 0.10.36:docs/mod_tap.md
|
||||
git diff 0.10.36 HEAD -- docs/mod_tap.md | cat
|
||||
-->
|
||||
|
||||
モッドタップキー `MT(mod, kc)` は、押したままの時にモディファイアのように機能し、タップされた時に通常のキーのように振舞います。別の言い方をすると、タップした時に Escape を送信しますが、押したままの時に Control あるいは Shift キーとして機能するキーを持つことができます。
|
||||
@@ -32,23 +32,26 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC)
|
||||
|
||||
便利なように、QMK はキーマップで一般的な組み合わせをよりコンパクトにするためのモッドタップショートカットを含んでいます:
|
||||
|
||||
| キー | エイリアス | 説明 |
|
||||
|--------------|-----------------------------|-------------------------------------------------------------|
|
||||
| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` |
|
||||
| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` |
|
||||
| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` |
|
||||
| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` |
|
||||
| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` |
|
||||
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
|
||||
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt、タップした場合は `kc` |
|
||||
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
|
||||
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` |
|
||||
| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` |
|
||||
| `LCAG_T(kc)` | | 押したままの場合は左 Control、左 Alt と左 GUI、タップした場合は `kc` |
|
||||
| `RCAG_T(kc)` | | 押したままの場合は右 Control、右 Alt と右 GUI、タップした場合は `kc` |
|
||||
| `C_S_T(kc)` | | 押したままの場合は左 Control と左 Shift、タップした場合は `kc` |
|
||||
| `MEH_T(kc)` | | 押したままの場合は左 Control、左 Shift と左 Alt、タップした場合は `kc` |
|
||||
| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、左 Shift、左 Alt と左 GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください |
|
||||
| キー | エイリアス | 説明 |
|
||||
| ------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
||||
| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` |
|
||||
| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` |
|
||||
| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` |
|
||||
| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` |
|
||||
| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` |
|
||||
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
|
||||
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt、タップした場合は `kc` |
|
||||
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
|
||||
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` |
|
||||
| `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` |
|
||||
| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` |
|
||||
| `RSA_T(kc)` | `SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr)、タップした場合は `kc` |
|
||||
| `RCS_T(kc)` | | 押したままの場合は右 Control と Shift、タップした場合は `kc` |
|
||||
| `LCAG_T(kc)` | | 押したままの場合は左 Control、左 Alt と左 GUI、タップした場合は `kc` |
|
||||
| `RCAG_T(kc)` | | 押したままの場合は右 Control、右 Alt と右 GUI、タップした場合は `kc` |
|
||||
| `C_S_T(kc)` | | 押したままの場合は左 Control と左 Shift、タップした場合は `kc` |
|
||||
| `MEH_T(kc)` | | 押したままの場合は左 Control、左 Shift と左 Alt、タップした場合は `kc` |
|
||||
| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、左 Shift、左 Alt と左 GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください |
|
||||
|
||||
## 注意事項
|
||||
|
||||
@@ -57,3 +60,7 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC)
|
||||
さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。これらのコードはシフトを非常に高速に送信するため、リモートデスクトップはコードを見逃すかもしれません。
|
||||
|
||||
これを修正するには、リモートデスクトップ接続を開き、「オプションの表示」を開き、「ローカル リソース」タブを開きます。キーボードセクションで、ドロップダウンを「このコンピューター」に変更します。これにより問題が修正され、キャラクタが正しく動作するようになります。
|
||||
|
||||
## 他のリソース
|
||||
|
||||
モッドタップの動作を調整する追加フラグについては、[タップホールド設定オプション](ja/tap_hold.md)を参照してください。
|
||||
|
@@ -1,9 +1,9 @@
|
||||
# QMK 初心者ガイド
|
||||
# QMK チュートリアル
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 0.9.0:docs/newbs.md
|
||||
git diff 0.9.0 HEAD -- docs/newbs.md | cat
|
||||
original document: 0.12.45:docs/newbs.md
|
||||
git diff 0.12.45 HEAD -- docs/newbs.md | cat
|
||||
-->
|
||||
|
||||
キーボードには、コンピュータ入っているものと似たようなプロセッサが入っています。
|
||||
@@ -19,20 +19,16 @@ QMK は、簡単なことは簡単に、そして、難しいことを可能な
|
||||
QMK は[多くの趣味のキーボード](https://qmk.fm/keyboards/)をサポートしています。
|
||||
現在使用しているキーボードが QMK を実行できない場合、QMK を実行できるキーボードの選択肢はたくさんあります。
|
||||
|
||||
## このガイドは私のためにあるのでしょうか?
|
||||
|
||||
このガイドは、ソースコードを使ってキーボードのファームウェアを構築したいと考えている人に適しています。
|
||||
もしあなたがすでにプログラマーであれば、このプロセスはとても身近で簡単に理解できるでしょう。
|
||||
もし、プログラミングの考え方に抵抗があるのであれば、代わりに[私たちのオンラインGUI](ja/newbs_building_firmware_configurator.md)を見てみてください。
|
||||
?> **このガイドは私のためにあるのでしょうか?**<br>
|
||||
もし、プログラミングの考え方に抵抗があるのであれば、代わりに[私たちのオンライン GUI](ja/newbs_building_firmware_configurator.md) を見てみてください。
|
||||
|
||||
## 概要
|
||||
|
||||
このガイドには4つの主要なセクションがあります。
|
||||
このガイドは、ソースコードを使ってキーボードのファームウェアを構築したいと考えている人に適しています。 もしあなたがすでにプログラマーであれば、このプロセスはとても身近で簡単に理解できるでしょう。このガイドには3つの主要なセクションがあります:
|
||||
|
||||
1. [環境設定](ja/newbs_getting_started.md)
|
||||
2. [コマンドラインを使用して初めてのファームウェアを構築する](ja/newbs_building_firmware.md)
|
||||
3. [ファームウェアを書きこむ](ja/newbs_flashing.md)
|
||||
4. [テストとデバッグ](ja/newbs_testing_debugging.md)
|
||||
|
||||
このガイドは、これまでソフトウェアをコンパイルしたことがない人を支援することに特化しています。
|
||||
その観点から選択と推奨を行います。
|
||||
@@ -41,8 +37,4 @@ QMK は[多くの趣味のキーボード](https://qmk.fm/keyboards/)をサポ
|
||||
|
||||
## 追加のリソース
|
||||
|
||||
このガイドの他にも、QMK の学習に役立つリソースがいくつかあります。[学習リソース](ja/newbs_learn_more_resources.md)のページにまとめました。
|
||||
|
||||
## オープンソース
|
||||
|
||||
QMKは GNU General Public License でリリースされているオープンソース・ソフトウェアです。
|
||||
このガイドの他にも、QMK の学習に役立つリソースがいくつかあります。[シラバス](ja/syllabus.md)と[学習リソース](ja/newbs_learn_more_resources.md)のページにまとめました。
|
||||
|
@@ -2,13 +2,13 @@
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 0.9.0:docs/newbs_building_firmware_configurator.md
|
||||
git diff 0.9.0 HEAD -- docs/newbs_building_firmware_configurator.md | cat
|
||||
original document: 0.12.45:docs/newbs_building_firmware_configurator.md
|
||||
git diff 0.12.45 HEAD -- docs/newbs_building_firmware_configurator.md | cat
|
||||
-->
|
||||
|
||||
[](https://config.qmk.fm/)
|
||||
|
||||
[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの hex ファイルを生成するオンライングラフィカルユーザーインターフェイスです。
|
||||
[QMK Configurator](https://config.qmk.fm) は、QMKファームウェアの `.hex` や `.bin` ファイルを生成するオンライングラフィカルユーザーインターフェイスです。
|
||||
|
||||
[ビデオチュートリアル](https://www.youtube.com/watch?v=-imgglzDMdY) を見てください。
|
||||
多くの人は、それが自分のキーボードのプログラミングを始めるのに十分な情報であることに気づくでしょう。
|
||||
|
@@ -1,12 +1,12 @@
|
||||
# ファームウェアを書きこむ
|
||||
# ファームウェアを書き込む
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 0.9.44:docs/newbs_flashing.md
|
||||
git diff 0.9.44 HEAD -- docs/newbs_flashing.md | cat
|
||||
original document: 0.12.45:docs/newbs_flashing.md
|
||||
git diff 0.12.45 HEAD -- docs/newbs_flashing.md | cat
|
||||
-->
|
||||
|
||||
カスタムファームウェアは出来たので、キーボードに書き込みたくなるでしょう/フラッシュしたくなるでしょう。
|
||||
カスタムファームウェアは出来たので、いよいよキーボードへの書き込み(フラッシュ)です。
|
||||
|
||||
## キーボードを DFU (Bootloader) モードにする
|
||||
|
||||
@@ -50,18 +50,22 @@ Finder またはエクスプローラーでファームウェアのファイル
|
||||
|
||||
Windows か macOS を使用している場合、現在のフォルダをエクスプローラーか Finder で簡単に開くためのコマンドがあります。
|
||||
|
||||
#### Windows
|
||||
<!-- tabs:start -->
|
||||
|
||||
#### ** Windows **
|
||||
|
||||
```
|
||||
start .
|
||||
```
|
||||
|
||||
#### macOS
|
||||
#### ** macOS **
|
||||
|
||||
```
|
||||
open .
|
||||
```
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
ファームウェアファイルは常に以下の命名形式に従っています:
|
||||
|
||||
```
|
||||
@@ -117,11 +121,13 @@ QMK Toolbox の `Flash` ボタンをクリックします。次のような出
|
||||
|
||||
WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
|
||||
|
||||
この場合、あなたは明示的にブートローダを指定する方法を使わなければなりません。詳細は、[ファームウェアのフラッシュ](ja/flashing.md) ガイドを参照してください。
|
||||
この場合、あなたは明示的にブートローダを指定する方法を使わなければなりません。詳細は、[ファームウェアのフラッシュ](ja/flashing.md)ガイドを参照してください。
|
||||
|
||||
## テストしましょう!
|
||||
|
||||
おめでとうございます! カスタムファームウェアがキーボードにプログラムされました!
|
||||
おめでとうございます!カスタムファームウェアがキーボードにプログラムされ、テストする準備ができました!
|
||||
|
||||
使ってみて、すべてがあなたの望むように動作するかどうか確認してください。
|
||||
この初心者ガイドを完全なものにするために [テストとデバッグ](ja/newbs_testing_debugging.md) を書いたので、ファームウェアの検証とカスタム機能のトラブルシューティング方法について学ぶには、こちらをご覧ください。
|
||||
少し運が良ければ全てが完璧に機能しますが、そうでない場合は何が問題なのかを理解するのに役立つ手順があります。
|
||||
通常、キーボードのテストは非常に簡単です。全てのキーをひとつずつ押して、期待するキーが送信されることを確認します。例え QMK で動作していない場合でも、[QMK Configurator](https://config.qmk.fm/#/test/) のテストモードを使用すると、キーボードをチェックできます。
|
||||
|
||||
まだ動作しませんか?詳細については FAQ トピックを参照するか、[Discord でチャット](https://discord.gg/Uq7gcHh)してください。
|
||||
|
@@ -2,13 +2,13 @@
|
||||
|
||||
<!---
|
||||
grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
|
||||
original document: 0.9.0:docs/newbs_learn_more_resources.md
|
||||
git diff 0.9.0 HEAD -- docs/newbs_learn_more_resources.md | cat
|
||||
original document: 0.12.45:docs/newbs_learn_more_resources.md
|
||||
git diff 0.12.45 HEAD -- docs/newbs_learn_more_resources.md | cat
|
||||
-->
|
||||
|
||||
これらのリソースは、QMK コミュニティの新しいメンバーに、初心者向けドキュメントで提供されている情報に対する理解を深めることを目的としています。
|
||||
|
||||
## QMK に関するリソース:
|
||||
## QMK に関するリソース
|
||||
|
||||
### 英語 :id=english-resources-qmk
|
||||
|
||||
@@ -18,17 +18,35 @@
|
||||
|
||||
_日本語のリソース情報を募集中です。_
|
||||
|
||||
## コマンドラインに関するリソース:
|
||||
## コマンドラインに関するリソース :id=command-line-resources
|
||||
|
||||
### 英語 :id=english-resources-cli
|
||||
|
||||
* [Good General Tutorial on Command Line](https://www.codecademy.com/learn/learn-the-command-line)
|
||||
* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
|
||||
* [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
|
||||
|
||||
### 日本語 :id=japanese-resources-cli
|
||||
|
||||
_日本語のリソース情報を募集中です。_
|
||||
|
||||
## Git に関するリソース:
|
||||
## テキストエディタに関するリソース :id=text-editor-resources
|
||||
|
||||
どのテキストエディタを使えば良いか分かりませんか?
|
||||
|
||||
### 英語 :id=english-resources-text-editor
|
||||
|
||||
* [a great introduction to the subject](https://learntocodewith.me/programming/basics/text-editors/)
|
||||
|
||||
### 日本語 :id=japanese-resources-text-editor
|
||||
|
||||
_日本語のリソース情報を募集中です。_
|
||||
|
||||
コーディング用に特別に作成されたエディタ:
|
||||
* [Sublime Text](https://www.sublimetext.com/)
|
||||
* [VS Code](https://code.visualstudio.com/)
|
||||
|
||||
## Git に関するリソース
|
||||
|
||||
### 英語 :id=english-resources-git
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# ワンショットキー
|
||||
|
||||
<!---
|
||||
original document: 0.9.34:docs/one_shot_keys.md
|
||||
git diff 0.9.34 HEAD -- docs/one_shot_keys.md | cat
|
||||
original document: 0.12.41:docs/one_shot_keys.md
|
||||
git diff 0.12.41 HEAD -- docs/one_shot_keys.md | cat
|
||||
-->
|
||||
|
||||
ワンショットキーは次のキーが押されるまでアクティブのままになり、そのあと放されるキーです。これにより一度に1つ以上のキーを押すことなく、キーボードの組み合わせを入力することができます。これらのキーは通常「スティッキーキー」あるいは「デッドキー」と呼ばれます。
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。
|
||||
|
||||
ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD)` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。
|
||||
ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD_BIT(KC_*))` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。
|
||||
|
||||
!> リモートデスクトップ接続で OSM 変換に問題がある場合は、設定を開いて「ローカル リソース」タブに移動し、キーボードセクションでドロップダウンを「このコンピューター」に変更することで修正することができます。これにより問題が修正され、OSM がリモートデスクトップ上で適切に動作するようになります。
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# キーボードをより良くするための便利なコア関数のリスト
|
||||
|
||||
<!---
|
||||
original document: 0.10.33:docs/ref_functions.md
|
||||
git diff 0.10.33 HEAD -- docs/ref_functions.md | cat
|
||||
original document: 0.12.41:docs/ref_functions.md
|
||||
git diff 0.12.41 HEAD -- docs/ref_functions.md | cat
|
||||
-->
|
||||
|
||||
QMK には、信じられないほど便利な、またはあなたが望んでいた機能を少し追加する、隠された関数がたくさんあります。特定の機能に固有の関数はそれぞれの機能のページにあるため、ここには含まれていません。
|
||||
@@ -98,7 +98,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
|
||||
## EEPROM (永続ストレージ)の消去
|
||||
|
||||
オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。ブートマジックはこれを行う方法の1つですが、有効になっていない場合はカスタムマクロを使って行うことができます。
|
||||
オーディオ、RGB アンダーグロー、バックライト、キーの動作に問題がある場合は、EEPROM (永続的な設定のストレージ)をリセットすることができます。EEPROM を強制的にリセットするには、[`EEP_RST` キーコード](ja/quantum_keycodes.md)あるいは[ブートマジック](ja/feature_bootmagic.md)機能を使います。それらのいずれも選択肢にない場合は、カスタムマクロを使って行うことができます。
|
||||
|
||||
EEPROM を消去するには、関数またはマクロから `eeconfig_init()` を実行し、ほとんどの設定をデフォルトにリセットします。
|
||||
|
||||
|
@@ -23,7 +23,7 @@ You can control the behavior of one shot keys by defining these in `config.h`:
|
||||
|
||||
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
|
||||
|
||||
For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`.
|
||||
For one shot layers, you need to call `set_oneshot_layer(LAYER, ONESHOT_START)` on key down, and `clear_oneshot_layer_state(ONESHOT_PRESSED)` on key up. If you want to cancel the oneshot, call `reset_oneshot_layer()`.
|
||||
|
||||
For one shot mods, you need to call `set_oneshot_mods(MOD_BIT(KC_*))` to set it, or `clear_oneshot_mods()` to cancel it.
|
||||
|
||||
|
@@ -115,7 +115,7 @@ bool oled_initialized = false;
|
||||
bool oled_active = false;
|
||||
bool oled_scrolling = false;
|
||||
uint8_t oled_brightness = OLED_BRIGHTNESS;
|
||||
uint8_t oled_rotation = 0;
|
||||
oled_rotation_t oled_rotation = 0;
|
||||
uint8_t oled_rotation_width = 0;
|
||||
uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values
|
||||
uint8_t oled_scroll_start = 0;
|
||||
@@ -158,7 +158,7 @@ static void InvertCharacter(uint8_t *cursor) {
|
||||
}
|
||||
}
|
||||
|
||||
bool oled_init(uint8_t rotation) {
|
||||
bool oled_init(oled_rotation_t rotation) {
|
||||
#if defined(USE_I2C) && defined(SPLIT_KEYBOARD)
|
||||
if (!is_keyboard_master()) {
|
||||
return true;
|
||||
@@ -491,8 +491,9 @@ void oled_write_raw(const char *data, uint16_t size) {
|
||||
uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
|
||||
if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
|
||||
for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
|
||||
if (oled_buffer[i] == data[i]) continue;
|
||||
oled_buffer[i] = data[i];
|
||||
uint8_t c = *data++;
|
||||
if (oled_buffer[i] == c) continue;
|
||||
oled_buffer[i] = c;
|
||||
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
|
||||
}
|
||||
}
|
||||
|
@@ -226,13 +226,17 @@ void oled_write(const char *data, bool invert);
|
||||
void oled_write_ln(const char *data, bool invert);
|
||||
|
||||
// Pans the buffer to the right (or left by passing true) by moving contents of the buffer
|
||||
// Useful for moving the screen in preparation for new drawing
|
||||
void oled_pan(bool left);
|
||||
|
||||
// Returns a pointer to the requested start index in the buffer plus remaining
|
||||
// buffer length as struct
|
||||
oled_buffer_reader_t oled_read_raw(uint16_t start_index);
|
||||
|
||||
// Writes a string to the buffer at current cursor position
|
||||
void oled_write_raw(const char *data, uint16_t size);
|
||||
|
||||
// Writes a single byte into the buffer at the specified index
|
||||
void oled_write_raw_byte(const char data, uint16_t index);
|
||||
|
||||
// Sets a specific pixel on or off
|
||||
@@ -251,17 +255,11 @@ void oled_write_P(const char *data, bool invert);
|
||||
// Remapped to call 'void oled_write_ln(const char *data, bool invert);' on ARM
|
||||
void oled_write_ln_P(const char *data, bool invert);
|
||||
|
||||
// Writes a PROGMEM string to the buffer at current cursor position
|
||||
void oled_write_raw_P(const char *data, uint16_t size);
|
||||
#else
|
||||
// Writes a string to the buffer at current cursor position
|
||||
// Advances the cursor while writing, inverts the pixels if true
|
||||
# define oled_write_P(data, invert) oled_write(data, invert)
|
||||
|
||||
// Writes a string to the buffer at current cursor position
|
||||
// Advances the cursor while writing, inverts the pixels if true
|
||||
// Advances the cursor to the next page, wiring ' ' to the remainder of the current page
|
||||
# define oled_write_ln_P(data, invert) oled_write(data, invert)
|
||||
|
||||
# define oled_write_raw_P(data, size) oled_write_raw(data, size)
|
||||
#endif // defined(__AVR__)
|
||||
|
||||
|
@@ -2,6 +2,9 @@
|
||||
MCU = STM32F303
|
||||
BOARD = QMK_PROTON_C
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
## Features
|
||||
CONSOLE_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -2,6 +2,9 @@
|
||||
MCU = STM32F303
|
||||
BOARD = QMK_PROTON_C
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,8 +1,10 @@
|
||||
# MCU name
|
||||
MCU = STM32F042
|
||||
|
||||
BOARD = ST_NUCLEO32_F042K6
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
30
keyboards/anavi/macropad2/keymaps/binary/keymap.c
Normal file
30
keyboards/anavi/macropad2/keymaps/binary/keymap.c
Normal file
@@ -0,0 +1,30 @@
|
||||
/* Copyright 2021 Leon Anavi <leon@anavi.org>
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_0, KC_1
|
||||
)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM test_combo[] = {KC_0, KC_1, COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)};
|
||||
|
||||
void process_combo_event(uint16_t combo_index, bool pressed) {
|
||||
backlight_step();
|
||||
}
|
1
keyboards/anavi/macropad2/keymaps/binary/rules.mk
Normal file
1
keyboards/anavi/macropad2/keymaps/binary/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
COMBO_ENABLE = yes
|
41
keyboards/anavi/macropad2/keymaps/skype/keymap.c
Normal file
41
keyboards/anavi/macropad2/keymaps/skype/keymap.c
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2021 Leon Anavi <leon@anavi.org>
|
||||
*
|
||||
* 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
|
||||
|
||||
/*
|
||||
* The keymap contains the following shortcuts for Skype on
|
||||
* MS Windows and GNU/Linux distributions:
|
||||
*
|
||||
* Ctrl+M: Mute/unmute microphone
|
||||
* Ctrl+Shift+K: Start/stop camera
|
||||
*
|
||||
* NOTE: Mac users should change the shortcut to toggle the mic
|
||||
* to Command+Shift+M, for example KC_LGUI(LSFT(KC_M))
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
LCTL(KC_M), LCTL(LSFT(KC_K))
|
||||
)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM test_combo[] = {LCTL(KC_M), LCTL(LSFT(KC_K)), COMBO_END};
|
||||
combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)};
|
||||
|
||||
void process_combo_event(uint16_t combo_index, bool pressed) {
|
||||
backlight_step();
|
||||
}
|
1
keyboards/anavi/macropad2/keymaps/skype/rules.mk
Normal file
1
keyboards/anavi/macropad2/keymaps/skype/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
COMBO_ENABLE = yes
|
@@ -2,6 +2,9 @@
|
||||
MCU = STM32F072
|
||||
BOARD = GENERIC_STM32_F072XB
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
@@ -1,6 +1,10 @@
|
||||
# MCU name
|
||||
MCU = STM32F303
|
||||
BOARD = QMK_PROTON_C
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -16,4 +20,3 @@ RGBLIGHT_ENABLE = no
|
||||
TAP_DANCE_ENABLE = no
|
||||
UNICODE_ENABLE = no
|
||||
UNICODEMAP_ENABLE = yes
|
||||
|
||||
|
62
keyboards/babyv/keymaps/melonbred/keymap.c
Normal file
62
keyboards/babyv/keymaps/melonbred/keymap.c
Normal file
@@ -0,0 +1,62 @@
|
||||
/* Copyright 2020 melonbred
|
||||
*
|
||||
* 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
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
LAYER0,
|
||||
LAYER1,
|
||||
LAYER2,
|
||||
};
|
||||
|
||||
|
||||
// Tap Dance Declarations
|
||||
enum {
|
||||
TD_M_D = 0,
|
||||
TD_P_M
|
||||
};
|
||||
|
||||
// Tap Dance Definition
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
//Tap once for minus, tap twice for divide
|
||||
[TD_M_D] = ACTION_TAP_DANCE_DOUBLE(KC_PMNS, KC_PSLS),
|
||||
//Tap once for plus, tap twice for multiply
|
||||
[TD_P_M] = ACTION_TAP_DANCE_DOUBLE(KC_PPLS, KC_PAST)
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[LAYER0] = LAYOUT_2u(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
MO(LAYER2), KC_LALT, LT(LAYER1, KC_SPC), KC_SPC, KC_RALT, KC_LGUI
|
||||
),
|
||||
|
||||
[LAYER1] = LAYOUT_2u(
|
||||
KC_GRV, KC_QUOT, _______, KC_UP, _______, _______, KC_7, KC_8, KC_9, KC_PMNS, KC_PSLS, KC_DEL,
|
||||
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_4, KC_5, KC_6, KC_PPLS, KC_PAST, KC_ENT,
|
||||
KC_LSFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_1, KC_2, KC_3, XXXXXXX, XXXXXXX, KC_RSFT,
|
||||
XXXXXXX, _______, _______, KC_0, KC_PDOT, _______
|
||||
),
|
||||
|
||||
[LAYER2] = LAYOUT_2u(
|
||||
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_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, KC_RCTL, KC_RALT, KC_DEL, XXXXXXX,
|
||||
_______, KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
};
|
@@ -50,6 +50,6 @@
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
#endif
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#ifndef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||
#endif
|
||||
|
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_F1, KC_F5, KC_F9, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, KC_DEL, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_F2, KC_F6, KC_F10, KC_ESC, 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_END, KC_PGUP,
|
||||
KC_F3, KC_F7, KC_F11, 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_BSLS, KC_COLN, KC_DQUO, KC_PGDN,
|
||||
KC_F4, KC_F8, KC_F12, 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_0, KC_7, KC_8, KC_9,
|
||||
KC_PSCR, KC_SLCK, KC_PAUS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LABK, KC_RABK, KC_QUES, KC_RSFT, KC_UP, KC_0, KC_4, KC_5, KC_6,
|
||||
LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_NO, KC_SPC, KC_SPC, KC_COMM, KC_DOT, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT, KC_1, KC_2, KC_3 )
|
||||
};
|
||||
KC_F4, KC_F8, KC_F12, 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_KP_0, KC_KP_7, KC_KP_8, KC_KP_9,
|
||||
KC_PSCR, KC_SLCK, KC_PAUS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LABK, KC_RABK, KC_QUES, KC_RSFT, KC_UP, KC_KP_0, KC_KP_4, KC_KP_5, KC_KP_6,
|
||||
LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_NO, KC_SPC, KC_SPC, KC_COMM, KC_DOT, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_1, KC_KP_2, KC_KP_3 )
|
||||
};
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -2,6 +2,9 @@
|
||||
MCU = STM32F303
|
||||
BOARD = QMK_PROTON_C
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -22,12 +22,12 @@
|
||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
|
||||
K400, K401, K402, K403, K409, K410, K411, K413, K414 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K311, K313, K314 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
|
||||
{ K400, K401, K402, K403, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K409, K410, KC_NO, K411, K413, K414 } \
|
||||
}
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F303
|
||||
BOARD = QMK_PROTON_C
|
||||
BOOTLOADER =
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -20,8 +26,5 @@ WS2812_DRIVER = spi
|
||||
|
||||
LAYOUTS = 60_ansi 60_tsangan_hhkb
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU Name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -15,9 +21,6 @@ BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
WS2812_DRIVER = spi
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
DEFAULT_FOLDER = cannonkeys/db60/rev2
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -16,8 +22,5 @@ BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
WS2812_DRIVER = spi
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -19,8 +25,5 @@ WS2812_DRIVER = spi
|
||||
|
||||
LAYOUTS = 60_ansi 60_tsangan_hhkb
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
@@ -21,6 +27,3 @@ WS2812_DRIVER = spi
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
@@ -18,8 +24,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
WS2812_DRIVER = spi
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
@@ -18,8 +24,5 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -15,8 +21,5 @@ CUSTOM_MATRIX = no # Custom matrix file
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,8 +1,11 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
|
@@ -1,5 +0,0 @@
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here (page 175):
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
|
@@ -2,6 +2,12 @@
|
||||
MCU = STM32F072
|
||||
BOARD = GENERIC_STM32_F072XB
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -25,8 +31,5 @@ QWIIC_DRIVERS += MICRO_OLED
|
||||
|
||||
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -21,7 +27,4 @@ WS2812_DRIVER = spi
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_blocker_tsangan 65_iso_blocker
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
@@ -20,6 +26,3 @@ WS2812_DRIVER = spi
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
@@ -1,6 +1,12 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
@@ -19,8 +25,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
WS2812_DRIVER = spi
|
||||
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Do not put the microcontroller into power saving mode
|
||||
# when we get USB suspend event. We want it to keep updating
|
||||
# backlight effects.
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F042
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
@@ -15,4 +18,4 @@ NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F042
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
@@ -15,4 +18,4 @@ NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -2,6 +2,9 @@
|
||||
MCU = STM32F303
|
||||
BOARD = QMK_PROTON_C
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
|
45
keyboards/clawsome/hatchback/config.h
Normal file
45
keyboards/clawsome/hatchback/config.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x7767
|
||||
#define PRODUCT_ID 0x0000
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER AlisGraveNil
|
||||
#define PRODUCT hatchbackTKL
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 12
|
||||
#define MATRIX_COLS 10
|
||||
|
||||
/*
|
||||
* 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, B6, D4, B4, D0, B5, D1, E6, D2, D7, D3, C6 }
|
||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D5, C7, F1 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
41
keyboards/clawsome/hatchback/hatcback.h
Normal file
41
keyboards/clawsome/hatchback/hatcback.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K18, K09, \
|
||||
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K38, K29, \
|
||||
K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K58, K49, \
|
||||
K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \
|
||||
K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K96, K98, \
|
||||
KA0, KB0, KA1, KA2, KA3, KA4, KA5, KB5, KA6, KB6, KA7, KB8, KA9 \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, KC_NO, K09 }, \
|
||||
{ KC_NO, K11, K12, K13, K14, K15, K16, KC_NO, K18, KC_NO }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, KC_NO, K29 }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, KC_NO, K38, KC_NO }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49 }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, KC_NO, K58, KC_NO }, \
|
||||
{ K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||
{ K70, K71, K72, K73, K74, K75, K76, KC_NO, KC_NO, KC_NO }, \
|
||||
{ K80, K81, K82, K83, K84, K85, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||
{ K90, K91, K92, K93, K94, KC_NO, K96, KC_NO, K98, KC_NO }, \
|
||||
{ KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KC_NO, KA9 }, \
|
||||
{ KB0, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KB6, KC_NO, KB8, KC_NO }, \
|
||||
}
|
17
keyboards/clawsome/hatchback/hatchback.c
Normal file
17
keyboards/clawsome/hatchback/hatchback.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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 "hatchback.h"
|
102
keyboards/clawsome/hatchback/info.json
Normal file
102
keyboards/clawsome/hatchback/info.json
Normal file
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"keyboard_name": "hatchbackTKL",
|
||||
"url": "www.clawboards.xyz",
|
||||
"maintainer": "AAClawson (AlisGraveNil)",
|
||||
"width": 18.25,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"K00 (B0,F4)", "x":0, "y":0},
|
||||
{"label":"K01 (B0,F5)", "x":2, "y":0},
|
||||
{"label":"K11 (B6,F5)", "x":3, "y":0},
|
||||
{"label":"K02 (B0,F6)", "x":4, "y":0},
|
||||
{"label":"K12 (B6,F6)", "x":5, "y":0},
|
||||
{"label":"K03 (B0,F7)", "x":6.5, "y":0},
|
||||
{"label":"K13 (B6,F7)", "x":7.5, "y":0},
|
||||
{"label":"K04 (B0,B1)", "x":8.5, "y":0},
|
||||
{"label":"K14 (B6,B1)", "x":9.5, "y":0},
|
||||
{"label":"K05 (B0,B3)", "x":11, "y":0},
|
||||
{"label":"K15 (B6,B3)", "x":12, "y":0},
|
||||
{"label":"K06 (B0,B2)", "x":13, "y":0},
|
||||
{"label":"K16 (B6,B2)", "x":14, "y":0},
|
||||
{"label":"K07 (B0,D5)", "x":15.25, "y":0},
|
||||
{"label":"K18 (B6,C7)", "x":16.25, "y":0},
|
||||
{"label":"K09 (B0,F1)", "x":17.25, "y":0},
|
||||
{"label":"K20 (D4,F4)", "x":0, "y":1.5},
|
||||
{"label":"K30 (B4,F4)", "x":1, "y":1.5},
|
||||
{"label":"K21 (D4,F5)", "x":2, "y":1.5},
|
||||
{"label":"K31 (B4,F5)", "x":3, "y":1.5},
|
||||
{"label":"K22 (D4,F6)", "x":4, "y":1.5},
|
||||
{"label":"K32 (B4,F6)", "x":5, "y":1.5},
|
||||
{"label":"K23 (D4,F7)", "x":6, "y":1.5},
|
||||
{"label":"K33 (B4,F7)", "x":7, "y":1.5},
|
||||
{"label":"K24 (D4,B1)", "x":8, "y":1.5},
|
||||
{"label":"K34 (B4,B1)", "x":9, "y":1.5},
|
||||
{"label":"K25 (D4,B3)", "x":10, "y":1.5},
|
||||
{"label":"K35 (B4,B3)", "x":11, "y":1.5},
|
||||
{"label":"K26 (D4,B2)", "x":12, "y":1.5},
|
||||
{"label":"K36 (B4,B2)", "x":13, "y":1.5, "w":2},
|
||||
{"label":"K27 (D4,D5)", "x":15.25, "y":1.5},
|
||||
{"label":"K38 (B4,C7)", "x":16.25, "y":1.5},
|
||||
{"label":"K29 (D4,F1)", "x":17.25, "y":1.5},
|
||||
{"label":"K40 (D0,F4)", "x":0, "y":2.5, "w":1.5},
|
||||
{"label":"K50 (B5,F4)", "x":1.5, "y":2.5},
|
||||
{"label":"K41 (D0,F5)", "x":2.5, "y":2.5},
|
||||
{"label":"K51 (B5,F5)", "x":3.5, "y":2.5},
|
||||
{"label":"K42 (D0,F6)", "x":4.5, "y":2.5},
|
||||
{"label":"K52 (B5,F6)", "x":5.5, "y":2.5},
|
||||
{"label":"K43 (D0,F7)", "x":6.5, "y":2.5},
|
||||
{"label":"K53 (B5,F7)", "x":7.5, "y":2.5},
|
||||
{"label":"K44 (D0,B1)", "x":8.5, "y":2.5},
|
||||
{"label":"K54 (B5,B1)", "x":9.5, "y":2.5},
|
||||
{"label":"K45 (D0,B3)", "x":10.5, "y":2.5},
|
||||
{"label":"K55 (B5,B3)", "x":11.5, "y":2.5},
|
||||
{"label":"K46 (D0,B2)", "x":12.5, "y":2.5},
|
||||
{"label":"K56 (B5,B2)", "x":13.5, "y":2.5, "w":1.5},
|
||||
{"label":"K47 (D0,D5)", "x":15.25, "y":2.5},
|
||||
{"label":"K58 (B5,C7)", "x":16.25, "y":2.5},
|
||||
{"label":"K49 (D0,F1)", "x":17.25, "y":2.5},
|
||||
{"label":"K60 (D1,F4)", "x":0, "y":3.5, "w":1.75},
|
||||
{"label":"K70 (E6,F4)", "x":1.75, "y":3.5},
|
||||
{"label":"K61 (D1,F5)", "x":2.75, "y":3.5},
|
||||
{"label":"K71 (E6,F5)", "x":3.75, "y":3.5},
|
||||
{"label":"K62 (D1,F6)", "x":4.75, "y":3.5},
|
||||
{"label":"K72 (E6,F6)", "x":5.75, "y":3.5},
|
||||
{"label":"K63 (D1,F7)", "x":6.75, "y":3.5},
|
||||
{"label":"K73 (E6,F7)", "x":7.75, "y":3.5},
|
||||
{"label":"K64 (D1,B1)", "x":8.75, "y":3.5},
|
||||
{"label":"K74 (E6,B1)", "x":9.75, "y":3.5},
|
||||
{"label":"K65 (D1,B3)", "x":10.75, "y":3.5},
|
||||
{"label":"K75 (E6,B3)", "x":11.75, "y":3.5},
|
||||
{"label":"K76 (E6,B2)", "x":12.75, "y":3.5, "w":2.25},
|
||||
{"label":"K80 (D2,F4)", "x":0, "y":4.5, "w":2.25},
|
||||
{"label":"K90 (D7,F4)", "x":2.25, "y":4.5},
|
||||
{"label":"K81 (D2,F5)", "x":3.25, "y":4.5},
|
||||
{"label":"K91 (D7,F5)", "x":4.25, "y":4.5},
|
||||
{"label":"K82 (D2,F6)", "x":5.25, "y":4.5},
|
||||
{"label":"K92 (D7,F6)", "x":6.25, "y":4.5},
|
||||
{"label":"K83 (D2,F7)", "x":7.25, "y":4.5},
|
||||
{"label":"K93 (D7,F7)", "x":8.25, "y":4.5},
|
||||
{"label":"K84 (D2,B1)", "x":9.25, "y":4.5},
|
||||
{"label":"K94 (D7,B1)", "x":10.25, "y":4.5},
|
||||
{"label":"K85 (D2,B3)", "x":11.25, "y":4.5},
|
||||
{"label":"K96 (D7,B2)", "x":12.25, "y":4.5, "w":2.75},
|
||||
{"label":"K98 (D7,C7)", "x":16.25, "y":4.5},
|
||||
{"label":"KA0 (D3,F4)", "x":0, "y":5.5, "w":1.25},
|
||||
{"label":"KB0 (C6,F4)", "x":1.25, "y":5.5, "w":1.25},
|
||||
{"label":"KA1 (D3,F5)", "x":2.5, "y":5.5, "w":1.25},
|
||||
{"label":"KA2 (D3,F6)", "x":3.75, "y":5.5, "w":2.25},
|
||||
{"label":"KA3 (D3,F7)", "x":6, "y":5.5, "w":1.75},
|
||||
{"label":"KA4 (D3,B1)", "x":7.75, "y":5.5, "w":2.25},
|
||||
{"label":"KA5 (D3,B3)", "x":10, "y":5.5, "w":1.25},
|
||||
{"label":"KB5 (C6,B3)", "x":11.25, "y":5.5, "w":1.25},
|
||||
{"label":"KA6 (D3,B2)", "x":12.5, "y":5.5, "w":1.25},
|
||||
{"label":"KB6 (C6,B2)", "x":13.75, "y":5.5, "w":1.25},
|
||||
{"label":"KA7 (D3,D5)", "x":15.25, "y":5.5},
|
||||
{"label":"KB8 (C6,C7)", "x":16.25, "y":5.5},
|
||||
{"label":"KA9 (D3,F1)", "x":17.25, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
30
keyboards/clawsome/hatchback/keymap/default/keymap.c
Normal file
30
keyboards/clawsome/hatchback/keymap/default/keymap.c
Normal file
@@ -0,0 +1,30 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME, 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_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
};
|
||||
|
14
keyboards/clawsome/hatchback/readme.md
Normal file
14
keyboards/clawsome/hatchback/readme.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# SUV
|
||||
|
||||
This is TKL keyboard that can be converted down into a 75% keyboard and a 13key macropad (see "luggage rack")
|
||||
|
||||
- Keyboard Maintainer: [AAClawson](https://github.com/AlisGraveNil)
|
||||
- Hardware Supported: Hatchback, Elite-C (as TKL); Pro-Micro and nice!nano (as 75%)
|
||||
- Hardware Availability: In stock within the next month
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make clawsome/hatchback:default
|
||||
Connect your board to your computer; connect the "GND" and "RST" pins on your controller using a wire or a pair of tweezers and hold it for 3 seconds to force the controller into bootloader mode. Then use QMK Toolbox to flash the .hex you downloaded from the QMK website. If using an Elite-C, there's a small black reset button on the PCB you can press instead of trying to connect the two pins.
|
||||
|
||||
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).
|
22
keyboards/clawsome/hatchback/rules.mk
Normal file
22
keyboards/clawsome/hatchback/rules.mk
Normal file
@@ -0,0 +1,22 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # 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
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
45
keyboards/clawsome/suv/config.h
Normal file
45
keyboards/clawsome/suv/config.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x7767
|
||||
#define PRODUCT_ID 0x0000
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER AlisGraveNil
|
||||
#define PRODUCT suv1.1
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 12
|
||||
#define MATRIX_COLS 11
|
||||
|
||||
/*
|
||||
* 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 { F0, B6, D0, F6, D4, F7, B3, B1, B0, C6, B2, D7 }
|
||||
#define MATRIX_COL_PINS { D3, D2, D1, B4, B5, B7, D5, C7, F1, F5, F4 }
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
120
keyboards/clawsome/suv/info.json
Normal file
120
keyboards/clawsome/suv/info.json
Normal file
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"keyboard_name": "suv1.1",
|
||||
"url": "www.clawboards.xyz",
|
||||
"maintainer": "AAClawson (AlisGraveNil)",
|
||||
"width": 22.5,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"K00 (F0,D3)", "x":0, "y":0},
|
||||
{"label":"K01 (F0,D2)", "x":2, "y":0},
|
||||
{"label":"K11 (B6,D2)", "x":3, "y":0},
|
||||
{"label":"K02 (F0,D1)", "x":4, "y":0},
|
||||
{"label":"K12 (B6,D1)", "x":5, "y":0},
|
||||
{"label":"K03 (F0,B4)", "x":6.5, "y":0},
|
||||
{"label":"K13 (B6,B4)", "x":7.5, "y":0},
|
||||
{"label":"K04 (F0,B5)", "x":8.5, "y":0},
|
||||
{"label":"K14 (B6,B5)", "x":9.5, "y":0},
|
||||
{"label":"K05 (F0,B7)", "x":11, "y":0},
|
||||
{"label":"K15 (B6,B7)", "x":12, "y":0},
|
||||
{"label":"K06 (F0,D5)", "x":13, "y":0},
|
||||
{"label":"K16 (B6,D5)", "x":14, "y":0},
|
||||
{"label":"K07 (F0,C7)", "x":15.25, "y":0},
|
||||
{"label":"K17 (B6,C7)", "x":16.25, "y":0},
|
||||
{"label":"K08 (F0,F1)", "x":17.25, "y":0},
|
||||
{"label":"K20 (D0,D3)", "x":0, "y":1.5},
|
||||
{"label":"K30 (F6,D3)", "x":1, "y":1.5},
|
||||
{"label":"K21 (D0,D2)", "x":2, "y":1.5},
|
||||
{"label":"K31 (F6,D2)", "x":3, "y":1.5},
|
||||
{"label":"K22 (D0,D1)", "x":4, "y":1.5},
|
||||
{"label":"K32 (F6,D1)", "x":5, "y":1.5},
|
||||
{"label":"K23 (D0,B4)", "x":6, "y":1.5},
|
||||
{"label":"K33 (F6,B4)", "x":7, "y":1.5},
|
||||
{"label":"K24 (D0,B5)", "x":8, "y":1.5},
|
||||
{"label":"K34 (F6,B5)", "x":9, "y":1.5},
|
||||
{"label":"K25 (D0,B7)", "x":10, "y":1.5},
|
||||
{"label":"K35 (F6,B7)", "x":11, "y":1.5},
|
||||
{"label":"K26 (D0,D5)", "x":12, "y":1.5},
|
||||
{"label":"K36 (F6,D5)", "x":13, "y":1.5, "w":2},
|
||||
{"label":"K27 (D0,C7)", "x":15.25, "y":1.5},
|
||||
{"label":"K37 (F6,C7)", "x":16.25, "y":1.5},
|
||||
{"label":"K28 (D0,F1)", "x":17.25, "y":1.5},
|
||||
{"label":"K38 (F6,F1)", "x":18.5, "y":1.5},
|
||||
{"label":"K29 (D0,F5)", "x":19.5, "y":1.5},
|
||||
{"label":"K39 (F6,F5)", "x":20.5, "y":1.5},
|
||||
{"label":"K2A (D0,F4)", "x":21.5, "y":1.5},
|
||||
{"label":"K40 (D4,D3)", "x":0, "y":2.5, "w":1.5},
|
||||
{"label":"K50 (F7,D3)", "x":1.5, "y":2.5},
|
||||
{"label":"K41 (D4,D2)", "x":2.5, "y":2.5},
|
||||
{"label":"K51 (F7,D2)", "x":3.5, "y":2.5},
|
||||
{"label":"K42 (D4,D1)", "x":4.5, "y":2.5},
|
||||
{"label":"K52 (F7,D1)", "x":5.5, "y":2.5},
|
||||
{"label":"K43 (D4,B4)", "x":6.5, "y":2.5},
|
||||
{"label":"K53 (F7,B4)", "x":7.5, "y":2.5},
|
||||
{"label":"K44 (D4,B5)", "x":8.5, "y":2.5},
|
||||
{"label":"K54 (F7,B5)", "x":9.5, "y":2.5},
|
||||
{"label":"K45 (D4,B7)", "x":10.5, "y":2.5},
|
||||
{"label":"K55 (F7,B7)", "x":11.5, "y":2.5},
|
||||
{"label":"K46 (D4,D5)", "x":12.5, "y":2.5},
|
||||
{"label":"K56 (F7,D5)", "x":13.5, "y":2.5, "w":1.5},
|
||||
{"label":"K47 (D4,C7)", "x":15.25, "y":2.5},
|
||||
{"label":"K57 (F7,C7)", "x":16.25, "y":2.5},
|
||||
{"label":"K48 (D4,F1)", "x":17.25, "y":2.5},
|
||||
{"label":"K58 (F7,F1)", "x":18.5, "y":2.5},
|
||||
{"label":"K49 (D4,F5)", "x":19.5, "y":2.5},
|
||||
{"label":"K59 (F7,F5)", "x":20.5, "y":2.5},
|
||||
{"label":"K4A (D4,F4)", "x":21.5, "y":2.5, "h":2},
|
||||
{"label":"K60 (B3,D3)", "x":0, "y":3.5, "w":1.75},
|
||||
{"label":"K70 (B1,D3)", "x":1.75, "y":3.5},
|
||||
{"label":"K61 (B3,D2)", "x":2.75, "y":3.5},
|
||||
{"label":"K71 (B1,D2)", "x":3.75, "y":3.5},
|
||||
{"label":"K62 (B3,D1)", "x":4.75, "y":3.5},
|
||||
{"label":"K72 (B1,D1)", "x":5.75, "y":3.5},
|
||||
{"label":"K63 (B3,B4)", "x":6.75, "y":3.5},
|
||||
{"label":"K73 (B1,B4)", "x":7.75, "y":3.5},
|
||||
{"label":"K64 (B3,B5)", "x":8.75, "y":3.5},
|
||||
{"label":"K74 (B1,B5)", "x":9.75, "y":3.5},
|
||||
{"label":"K65 (B3,B7)", "x":10.75, "y":3.5},
|
||||
{"label":"K75 (B1,B7)", "x":11.75, "y":3.5},
|
||||
{"label":"K76 (B1,D5)", "x":12.75, "y":3.5, "w":2.25},
|
||||
{"label":"K78 (B1,F1)", "x":18.5, "y":3.5},
|
||||
{"label":"K69 (B3,F5)", "x":19.5, "y":3.5},
|
||||
{"label":"K79 (B1,F5)", "x":20.5, "y":3.5},
|
||||
{"label":"K80 (B0,D3)", "x":0, "y":4.5, "w":2.25},
|
||||
{"label":"K90 (C6,D3)", "x":2.25, "y":4.5},
|
||||
{"label":"K81 (B0,D2)", "x":3.25, "y":4.5},
|
||||
{"label":"K91 (C6,D2)", "x":4.25, "y":4.5},
|
||||
{"label":"K82 (B0,D1)", "x":5.25, "y":4.5},
|
||||
{"label":"K92 (C6,D1)", "x":6.25, "y":4.5},
|
||||
{"label":"K83 (B0,B4)", "x":7.25, "y":4.5},
|
||||
{"label":"K93 (C6,B4)", "x":8.25, "y":4.5},
|
||||
{"label":"K84 (B0,B5)", "x":9.25, "y":4.5},
|
||||
{"label":"K94 (C6,B5)", "x":10.25, "y":4.5},
|
||||
{"label":"K85 (B0,B7)", "x":11.25, "y":4.5},
|
||||
{"label":"K96 (C6,D5)", "x":12.25, "y":4.5, "w":2.75},
|
||||
{"label":"K97 (C6,C7)", "x":16.25, "y":4.5},
|
||||
{"label":"K98 (C6,F1)", "x":18.5, "y":4.5},
|
||||
{"label":"K89 (B0,F5)", "x":19.5, "y":4.5},
|
||||
{"label":"K99 (C6,F5)", "x":20.5, "y":4.5},
|
||||
{"label":"K8A (B0,F4)", "x":21.5, "y":4.5, "h":2},
|
||||
{"label":"KA0 (B2,D3)", "x":0, "y":5.5, "w":1.25},
|
||||
{"label":"KB0 (D7,D3)", "x":1.25, "y":5.5, "w":1.25},
|
||||
{"label":"KA1 (B2,D2)", "x":2.5, "y":5.5, "w":1.25},
|
||||
{"label":"KA2 (B2,D1)", "x":3.75, "y":5.5, "w":2.25},
|
||||
{"label":"KA3 (B2,B4)", "x":6, "y":5.5, "w":1.75},
|
||||
{"label":"KA4 (B2,B5)", "x":7.75, "y":5.5, "w":2.25},
|
||||
{"label":"KA5 (B2,B7)", "x":10, "y":5.5, "w":1.25},
|
||||
{"label":"KB5 (D7,B7)", "x":11.25, "y":5.5, "w":1.25},
|
||||
{"label":"KA6 (B2,D5)", "x":12.5, "y":5.5, "w":1.25},
|
||||
{"label":"KB6 (D7,D5)", "x":13.75, "y":5.5, "w":1.25},
|
||||
{"label":"KA7 (B2,C7)", "x":15.25, "y":5.5},
|
||||
{"label":"KB7 (D7,C7)", "x":16.25, "y":5.5},
|
||||
{"label":"KA8 (B2,F1)", "x":17.25, "y":5.5},
|
||||
{"label":"KB8 (D7,F1)", "x":18.5, "y":5.5, "w":2},
|
||||
{"label":"KB9 (D7,F5)", "x":20.5, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
30
keyboards/clawsome/suv/keymap/default/keymap.c
Normal file
30
keyboards/clawsome/suv/keymap/default/keymap.c
Normal file
@@ -0,0 +1,30 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
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_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||
),
|
||||
|
||||
};
|
||||
|
13
keyboards/clawsome/suv/readme.md
Normal file
13
keyboards/clawsome/suv/readme.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# SUV
|
||||
|
||||
This is 100% keyboard with the standard layout of a 104-key setup.
|
||||
|
||||
- Keyboard Maintainer: [AAClawson](https://github.com/AlisGraveNil)
|
||||
- Hardware Supported: SUV, Elite-C
|
||||
- Hardware Availability: In stock within the next month
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make clawsome/suv:default
|
||||
|
||||
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).
|
22
keyboards/clawsome/suv/rules.mk
Normal file
22
keyboards/clawsome/suv/rules.mk
Normal file
@@ -0,0 +1,22 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = caterina
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
COMMAND_ENABLE = yes # 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
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
17
keyboards/clawsome/suv/suv.c
Normal file
17
keyboards/clawsome/suv/suv.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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 "suv.h"
|
41
keyboards/clawsome/suv/suv.h
Normal file
41
keyboards/clawsome/suv/suv.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2021 AAClawson (AlisGraveNil)
|
||||
*
|
||||
* 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
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \
|
||||
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, K38, K29, K39, K2A, \
|
||||
K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, K49, K59, K4A, \
|
||||
K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, K78, K69, K79, \
|
||||
K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K96, K97, K98, K89, K99, K8A, \
|
||||
KA0, KB0, KA1, KA2, KA3, KA4, KA5, KB5, KA6, KB6, KA7, KB7, KA8, KB8, KB9 \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, KC_NO, KC_NO }, \
|
||||
{ KC_NO, K11, K12, K13, K14, K15, K16, K17, KC_NO, KC_NO, KC_NO }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A }, \
|
||||
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, KC_NO }, \
|
||||
{ K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, KC_NO, K69, KC_NO }, \
|
||||
{ K70, K71, K72, K73, K74, K75, K76, KC_NO, K78, K79, KC_NO }, \
|
||||
{ K80, K81, K82, K83, K84, K85, KC_NO, KC_NO, KC_NO, K89, K8A }, \
|
||||
{ K90, K91, K92, K93, K94, KC_NO, K96, K97, K98, K99, KC_NO }, \
|
||||
{ KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KA8, KC_NO, KC_NO }, \
|
||||
{ KB0, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KB6, KB7, KB8, KB9, KC_NO }, \
|
||||
}
|
@@ -19,12 +19,6 @@
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here:
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||
|
||||
/* Backlight configuration
|
||||
*/
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
|
@@ -2,12 +2,6 @@
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here:
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||
|
||||
/* Backlight configuration
|
||||
*/
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
|
@@ -18,12 +18,6 @@
|
||||
#pragma once
|
||||
#include "config_common.h"
|
||||
|
||||
/* Address for jumping to bootloader on STM32 chips. */
|
||||
/* It is chip dependent, the correct number can be looked up here:
|
||||
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
|
||||
*/
|
||||
#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
// #define DEBOUNCE 6
|
||||
|
||||
|
@@ -1,6 +1,9 @@
|
||||
# MCU name
|
||||
MCU = STM32F072
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi_7u(
|
||||
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, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME, 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_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
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,
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi(
|
||||
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, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME, 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_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
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,
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_iso(
|
||||
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, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN,
|
||||
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_NUHS, KC_ENT,
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_iso(
|
||||
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, KC_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
|
||||
KC_GRV, 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_INS, KC_HOME, 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_DEL, KC_END, KC_PGDN,
|
||||
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_BSLS,
|
||||
|
@@ -58,16 +58,16 @@
|
||||
K00, K02, K03, K04, K05, K06, K07, K08, K09, K0B, K0C, K0D, K0E, K0F, K0G, K0H, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, K1G, K1H, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, K2G, K2H, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3D, \
|
||||
K40, K01, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4D, K4G, \
|
||||
K50, K51, K52, K56, K59, K5A, K5C, K5E, K5F, K5G, K5H \
|
||||
) \
|
||||
{ \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
|
||||
{ K00, _x_, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, _x_, K1F, K1G, K1H }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, _x_, K2F, K2G, K2H }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, K3D, _x_, _x_, _x_, _x_ }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, _x_, _x_, K4D, _x_, _x_, K4G, _x_ }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K01, _x_, K4D, _x_, _x_, K4G, _x_ }, \
|
||||
{ K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, K59, K5A, _x_, K5C, _x_, K5E, K5F, K5G, K5H } \
|
||||
}
|
||||
|
||||
@@ -80,10 +80,10 @@
|
||||
K50, K51, K52, K56, K5A, K5C, K5E, K5F, K5G, K5H \
|
||||
) \
|
||||
{ \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
|
||||
{ K00, _x_, K02, K03, K04, K05, K06, K07, K08, K09, _x_, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, _x_, K1F, K1G, K1H }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, _x_, K2F, K2G, K2H }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, K3D, _x_, _x_, _x_, _x_ }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, _x_, _x_, K4D, _x_, _x_, K4G, _x_ }, \
|
||||
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K01, _x_, K4D, _x_, _x_, K4G, _x_ }, \
|
||||
{ K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, _x_, K5C, _x_, K5E, K5F, K5G, K5H } \
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user