mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f61c99fdda | ||
|
|
cd369b7107 | ||
|
|
cc146e32dc | ||
|
|
68fad7b777 | ||
|
|
7c2bee8b88 | ||
|
|
1e1b55fbdf |
@@ -38,7 +38,7 @@ or `keymap.c`:
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
} else if (index == 2) {
|
||||
} else if (index == 1) { /* Second encoder
|
||||
if (clockwise) {
|
||||
tap_code(KC_UP);
|
||||
} else {
|
||||
|
||||
@@ -129,12 +129,12 @@ If you have trouble and want to ask for help, it is useful to generate a *Win_Ch
|
||||
|
||||
## Docker
|
||||
|
||||
If this is a bit complex for you, Docker might be the turn-key solution you need. After installing [Docker CE](https://docs.docker.com/install/#supported-platforms), run the following command from the `qmk_firmware` directory to build a keyboard/keymap:
|
||||
If this is a bit complex for you, Docker might be the turnkey solution you need. After installing [Docker CE](https://docs.docker.com/install/#supported-platforms), run the following command from the `qmk_firmware` directory to build a keyboard/keymap:
|
||||
```bash
|
||||
util/docker_build.sh keyboard:keymap
|
||||
util/docker_build.sh keyboard:keymap
|
||||
# For example: util/docker_build.sh ergodox_ez:steno
|
||||
```
|
||||
This will compile the targeted keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, the `default` keymap is used. Note that the parameter format is the same as when building with `make`.
|
||||
This will compile the desired keyboard/keymap and leave the resulting `.hex` or `.bin` file in the QMK directory for you to flash. If `:keymap` is omitted, the `default` keymap is used. Note that the parameter format is the same as when building with `make`.
|
||||
|
||||
You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
|
||||
```bash
|
||||
@@ -147,7 +147,7 @@ There is also support for building _and_ flashing the keyboard straight from Doc
|
||||
util/docker_build.sh keyboard:keymap:target
|
||||
# For example: util/docker_build.sh planck/rev6:default:dfu-util
|
||||
```
|
||||
If you're on Linux, this should work out of the box. On Windows and macOS, it requires [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/) to be running. This is tedious to set up, so it's not recommended; use QMK Toolbox instead.
|
||||
If you're on Linux, this should work out of the box. On Windows and macOS, it requires [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/) to be running. This is tedious to set up, so it's not recommended; use [QMK Toolbox](https://github.com/qmk/qmk_toolbox) instead.
|
||||
|
||||
!> Docker for Windows requires [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) to be enabled. This means that it cannot work on versions of Windows which don't have Hyper-V, such as Windows 7, Windows 8 and **Windows 10 Home**.
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#include "rev1.h"
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
||||
writePinHigh(B2);
|
||||
} else {
|
||||
writePinLow(B2);
|
||||
} else {
|
||||
writePinHigh(B2);
|
||||
}
|
||||
|
||||
led_set_user(usb_led);
|
||||
led_set_user(usb_led);
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#include "rev2.h"
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
||||
writePinHigh(B2);
|
||||
} else {
|
||||
writePinLow(B2);
|
||||
} else {
|
||||
writePinHigh(B2);
|
||||
}
|
||||
|
||||
led_set_user(usb_led);
|
||||
led_set_user(usb_led);
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
|
||||
@@ -58,6 +58,7 @@ const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90};
|
||||
#endif
|
||||
|
||||
rgblight_config_t rgblight_config;
|
||||
bool is_rgblight_initialized = false;
|
||||
|
||||
LED_TYPE led[RGBLED_NUM];
|
||||
bool rgblight_timer_enabled = false;
|
||||
@@ -123,6 +124,35 @@ void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) {
|
||||
(*led1).b = b;
|
||||
}
|
||||
|
||||
void rgblight_check_config(void) {
|
||||
/* Add some out of bound checks for RGB light config */
|
||||
|
||||
if (rgblight_config.mode < RGBLIGHT_MODE_STATIC_LIGHT) {
|
||||
rgblight_config.mode = RGBLIGHT_MODE_STATIC_LIGHT;
|
||||
}
|
||||
else if (rgblight_config.mode > RGBLIGHT_MODES) {
|
||||
rgblight_config.mode = RGBLIGHT_MODES;
|
||||
}
|
||||
|
||||
if (rgblight_config.hue < 0) {
|
||||
rgblight_config.hue = 0;
|
||||
} else if (rgblight_config.hue > 360) {
|
||||
rgblight_config.hue %= 360;
|
||||
}
|
||||
|
||||
if (rgblight_config.sat < 0) {
|
||||
rgblight_config.sat = 0;
|
||||
} else if (rgblight_config.sat > 255) {
|
||||
rgblight_config.sat = 255;
|
||||
}
|
||||
|
||||
if (rgblight_config.val < 0) {
|
||||
rgblight_config.val = 0;
|
||||
} else if (rgblight_config.val > RGBLIGHT_LIMIT_VAL) {
|
||||
rgblight_config.val = RGBLIGHT_LIMIT_VAL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint32_t eeconfig_read_rgblight(void) {
|
||||
#if defined(__AVR__) || defined(STM32_EEPROM_ENABLE) || defined(PROTOCOL_ARM_ATSAM) || defined(EEPROM_SIZE)
|
||||
@@ -131,13 +161,14 @@ uint32_t eeconfig_read_rgblight(void) {
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void eeconfig_update_rgblight(uint32_t val) {
|
||||
#if defined(__AVR__) || defined(STM32_EEPROM_ENABLE) || defined(PROTOCOL_ARM_ATSAM) || defined(EEPROM_SIZE)
|
||||
if (eeconfig_read_rgblight() != val) {
|
||||
rgblight_check_config();
|
||||
eeprom_update_dword(EECONFIG_RGBLIGHT, val);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void eeconfig_update_rgblight_default(void) {
|
||||
//dprintf("eeconfig_update_rgblight_default\n");
|
||||
rgblight_config.enable = 1;
|
||||
@@ -148,6 +179,7 @@ void eeconfig_update_rgblight_default(void) {
|
||||
rgblight_config.speed = 0;
|
||||
eeconfig_update_rgblight(rgblight_config.raw);
|
||||
}
|
||||
|
||||
void eeconfig_debug_rgblight(void) {
|
||||
dprintf("rgblight_config eprom\n");
|
||||
dprintf("rgblight_config.enable = %d\n", rgblight_config.enable);
|
||||
@@ -159,6 +191,11 @@ void eeconfig_debug_rgblight(void) {
|
||||
}
|
||||
|
||||
void rgblight_init(void) {
|
||||
/* if already initialized, don't do it again.
|
||||
If you must do it again, extern this and set to false, first.
|
||||
This is a dirty, dirty hack until proper hooks can be added for keyboard startup. */
|
||||
if (is_rgblight_initialized) { return; }
|
||||
|
||||
debug_enable = 1; // Debug ON!
|
||||
dprintf("rgblight_init called.\n");
|
||||
dprintf("rgblight_init start!\n");
|
||||
@@ -173,6 +210,8 @@ void rgblight_init(void) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_config.raw = eeconfig_read_rgblight();
|
||||
}
|
||||
rgblight_check_config();
|
||||
|
||||
eeconfig_debug_rgblight(); // display current eeprom values
|
||||
|
||||
#ifdef RGBLIGHT_USE_TIMER
|
||||
@@ -182,6 +221,9 @@ void rgblight_init(void) {
|
||||
if (rgblight_config.enable) {
|
||||
rgblight_mode_noeeprom(rgblight_config.mode);
|
||||
}
|
||||
|
||||
is_rgblight_initialized = true;
|
||||
|
||||
}
|
||||
|
||||
void rgblight_update_dword(uint32_t dword) {
|
||||
|
||||
@@ -146,6 +146,7 @@ extern const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[3] PROGMEM;
|
||||
extern const uint8_t RGBLED_SNAKE_INTERVALS[3] PROGMEM;
|
||||
extern const uint8_t RGBLED_KNIGHT_INTERVALS[3] PROGMEM;
|
||||
extern const uint16_t RGBLED_RGBTEST_INTERVALS[1] PROGMEM;
|
||||
extern bool is_rgblight_initialized;
|
||||
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
|
||||
@@ -39,9 +39,13 @@ include $(STARTUP_MK)
|
||||
# HAL-OSAL files (optional).
|
||||
include $(CHIBIOS)/os/hal/hal.mk
|
||||
|
||||
PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
|
||||
ifeq ("$(PLATFORM_NAME)","")
|
||||
PLATFORM_NAME = platform
|
||||
endif
|
||||
|
||||
PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
|
||||
ifeq ("$(wildcard $(PLATFORM_MK))","")
|
||||
PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/platform.mk
|
||||
PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
|
||||
endif
|
||||
include $(PLATFORM_MK)
|
||||
|
||||
|
||||
@@ -39,11 +39,12 @@ if [ -n "$target" ]; then
|
||||
else
|
||||
echo "Error: target requires docker-machine to work on your platform" >&2
|
||||
echo "See http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos" >&2
|
||||
echo "Consider flashing with QMK Toolbox (https://github.com/qmk/qmk_toolbox) instead" >&2
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
dir=$(pwd -W 2>/dev/null) || dir=$PWD # Use Windows path if on Windows
|
||||
|
||||
# Run container and build firmware
|
||||
docker run --rm $usb_args -v "$dir":/qmk_firmware qmkfm/qmk_firmware \
|
||||
docker run --rm -it $usb_args -v "$dir":/qmk_firmware qmkfm/qmk_firmware \
|
||||
make "$keyboard${keymap:+:$keymap}${target:+:$target}"
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
TRAVIS_BRANCH="${TRAVIS_BRANCH:master}"
|
||||
TRAVIS_PULL_REQUEST="${TRAVIS_PULL_REQUEST:false}"
|
||||
TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}"
|
||||
TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
|
||||
source util/travis_push.sh
|
||||
|
||||
set -o errexit -o nounset
|
||||
|
||||
@@ -12,17 +9,6 @@ echo "Using git hash ${rev}"
|
||||
|
||||
if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then
|
||||
|
||||
git config --global user.name "QMK Bot"
|
||||
git config --global user.email "hello@qmk.fm"
|
||||
|
||||
openssl aes-256-cbc -K $encrypted_b0ee987fd0fc_key -iv $encrypted_b0ee987fd0fc_iv -in secrets.tar.enc -out secrets.tar -d
|
||||
tar xvf secrets.tar
|
||||
|
||||
chmod 600 id_rsa_qmk_firmware
|
||||
chmod 600 id_rsa_qmk.fm
|
||||
eval `ssh-agent -s`
|
||||
ssh-add id_rsa_qmk_firmware
|
||||
|
||||
# convert to unix line-endings
|
||||
git checkout master
|
||||
git diff --diff-filter=M --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 dos2unix
|
||||
|
||||
@@ -5,13 +5,15 @@ TRAVIS_PULL_REQUEST="${TRAVIS_PULL_REQUEST:false}"
|
||||
TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}"
|
||||
TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
|
||||
|
||||
git config --global user.name "QMK Bot"
|
||||
git config --global user.email "hello@qmk.fm"
|
||||
if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then
|
||||
git config --global user.name "QMK Bot"
|
||||
git config --global user.email "hello@qmk.fm"
|
||||
|
||||
openssl aes-256-cbc -K $encrypted_b0ee987fd0fc_key -iv $encrypted_b0ee987fd0fc_iv -in secrets.tar.enc -out secrets.tar -d
|
||||
tar xvf secrets.tar
|
||||
openssl aes-256-cbc -K $encrypted_b0ee987fd0fc_key -iv $encrypted_b0ee987fd0fc_iv -in secrets.tar.enc -out secrets.tar -d
|
||||
tar xvf secrets.tar
|
||||
|
||||
chmod 600 id_rsa_qmk_firmware
|
||||
chmod 600 id_rsa_qmk.fm
|
||||
eval `ssh-agent -s`
|
||||
ssh-add id_rsa_qmk_firmware
|
||||
chmod 600 id_rsa_qmk_firmware
|
||||
chmod 600 id_rsa_qmk.fm
|
||||
eval `ssh-agent -s`
|
||||
ssh-add id_rsa_qmk_firmware
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user