blob: 78ef663257dbf647d129c51ed6ac4b7cecff7c74 [file] [log] [blame]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef RGBKBD_CONSTANTS_H_
#define RGBKBD_CONSTANTS_H_
#include <cstdint>
#include <vector>
namespace rgbkbd {
struct Color {
constexpr Color(uint8_t r, uint8_t g, uint8_t b) : r(r), g(g), b(b) {}
uint8_t r = 0;
uint8_t g = 0;
uint8_t b = 0;
bool operator==(const Color& rhs) const {
return (r == rhs.r) && (g == rhs.g) && (b == rhs.b);
}
};
struct KeyColor {
constexpr KeyColor(uint32_t key, Color color) : key(key), color(color) {}
uint32_t key;
Color color;
};
// Prism USB Vendor/Product ids.
constexpr uint16_t kPrismVendorId = 0x18d1;
constexpr uint16_t kPrismProductId = 0x5022;
// The color for highlighting Shifts when Caps Lock is on.
static constexpr Color kCapsLockHighlight = Color(/*r=*/255, /*g=*/77, /*b=*/0);
// Default background color.
static constexpr Color kWhiteBackgroundColor =
Color(/*r=*/255, /*g=*/255, /*b=*/210);
static constexpr uint32_t kLeftShiftKey = 44;
static constexpr uint32_t kRightShiftKey = 57;
// Rainbow mode constants.
static constexpr Color kRainbowRed = Color(/*r=*/0xc5, /*g=*/0x22, /*b=*/0x1f);
static constexpr Color kRainbowYellow =
Color(/*r=*/0xec, /*g=*/0x6a, /*b=*/0x08);
static constexpr Color kRainbowGreen =
Color(/*r=*/0x1b, /*g=*/0xb3, /*b=*/0x19);
static constexpr Color kRainbowLightBlue =
Color(/*r=*/0x20, /*g=*/0xb1, /*b=*/0x89);
static constexpr Color kRainbowIndigo =
Color(/*r=*/0x19, /*g=*/0x37, /*b=*/0xd2);
static constexpr Color kRainbowPurple =
Color(/*r=*/0x84, /*g=*/0x20, /*b=*/0xb4);
// If there are no RGB capabilities, all zones will be empty.
const std::vector<uint32_t> kEmptyZone = std::vector<uint32_t>();
const Color kIndividualKeyRainbowColors[] = {
kRainbowRed, kRainbowYellow, kRainbowGreen, kRainbowIndigo, kRainbowPurple,
};
const Color kFourZonesRainbowColors[] = {
kRainbowRed,
kRainbowYellow,
kRainbowGreen,
kRainbowLightBlue,
};
const KeyColor kRainbowModeIndividualKey[] = {
// Keys 42, 45, 56, 63, [65-78], [80-82], [85-88], [90-109] are not present
// in this layout.
{1, kRainbowRed}, // ~
{2, kRainbowRed}, // 1
{16, kRainbowRed}, // Tab
{17, kRainbowRed}, // Q
{30, kRainbowRed}, // Search/Launcher
{31, kRainbowRed}, // A
{kLeftShiftKey, kRainbowRed}, // Left Shift
{46, kRainbowRed}, // Z
{58, kRainbowRed}, // Ctrl
{60, kRainbowRed}, // Left Alt
{110, kRainbowRed}, // Escape
{111, kRainbowRed}, // T1: Back
{3, kRainbowYellow}, // 2
{4, kRainbowYellow}, // 3
{5, kRainbowYellow}, // 4
{18, kRainbowYellow}, // W
{19, kRainbowYellow}, // E
{20, kRainbowYellow}, // R
{32, kRainbowYellow}, // S
{33, kRainbowYellow}, // D
{34, kRainbowYellow}, // F
{47, kRainbowYellow}, // X
{48, kRainbowYellow}, // C
{49, kRainbowYellow}, // V
{112, kRainbowYellow}, // T2: Refresh
{113, kRainbowYellow}, // T3: Full Screen
{114, kRainbowYellow}, // T4: Overview
{6, kRainbowGreen}, // 5
{7, kRainbowGreen}, // 6
{8, kRainbowGreen}, // 7
{9, kRainbowGreen}, // 8
{21, kRainbowGreen}, // T
{22, kRainbowGreen}, // Y
{23, kRainbowGreen}, // U
{35, kRainbowGreen}, // G
{36, kRainbowGreen}, // H
{50, kRainbowGreen}, // B
{61, kRainbowGreen}, // Space Bar
{115, kRainbowGreen}, // T5: Snapshot
{116, kRainbowGreen}, // T6: Brightness Down
{117, kRainbowGreen}, // T7: Brightness Up
{118, kRainbowGreen}, // T8: RGB Backlight Off
{119, kRainbowGreen}, // T9: Play/Pause
{10, kRainbowIndigo}, // 9
{11, kRainbowIndigo}, // 0
{12, kRainbowIndigo}, // -
{24, kRainbowIndigo}, // I
{25, kRainbowIndigo}, // O
{26, kRainbowIndigo}, // P
{37, kRainbowIndigo}, // J
{38, kRainbowIndigo}, // K
{39, kRainbowIndigo}, // L
{51, kRainbowIndigo}, // N
{52, kRainbowIndigo}, // M
{53, kRainbowIndigo}, // ,
{120, kRainbowIndigo}, // T10: Mic Mute
{121, kRainbowIndigo}, // T1: Volume Mute
{122, kRainbowIndigo}, // T9: Play/Pause
{123, kRainbowIndigo}, // T10: Mic Mute
{13, kRainbowPurple}, // =
{15, kRainbowPurple}, // Backspace
{27, kRainbowPurple}, // [
{28, kRainbowPurple}, // ]
{29, kRainbowPurple}, // Backslash
{40, kRainbowPurple}, // ;
{41, kRainbowPurple}, // '
{43, kRainbowPurple}, // Enter
{54, kRainbowPurple}, // .
{55, kRainbowPurple}, // /
{kRightShiftKey, kRainbowPurple}, // Right Shift
{59, kRainbowPurple}, // Power
{62, kRainbowPurple}, // Right Alt
{64, kRainbowPurple}, // Right Ctrl
{79, kRainbowPurple}, // Left Arrow
{83, kRainbowPurple}, // Top Arrow
{84, kRainbowPurple}, // Bottom Arrow
{89, kRainbowPurple}, // Right Arrow
};
const KeyColor kRainbowModeFourZoneFortyLed[] = {
{1, kRainbowRed}, {2, kRainbowRed}, {3, kRainbowRed},
{4, kRainbowRed}, {5, kRainbowRed}, {6, kRainbowRed},
{7, kRainbowRed}, {8, kRainbowRed}, {9, kRainbowRed},
{10, kRainbowRed}, {11, kRainbowYellow}, {12, kRainbowYellow},
{13, kRainbowYellow}, {14, kRainbowYellow}, {15, kRainbowYellow},
{16, kRainbowYellow}, {17, kRainbowYellow}, {18, kRainbowYellow},
{19, kRainbowYellow}, {20, kRainbowYellow}, {21, kRainbowGreen},
{22, kRainbowGreen}, {23, kRainbowGreen}, {24, kRainbowGreen},
{25, kRainbowGreen}, {26, kRainbowGreen}, {27, kRainbowGreen},
{28, kRainbowGreen}, {29, kRainbowGreen}, {30, kRainbowGreen},
{31, kRainbowLightBlue}, {32, kRainbowLightBlue}, {33, kRainbowLightBlue},
{34, kRainbowLightBlue}, {35, kRainbowLightBlue}, {36, kRainbowLightBlue},
{37, kRainbowLightBlue}, {38, kRainbowLightBlue}, {39, kRainbowLightBlue},
{40, kRainbowLightBlue},
};
// TODO(michaelcheco): Update mapping once colors are finalized.
const KeyColor kRainbowModeFourZoneTwelveLed[] = {
{1, kRainbowRed}, {2, kRainbowRed}, {3, kRainbowRed},
{4, kRainbowYellow}, {5, kRainbowYellow}, {6, kRainbowYellow},
{7, kRainbowGreen}, {8, kRainbowGreen}, {9, kRainbowGreen},
{10, kRainbowLightBlue}, {11, kRainbowLightBlue}, {12, kRainbowLightBlue},
};
// TODO(michaelcheco): Update mapping once colors are finalized.
const KeyColor kRainbowModeFourZoneFourLed[] = {{1, kRainbowRed},
{2, kRainbowYellow},
{3, kRainbowGreen},
{4, kRainbowLightBlue}};
const std::vector<std::vector<uint32_t>>& GetIndividualKeyZones();
const std::vector<std::vector<uint32_t>>& GetFourtyLedZones();
const std::vector<std::vector<uint32_t>>& GetTwelveLedZones();
const std::vector<std::vector<uint32_t>>& GetFourLedZones();
} // namespace rgbkbd
#endif // RGBKBD_CONSTANTS_H_