diff options
36 files changed, 387 insertions, 361 deletions
diff --git a/deploys/zsa_moonlander_0.27.1-dirty-26.bin b/deploys/zsa_moonlander_0.27.1-dirty-26.bin index f609d95..f609d95 100755..100644 --- a/deploys/zsa_moonlander_0.27.1-dirty-26.bin +++ b/deploys/zsa_moonlander_0.27.1-dirty-26.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-27.bin b/deploys/zsa_moonlander_0.27.1-dirty-27.bin new file mode 100644 index 0000000..412305b --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-27.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-28.bin b/deploys/zsa_moonlander_0.27.1-dirty-28.bin new file mode 100644 index 0000000..cd29f37 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-28.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-29.bin b/deploys/zsa_moonlander_0.27.1-dirty-29.bin new file mode 100644 index 0000000..e0d2b9e --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-29.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-30.bin b/deploys/zsa_moonlander_0.27.1-dirty-30.bin new file mode 100644 index 0000000..555f8c4 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-30.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-31.bin b/deploys/zsa_moonlander_0.27.1-dirty-31.bin new file mode 100644 index 0000000..468fbed --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-31.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-32.bin b/deploys/zsa_moonlander_0.27.1-dirty-32.bin new file mode 100644 index 0000000..791dc33 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-32.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-33.bin b/deploys/zsa_moonlander_0.27.1-dirty-33.bin new file mode 100644 index 0000000..9356f0d --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-33.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-34.bin b/deploys/zsa_moonlander_0.27.1-dirty-34.bin new file mode 100644 index 0000000..4e0938e --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-34.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-35.bin b/deploys/zsa_moonlander_0.27.1-dirty-35.bin new file mode 100644 index 0000000..350e1a6 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-35.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-36.bin b/deploys/zsa_moonlander_0.27.1-dirty-36.bin new file mode 100644 index 0000000..0c8c07f --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-36.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-37.bin b/deploys/zsa_moonlander_0.27.1-dirty-37.bin new file mode 100644 index 0000000..5689f0b --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-37.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-38.bin b/deploys/zsa_moonlander_0.27.1-dirty-38.bin new file mode 100644 index 0000000..391e9d4 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-38.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-39.bin b/deploys/zsa_moonlander_0.27.1-dirty-39.bin new file mode 100644 index 0000000..0274df1 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-39.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-41.bin b/deploys/zsa_moonlander_0.27.1-dirty-41.bin new file mode 100644 index 0000000..989203d --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-41.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-42.bin b/deploys/zsa_moonlander_0.27.1-dirty-42.bin new file mode 100644 index 0000000..7d80ee6 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-42.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-43.bin b/deploys/zsa_moonlander_0.27.1-dirty-43.bin new file mode 100644 index 0000000..fa70d61 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-43.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-44.bin b/deploys/zsa_moonlander_0.27.1-dirty-44.bin new file mode 100644 index 0000000..3f7cddb --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-44.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-45.bin b/deploys/zsa_moonlander_0.27.1-dirty-45.bin new file mode 100644 index 0000000..cd7af1c --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-45.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-46.bin b/deploys/zsa_moonlander_0.27.1-dirty-46.bin new file mode 100644 index 0000000..eb11893 --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-46.bin Binary files differdiff --git a/deploys/zsa_moonlander_0.27.1-dirty-47.bin b/deploys/zsa_moonlander_0.27.1-dirty-47.bin new file mode 100644 index 0000000..2c5841d --- /dev/null +++ b/deploys/zsa_moonlander_0.27.1-dirty-47.bin Binary files differdiff --git a/rust/format/src/main.rs b/rust/format/src/main.rs index 3554087..0ec7d3a 100644 --- a/rust/format/src/main.rs +++ b/rust/format/src/main.rs @@ -3,47 +3,147 @@ use std::{env::args, fs::File, io::Read}; mod format_layer; fn main() { - let mut keymap_h = String::new(); + let mode = args().nth(1).expect("Exists"); - File::open(args().skip(1).last().expect("Exists")) - .expect("Should work") - .read_to_string(&mut keymap_h) - .expect("Failed to read keymap_h"); + let mut file_to_format = String::new(); + { + File::open(args().skip(1).last().expect("Exists")) + .expect("Should work") + .read_to_string(&mut file_to_format) + .expect("Failed to read file to format"); - let mut c_column_max = [0; 14]; + let mut lines: Vec<_> = file_to_format.lines().collect(); + if lines[0] == "// clang-format off" { + lines.remove(0); + } + if lines.last().expect("Exists") == &"// clang-format on" { + lines.remove(lines.len() - 1); + } - let out = calculate(&mut c_column_max, keymap_h); - let output = calculate(&mut c_column_max, out.join("\n")); + file_to_format = lines.join("\n"); + } - print!("{}", output.join("\n")); + let output = match mode.as_str() { + "keymap.h" => { + let mut c_column_max = [0; 14]; + + // The first run calculates the correct c_column_max values, and the second one + // actually formats. + let out = format_keymap_h(&mut c_column_max, file_to_format); + format_keymap_h(&mut c_column_max, out) + } + "ledmap.h" => { + let mut c_column_max = [0; 14]; + + // We also need two passes here. + let out = format_ledmap_h(&mut c_column_max, file_to_format); + format_ledmap_h(&mut c_column_max, out) + } + other => unreachable!("Invalid mode: '{other}'"), + }; + print!("// clang-format off\n{}// clang-format on\n", output); } -fn calculate(c_column_max: &mut [usize; 14], keymap_h: String) -> Vec<String> { - let mut output: Vec<String> = vec![]; +fn format_ledmap_h(c_column_max: &mut [usize; 14], ledmap_h: String) -> String { + let mut output: String = String::new(); + let mut c_layer: Vec<String> = vec![]; + + ledmap_h + .lines() + .filter(|line| !line.trim().is_empty()) + .for_each(|line| { + let line = line.trim(); + let first_char = line.chars().next().unwrap(); + let second_char = line.chars().nth(1).unwrap(); + + if line.is_empty() { + return; + } + + match (first_char, second_char) { + ('/', '/') => { + // Comment, don't touch. + output.push_str(line); + output.push('\n'); + } + ('c', 'o') | ('}', ';') => { + // Start or end of the ledmap def, leave it alone + output.push_str(line); + output.push('\n'); + } + ('[', '0'..='9') | ('/', '*') => { + // Start of a new layer + assert!( + c_layer.is_empty(), + "A new layer cannot start, when the current layer is not empty." + ); + output.push_str(&format!(" {}", line)); + output.push('\n'); + } + ('}', ',') => { + // End of a layer + output.push_str(&format_layer::format_layer( + c_layer.join("\n"), + c_column_max, + )); + c_layer.clear(); + + output.push_str(&format!(" {}", line)); + output.push('\n'); + } + _ => { + // We are in a layer + c_layer.push(line.to_owned()); + } + } + }); + output +} + +fn format_keymap_h(c_column_max: &mut [usize; 14], keymap_h: String) -> String { + let mut output: String = String::new(); let mut c_layer: Vec<String> = vec![]; keymap_h .lines() .filter(|line| !line.trim().is_empty()) .for_each(|line| { - let first_char = line.trim().chars().take(1).last().unwrap(); let line = line.trim(); + let first_char = line.chars().take(1).last().unwrap(); + + if line.is_empty() { + return; + } match first_char { + '/' => { + // Comment, don't touch + output.push_str(line); + output.push('\n'); + } 'c' | '}' => { // Start or end of the kemap def, leave it alone - output.push(line.to_owned()); + output.push_str(line); + output.push('\n'); } '[' => { // Start of a new layer - assert!(c_layer.is_empty(), "No new layer, without empty"); - output.push(format!(" {}", line)); + assert!( + c_layer.is_empty(), + "A new layer cannot start, when the current layer is not empty." + ); + output.push_str(&format!(" {}", line)); + output.push('\n'); } ')' => { // End of a layer - output.push(format_layer::format_layer(c_layer.join("\n"), c_column_max)); + output.push_str(&format_layer::format_layer( + c_layer.join("\n"), + c_column_max, + )); c_layer.clear(); - output.push(format!(" {}", line)); + output.push_str(&format!(" {}", line)); + output.push('\n'); } _ => { // We are in a layer diff --git a/rust/qmk-hid-com/src_c/package.nix b/rust/qmk-hid-com/src_c/package.nix index fee8693..eb85ac0 100644 --- a/rust/qmk-hid-com/src_c/package.nix +++ b/rust/qmk-hid-com/src_c/package.nix @@ -26,8 +26,6 @@ stdenv.mkDerivation { || (lib.strings.hasSuffix ".build" (builtins.baseNameOf name)); }; - env = { - }; mesonFlags = lib.mapAttrsToList lib.mesonOption { debug = "false"; optimization = "3"; @@ -66,4 +64,8 @@ stdenv.mkDerivation { wayland hidapi ]; + + meta = { + mainProgram = "qmk-unicode-type"; + }; } diff --git a/build.sh b/scripts/build.sh index ea323cb..b03e7e0 100755 --- a/build.sh +++ b/scripts/build.sh @@ -5,6 +5,6 @@ exit 1 } -nix build .#default --log-format multiline-with-logs +nix build .#default --log-format multiline-with-logs "$@" # vim: ft=sh diff --git a/scripts/deployed.sh b/scripts/deploy.sh index e5ca038..49b202d 100755 --- a/scripts/deployed.sh +++ b/scripts/deploy.sh @@ -1,5 +1,8 @@ -#!/usr/bin/env sh +#! /usr/bin/env sh +wally-cli "$1" + +root="$(git rev-parse --show-toplevel)" version="$(nix eval --file ./version.nix)" cat >./version.nix <<EOF @@ -7,6 +10,6 @@ cat >./version.nix <<EOF $((version + 1)) EOF -cp ./result/binary_output/zsa_moonlander_* deploys/ +cp --no-preserve=mode "$1" "$root/deploys/" # vim: ft=sh diff --git a/scripts/format.sh b/scripts/format.sh index d9db529..c93fb3b 100755 --- a/scripts/format.sh +++ b/scripts/format.sh @@ -4,11 +4,25 @@ root="$(git rev-parse --show-toplevel)" final="$(mktemp)" -format "$root/src/keymaps/soispha/layout/keymap.h" > "$final" +mode="$1" +target="/dev/null" -git add "$root/src/keymaps/soispha/layout/keymap.h" +if [ "$mode" = "keymap.h" ]; then + target="$root/src/keymaps/soispha/layout/keymap.h" +elif [ "$mode" = "ledmap.h" ]; then + target="$root/src/keymaps/soispha/led/ledlayout.h" +elif [ "$mode" = "translation.h" ]; then + target="$root/src/keymaps/soispha/led/translation.h" + mode="ledmap.h" +else + echo "$mode" is invalid + exit 2 +fi -cat "$final" > "$root/src/keymaps/soispha/layout/keymap.h" +format "$mode" "$target" >"$final" +git add "$target" + +cat "$final" >"$target" rm "$final" # vim: ft=sh diff --git a/src/keymaps/soispha/hid/hid.h b/src/keymaps/soispha/hid/hid.h index 6ee0eda..0f80a0c 100644 --- a/src/keymaps/soispha/hid/hid.h +++ b/src/keymaps/soispha/hid/hid.h @@ -2,8 +2,7 @@ #include <stdint.h> -#define UK(c) (UK_UNICODE | (c)) - +#define UK(c) (UK_UNICODE | ((uint32_t) c)) void hid_send(uint32_t hex); diff --git a/src/keymaps/soispha/layout/keymap.h b/src/keymaps/soispha/layout/keymap.h index d4f23d0..0225145 100644 --- a/src/keymaps/soispha/layout/keymap.h +++ b/src/keymaps/soispha/layout/keymap.h @@ -1,92 +1,76 @@ +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_moonlander( // Dvorak - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, QK_BOOT, QK_BOOT, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, VERSION_NUMBER, - TG(5), KC_QUOTE, KC_COMMA, LT(9,KC_DOT), KC_P, KC_Y, KK_TP, KK_TP, KC_F, KC_G, LT(9,KC_C), KC_R, KC_L, TG(5), - MO(7), KC_A, KC_O, KC_E, KC_U, KC_I, MO(8), MO(8), KC_D, KC_H, KC_T, KC_N, KC_S, MO(7), - KC_LEFT_SHIFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RIGHT_SHIFT, - KK_TP, KK_TP, KK_TP, KC_LEFT, KC_RIGHT, HYPR(KC_T), HYPR(KC_K), KC_UP, KC_DOWN, KK_TP, KK_TP, KC_RIGHT_SHIFT, - MO(3), MO(4), MO(6), KK_TP, MO(1), MO(2) - + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, QK_BOOT, QK_BOOT, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, VERSION_NUMBER, + TG(4), KC_QUOTE, LT(8,KC_COMMA), LT(7,KC_DOT), KC_P, KC_Y, KK_TP, KK_TP, KC_F, KC_G, LT(7,KC_C), LT(8,KC_R), KC_L, TG(4), + MO(5), KC_A, KC_O, KC_E, KC_U, KC_I, MO(6), MO(6), KC_D, KC_H, KC_T, KC_N, KC_S, MO(5), + KC_LEFT_SHIFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RIGHT_SHIFT, + KK_TP, KK_TP, KK_TP, KC_LEFT, KC_RIGHT, LGUI(KC_L), HYPR(KC_K), KC_UP, KC_DOWN, KK_TP, KK_TP, KC_RIGHT_SHIFT, + MO(2), MO(3), KK_TP, KK_TP, KK_TP, MO(1) ), - [1] = LAYOUT_moonlander( // River - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, RV_SP_NHK, RV_SP_NRG_BR, RV_SP_KPSS, RV_SP_SGNL, KK_TP, KK_TP, - KK_TP, RV_SC_SHOT, RV_PAUSE, RV_TG_MSC, RV_RUN, KK_TP, KK_TP, KK_TP, RV_TG_FLOAT, RV_TG_FL_SC, RV_ZOOM_VW, KK_TP, RV_EXIT, KK_TP, - KK_TP, KK_TP, KK_TP, RV_MV_VW_PRVS_TG, RV_MV_PRVS_TG, RV_MV_OT_NXT, KK_TP, KK_TP, RV_VW_CLSE, RV_VW_NXT, RV_SWP_NXT, RV_SWP_PRVS, RV_VW_PRVS, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, RV_SEND_OUT, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [1] = LAYOUT_moonlander( // Modifier + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, OSM(MOD_RSFT), OSM(MOD_RGUI), OSM(MOD_RCTL), OSM(MOD_RALT), KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, OSM(MOD_LSFT), OSM(MOD_LGUI), OSM(MOD_LCTL), OSM(MOD_LALT), KK_TP, KK_TP, KK_TP, KC_TAB, KC_SPACE, KC_BSPC, KC_ENTER, KC_ESCAPE, KK_TP, + KK_TP, KC_LSFT, KC_LGUI, KC_LCTL, KC_LALT, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [2] = LAYOUT_moonlander( // Modifier - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, OSM(MOD_RSFT), OSM(MOD_RGUI), OSM(MOD_RCTL), OSM(MOD_RALT), KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, OSM(MOD_LSFT), OSM(MOD_LGUI), OSM(MOD_LCTL), OSM(MOD_LALT), KK_TP, KK_TP, KK_TP, KC_TAB, KC_SPACE, KC_BSPC, KC_ENTER, KC_ESCAPE, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [2] = LAYOUT_moonlander( // Symbols + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KC_GRAVE, KC_EXLM, KC_DLR, KC_PERC, CW_TOGG, KK_TP, KK_TP, KC_AT, KC_HASH, KC_AMPR, KC_ASTR, KC_QUES, KK_TP, + KK_TP, KC_LABK, KC_LBRC, KC_LPRN, KC_LCBR, TD(DANCE_0), KK_TP, KK_TP, KC_TILD, TD(DANCE_1), TD(DANCE_2), TD(DANCE_3), KC_PLUS, KK_TP, + KK_TP, KC_RABK, KC_RBRC, KC_RPRN, KC_RCBR, KK_TP, KC_CIRC, KC_BSLS, KC_COMMA, TD(DANCE_4), KC_PIPE, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [3] = LAYOUT_moonlander( // Symbols - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KC_GRAVE, KC_EXLM, KC_DLR, KC_PERC, CW_TOGG, KK_TP, KK_TP, KC_AT, KC_HASH, KC_AMPR, KC_ASTR, KC_QUES, KK_TP, - KK_TP, KC_LABK, KC_LBRC, KC_LPRN, KC_LCBR, TD(DANCE_0), KK_TP, KK_TP, KC_TILD, TD(DANCE_1), TD(DANCE_2), TD(DANCE_3), KC_PLUS, KK_TP, - KK_TP, KC_RABK, KC_RBRC, KC_RPRN, KC_RCBR, KK_TP, KC_CIRC, KC_BSLS, KC_COMMA, TD(DANCE_4), KC_PIPE, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [3] = LAYOUT_moonlander( // Numbers + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KK_TP, KK_TP, KK_TP, KC_1, KC_2, KC_3, KK_TP, KK_TP, + KK_TP, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KK_TP, KK_TP, KC_0, KC_4, KC_5, KC_6, KK_TP, KK_TP, + KK_TP, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KK_TP, KC_7, KC_8, KC_9, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [4] = LAYOUT_moonlander( // Numbers - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KK_TP, KK_TP, KK_TP, KC_1, KC_2, KC_3, KK_TP, KK_TP, - KK_TP, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KK_TP, KK_TP, KC_0, KC_4, KC_5, KC_6, KK_TP, KK_TP, - KK_TP, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KK_TP, KC_7, KC_8, KC_9, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [4] = LAYOUT_moonlander( // Media + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, QK_BOOT, + KK_TP, KK_TP, KC_MS_BTN2, KC_MS_BTN3, KC_MS_BTN1, KC_KB_VOLUME_UP, KK_TP, KK_TP, KC_KB_VOLUME_UP, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, KK_TP, KK_TP, + KK_TP, KC_MS_WH_UP, QK_MOUSE_WHEEL_UP, QK_MOUSE_WHEEL_DOWN, KC_MS_WH_LEFT, KC_KB_MUTE, KK_TP, KK_TP, KC_KB_MUTE, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KK_TP, + KK_TP, LCTL(LSFT(KC_TAB)), LALT(LCTL(KC_R)), LCTL(KC_T), LCTL(KC_TAB), KC_KB_VOLUME_DOWN, KC_KB_VOLUME_DOWN, KC_WWW_BACK, KK_TP, KC_WWW_HOME, KC_WWW_FORWARD, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [5] = LAYOUT_moonlander( // Media - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, QK_BOOT, - KK_TP, KK_TP, KC_MS_BTN2, KC_MS_BTN3, KC_MS_BTN1, KK_TP, KK_TP, KK_TP, KK_TP, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, KK_TP, KK_TP, - KK_TP, KC_MS_WH_UP, QK_MOUSE_WHEEL_UP, QK_MOUSE_WHEEL_DOWN, KC_MS_WH_LEFT, KK_TP, KK_TP, KK_TP, KK_TP, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KK_TP, - KK_TP, LCTL(LSFT(KC_TAB)), LALT(LCTL(KC_R)), LCTL(KC_T), LCTL(KC_TAB), KK_TP, KK_TP, KC_WWW_BACK, KK_TP, KC_WWW_HOME, KC_WWW_FORWARD, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [5] = LAYOUT_moonlander( // German characters + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, UK(U'ä'), UK(U'ö'), KK_TP, UK(U'ü'), KK_TP, KK_TP, KK_TP, KK_TP, UK(U'Ü'), KK_TP, UK(U'Ö'), UK(U'Ä'), KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [6] = LAYOUT_moonlander( // River Tag Movement - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, MEH(KC_3), MEH(KC_2), MEH(KC_1), KK_TP, KK_TP, KK_TP, KK_TP, HYPR(KC_1), HYPR(KC_2), HYPR(KC_3), KK_TP, KK_TP, - KK_TP, KK_TP, MEH(KC_6), MEH(KC_5), MEH(KC_4), MEH(KC_0), KK_TP, KK_TP, HYPR(KC_0), HYPR(KC_4), HYPR(KC_5), HYPR(KC_6), KK_TP, KK_TP, - KK_TP, KK_TP, MEH(KC_9), MEH(KC_8), MEH(KC_7), KK_TP, KK_TP, HYPR(KC_7), HYPR(KC_8), HYPR(KC_9), KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [6] = LAYOUT_moonlander( // Swedish characters + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, UK(U'å'), KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, UK(U'Å'), KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [7] = LAYOUT_moonlander( // German characters - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, UK(0xe4), UK(0xf6), KK_TP, UK(0xfc), KK_TP, KK_TP, KK_TP, KK_TP, UK(0xdc), KK_TP, UK(0xd6), UK(0xc4), KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [7] = LAYOUT_moonlander( // Special characters + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, UK(U'“'), KK_TP, KK_TP, UK(U'”'), KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), - [8] = LAYOUT_moonlander( // Swedish characters - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, UK(0xe5), KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, UK(0xc5), KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - - ), - [9] = LAYOUT_moonlander( // Special characters - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, UK(0x201C), KK_TP, KK_TP, UK(0x201D), KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, - KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP - + [8] = LAYOUT_moonlander( // Slovenian characters + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, UK(U'š'), UK(U'č'), KK_TP, UK(U'ž'), KK_TP, KK_TP, KK_TP, KK_TP, UK(U'Ž'), KK_TP, UK(U'Č'), UK(U'Š'), KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, + KK_TP, KK_TP, KK_TP, KK_TP, KK_TP, KK_TP ), }; +// clang-format on diff --git a/src/keymaps/soispha/led/ledlayout.h b/src/keymaps/soispha/led/ledlayout.h new file mode 100644 index 0000000..508c6c6 --- /dev/null +++ b/src/keymaps/soispha/led/ledlayout.h @@ -0,0 +1,85 @@ +// clang-format off +const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = { + /* Dvorak */ + [0] = { + RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, RED, + GREEN, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, ORANGE, GREEN, + GREEN, GREEN, GREEN, GREEN, YELLOW, GREEN, ORANGE, ORANGE, GREEN, YELLOW, GREEN, GREEN, GREEN, GREEN, + BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, + PURPLE, PURPLE, PURPLE, PURPLE, PURPLE, OFF, OFF, PURPLE, PURPLE, PURPLE, PURPLE, BLUE, + ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED + }, + /* Modifier */ + [1] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, BRAIN_FREEZE + }, + /* Symbols */ + [2] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + BRAIN_FREEZE, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED + }, + /* Numbers */ + [3] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + ASSASSINS_RED, BRAIN_FREEZE, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED + }, + /* Media */ + [4] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + BRAIN_FREEZE, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, BRAIN_FREEZE, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, ASSASSINS_RED, ASSASSINS_RED, OFF, OFF, OFF, OFF, OFF, + ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED, ASSASSINS_RED + }, + /* German characters */ + [5] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + BRAIN_FREEZE, PURPLE, PURPLE, OFF, PURPLE, OFF, OFF, OFF, OFF, PURPLE, OFF, PURPLE, PURPLE, BRAIN_FREEZE, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF + }, + /* Swedish characters */ + [6] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, PURPLE, OFF, OFF, OFF, OFF, BRAIN_FREEZE, BRAIN_FREEZE, OFF, OFF, OFF, OFF, PURPLE, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF + }, + /* Special characters */ + [7] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, BRAIN_FREEZE, OFF, OFF, OFF, OFF, OFF, OFF, BRAIN_FREEZE, OFF, OFF, OFF, + OFF, PURPLE, OFF, OFF, PURPLE, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF + }, + /* Slovenian characters */ + [8] = { + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, BRAIN_FREEZE, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, BRAIN_FREEZE, OFF, OFF, + OFF, PURPLE, PURPLE, OFF, PURPLE, OFF, OFF, OFF, OFF, PURPLE, OFF, PURPLE, PURPLE, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF, + OFF, OFF, OFF, OFF, OFF, OFF + }, +}; +// clang-format on diff --git a/src/keymaps/soispha/led/ledmap.h b/src/keymaps/soispha/led/ledmap.h new file mode 100644 index 0000000..c2d1847 --- /dev/null +++ b/src/keymaps/soispha/led/ledmap.h @@ -0,0 +1,16 @@ +#pragma once + +#define hsv(H, S, V) {H, S, V} + +#define OFF hsv(0, 0, 0) // 0x000000 +#define RED hsv(0, 255, 255) // 0xFF0000 +#define ORANGE hsv(27, 255, 255) // 0xFFA500 +#define GREEN hsv(85,255,128) // 0x008000 +#define YELLOW hsv(42,255,255) // 0xFFFF00 +#define BLUE hsv(170,255,255) // 0x0000FF +#define PURPLE hsv(212,255,128) // 0x800080 +#define ASSASSINS_RED hsv(0,245,245) // 0xF50909 +#define BRAIN_FREEZE hsv(130,255,255) // 0x00F0FF + +#include "ledlayout.h" +#include "translation.h" diff --git a/src/keymaps/soispha/led/rgb.c b/src/keymaps/soispha/led/rgb.c new file mode 100644 index 0000000..13ab60f --- /dev/null +++ b/src/keymaps/soispha/led/rgb.c @@ -0,0 +1,65 @@ +#include QMK_KEYBOARD_H + +#include "ledmap.h" +#define MOON_LED_LEVEL LED_LEVEL + +extern rgb_config_t rgb_matrix_config; + +void keyboard_post_init_user(void) { + rgb_matrix_enable(); +} + +void set_layer_color(int layer) { + int n = sizeof(ledmap[layer]) / sizeof(*ledmap[layer]); + + for (int i = 0; i < n; i++) { + /* The rgb index is counted from top to bottom, e.g.: + * 0 4 + * 1 5 + * 2 6 + * 3 7 .. + * + * But we have an index (`i`) which counts from left to right, e.g.: + * 0 1 2 3 + * 4 5 6 7 + * .. + * + * Thus we use an translation table for the conversions (`i` -> `rgb_i`). + */ + int rgb_i = translation[i]; + + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + + if (!hsv.h && !hsv.s && !hsv.v) { + rgb_matrix_set_color(rgb_i, 0, 0, 0); + } else { + RGB rgb = hsv_to_rgb(hsv); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + rgb_matrix_set_color(rgb_i, f * rgb.r, f * rgb.g, f * rgb.b); + } + } +} + +/* Callback. Is called once every time a new “frame” is rendered */ +bool rgb_matrix_indicators_user(void) { + if (keyboard_config.disable_layer_led) { + return false; + } + + int layer = biton32(layer_state); + int defined_layer = sizeof(ledmap) / sizeof(*ledmap); + + if (layer <= (defined_layer - 1)) { + set_layer_color(layer); + } else { + if (rgb_matrix_get_flags() == LED_FLAG_NONE) { + rgb_matrix_set_color_all(0, 0, 0); + } + } + + return true; +} diff --git a/src/keymaps/soispha/led/translation.h b/src/keymaps/soispha/led/translation.h new file mode 100644 index 0000000..25adb88 --- /dev/null +++ b/src/keymaps/soispha/led/translation.h @@ -0,0 +1,10 @@ +// clang-format off +const uint8_t translation[RGB_MATRIX_LED_COUNT] = { + 0, 5, 10, 15, 20, 25, 29, 65, 61, 56, 51, 46, 41, 36, + 1, 6, 11, 16, 21, 26, 30, 66, 62, 57, 52, 47, 42, 37, + 2, 7, 12, 17, 22, 27, 31, 67, 63, 58, 53, 48, 43, 38, + 3, 8, 13, 18, 23, 28, 64, 59, 54, 49, 44, 39, + 4, 9, 14, 19, 24, 35, 71, 60, 55, 50, 45, 40, + 32, 33, 34, 70, 69, 68 +}; +// clang-format on diff --git a/src/keymaps/soispha/macros.h b/src/keymaps/soispha/macros.h index f7ff453..bbc919b 100644 --- a/src/keymaps/soispha/macros.h +++ b/src/keymaps/soispha/macros.h @@ -18,28 +18,3 @@ enum tap_dance_codes { DANCE_3, DANCE_4, }; - -// river_mappings { -#define RV_SC_SHOT HYPR(KC_L) -#define RV_PAUSE HYPR(KC_M) -#define RV_TG_MSC HYPR(KC_N) -#define RV_RUN HYPR(KC_O) -#define RV_MV_VW_PRVS_TG HYPR(KC_W) -#define RV_MV_PRVS_TG HYPR(KC_V) -#define RV_MV_OT_NXT HYPR(KC_U) - -#define RV_SP_NHK HYPR(KC_R) -#define RV_SP_NRG_BR HYPR(KC_P) -#define RV_SP_KPSS HYPR(KC_Q) -#define RV_SP_SGNL HYPR(KC_S) - -#define RV_TG_FLOAT HYPR(KC_I) -#define RV_TG_FL_SC HYPR(KC_H) -#define RV_ZOOM_VW HYPR(KC_G) -#define RV_EXIT HYPR(KC_A) -#define RV_VW_CLSE HYPR(KC_B) -#define RV_VW_NXT HYPR(KC_D) -#define RV_SWP_NXT HYPR(KC_F) -#define RV_SWP_PRVS HYPR(KC_E) -#define RV_VW_PRVS HYPR(KC_C) -#define RV_SEND_OUT HYPR(KC_J) diff --git a/src/keymaps/soispha/rgb.c b/src/keymaps/soispha/rgb.c deleted file mode 100644 index 183296e..0000000 --- a/src/keymaps/soispha/rgb.c +++ /dev/null @@ -1,227 +0,0 @@ -#include QMK_KEYBOARD_H -#define MOON_LED_LEVEL LED_LEVEL - -extern rgb_config_t rgb_matrix_config; - -void keyboard_post_init_user(void) { rgb_matrix_enable(); } - -// clang-format off -const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = { - [0] = {{0, 255, 255}, {86, 255, 128}, {86, 255, 128}, {172, 255, 255}, - {215, 255, 128}, {0, 255, 255}, {27, 255, 255}, {86, 255, 128}, - {172, 255, 255}, {215, 255, 128}, {0, 255, 255}, {27, 255, 255}, - {86, 255, 128}, {172, 255, 255}, {215, 255, 128}, {0, 255, 255}, - {27, 255, 255}, {86, 255, 128}, {172, 255, 255}, {215, 255, 128}, - {0, 255, 255}, {27, 255, 255}, {43, 255, 255}, {172, 255, 255}, - {215, 255, 128}, {0, 255, 255}, {27, 255, 255}, {86, 255, 128}, - {172, 255, 255}, {0, 255, 255}, {27, 255, 255}, {27, 255, 255}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}, - {0, 255, 255}, {86, 255, 128}, {86, 255, 128}, {172, 255, 255}, - {215, 255, 128}, {0, 255, 255}, {27, 255, 255}, {86, 255, 128}, - {172, 255, 255}, {215, 255, 128}, {0, 255, 255}, {27, 255, 255}, - {86, 255, 128}, {172, 255, 255}, {215, 255, 128}, {0, 255, 255}, - {27, 255, 255}, {86, 255, 128}, {172, 255, 255}, {215, 255, 128}, - {0, 255, 255}, {27, 255, 255}, {43, 255, 255}, {172, 255, 255}, - {215, 255, 128}, {0, 255, 255}, {27, 255, 255}, {86, 255, 128}, - {172, 255, 255}, {0, 255, 255}, {27, 255, 255}, {27, 255, 255}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}}, - - [1] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {131, 255, 255}, {0, 245, 245}, {0, 0, 0}}, - - [2] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {131, 255, 255}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}}, - - [3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {131, 255, 255}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}}, - - [4] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {131, 255, 255}, {0, 245, 245}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}}, - - [5] = {{0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, - {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 245, 245}}, - - [6] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {131, 255, 255}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 245, 245}, {0, 245, 245}, {0, 245, 245}, {0, 0, 0}}, - - [7] = {{0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}}, - - [8] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {215, 255, 128}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, - - [9] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {131, 255, 255}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, - {0, 0, 0}, {0, 0, 0}}, -}; -// clang-format on - -void set_layer_color(int layer) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - HSV hsv = { - .h = pgm_read_byte(&ledmap[layer][i][0]), - .s = pgm_read_byte(&ledmap[layer][i][1]), - .v = pgm_read_byte(&ledmap[layer][i][2]), - }; - if (!hsv.h && !hsv.s && !hsv.v) { - rgb_matrix_set_color(i, 0, 0, 0); - } else { - RGB rgb = hsv_to_rgb(hsv); - float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; - rgb_matrix_set_color(i, f * rgb.r, f * rgb.g, f * rgb.b); - } - } -} - -bool rgb_matrix_indicators_user(void) { - if (keyboard_config.disable_layer_led) { - return false; - } - - int layer = biton32(layer_state); - if (layer <= 9) { - set_layer_color(layer); - } else { - if (rgb_matrix_get_flags() == LED_FLAG_NONE) { - rgb_matrix_set_color_all(0, 0, 0); - } - } - return true; -} diff --git a/src/keymaps/soispha/rules.mk b/src/keymaps/soispha/rules.mk index 27610b4..ddf9ccc 100644 --- a/src/keymaps/soispha/rules.mk +++ b/src/keymaps/soispha/rules.mk @@ -30,4 +30,4 @@ RAW_ENABLE = yes # LTO_ENABLE = yes -SRC += rgb.c hid/hid.c +SRC += led/rgb.c hid/hid.c diff --git a/version.nix b/version.nix index 2e9c141..9975c17 100644 --- a/version.nix +++ b/version.nix @@ -1,2 +1,2 @@ # NOTE: Change this _EVERY_ time you actually use a new keymap. <2024-12-29> -27 +48 |