Refactoring wilba.tech PCBs, updating Rama Works U80-A (#6272)

* Added WT65-B, WT75-B, minor fixes

* Update keyboards/wilba_tech/wt65_b/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/wilba_tech/wt65_b/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* Update keyboards/wilba_tech/wt75_b/config.h

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Change DEBOUNCING_DELAY to DEBOUNCE

* Change DEBOUNCING_DELAY to DEBOUNCE

* Move Zeal60/Zeal65 files to keyboards/wilba_tech

* Change DEBOUNCING_DELAY to DEBOUNCE

* Refactoring zeal60 code to wilba_tech

* Moved Rama Works PCBs to wilba_tech

* Rename Rama Works files

* Cleanup info.json

* Cleanup readme.md

* Cleanup USB device strings

* U80-A RGB matrix, IS31FL3731 driver changes

* Fixed #include from keyboards/zeal60
This commit is contained in:
Wilba 2019-07-21 21:46:22 +10:00 committed by Danny
parent d686c0ea43
commit bffbb4b42d
118 changed files with 655 additions and 606 deletions

View File

@ -71,10 +71,10 @@ uint8_t g_twi_transfer_buffer[20];
// buffers and the transfers in IS31FL3731_write_pwm_buffer() but it's // buffers and the transfers in IS31FL3731_write_pwm_buffer() but it's
// probably not worth the extra complexity. // probably not worth the extra complexity.
uint8_t g_pwm_buffer[DRIVER_COUNT][144]; uint8_t g_pwm_buffer[DRIVER_COUNT][144];
bool g_pwm_buffer_update_required = false; bool g_pwm_buffer_update_required[DRIVER_COUNT] = { false };
uint8_t g_led_control_registers[DRIVER_COUNT][18] = { { 0 }, { 0 } }; uint8_t g_led_control_registers[DRIVER_COUNT][18] = { { 0 }, { 0 } };
bool g_led_control_registers_update_required = false; bool g_led_control_registers_update_required[DRIVER_COUNT] = { false };
// This is the bit pattern in the LED control registers // This is the bit pattern in the LED control registers
// (for matrix A, add one to register for matrix B) // (for matrix A, add one to register for matrix B)
@ -204,7 +204,7 @@ void IS31FL3731_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
g_pwm_buffer[led.driver][led.r - 0x24] = red; g_pwm_buffer[led.driver][led.r - 0x24] = red;
g_pwm_buffer[led.driver][led.g - 0x24] = green; g_pwm_buffer[led.driver][led.g - 0x24] = green;
g_pwm_buffer[led.driver][led.b - 0x24] = blue; g_pwm_buffer[led.driver][led.b - 0x24] = blue;
g_pwm_buffer_update_required = true; g_pwm_buffer_update_required[led.driver] = true;
} }
} }
@ -220,12 +220,12 @@ void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, b
{ {
is31_led led = g_is31_leds[index]; is31_led led = g_is31_leds[index];
uint8_t control_register_r = (led.r - 0x24) / 8; uint8_t control_register_r = (led.r - 0x24) / 8;
uint8_t control_register_g = (led.g - 0x24) / 8; uint8_t control_register_g = (led.g - 0x24) / 8;
uint8_t control_register_b = (led.b - 0x24) / 8; uint8_t control_register_b = (led.b - 0x24) / 8;
uint8_t bit_r = (led.r - 0x24) % 8; uint8_t bit_r = (led.r - 0x24) % 8;
uint8_t bit_g = (led.g - 0x24) % 8; uint8_t bit_g = (led.g - 0x24) % 8;
uint8_t bit_b = (led.b - 0x24) % 8; uint8_t bit_b = (led.b - 0x24) % 8;
if ( red ) { if ( red ) {
g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r); g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r);
@ -243,28 +243,26 @@ void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, b
g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b);
} }
g_led_control_registers_update_required = true; g_led_control_registers_update_required[led.driver] = true;
} }
void IS31FL3731_update_pwm_buffers( uint8_t addr1, uint8_t addr2 ) void IS31FL3731_update_pwm_buffers( uint8_t addr, uint8_t index )
{ {
if ( g_pwm_buffer_update_required ) if ( g_pwm_buffer_update_required[index] )
{ {
IS31FL3731_write_pwm_buffer( addr1, g_pwm_buffer[0] ); IS31FL3731_write_pwm_buffer( addr, g_pwm_buffer[index] );
IS31FL3731_write_pwm_buffer( addr2, g_pwm_buffer[1] );
} }
g_pwm_buffer_update_required = false; g_pwm_buffer_update_required[index] = false;
} }
void IS31FL3731_update_led_control_registers( uint8_t addr1, uint8_t addr2 ) void IS31FL3731_update_led_control_registers( uint8_t addr, uint8_t index )
{ {
if ( g_led_control_registers_update_required ) if ( g_led_control_registers_update_required[index] )
{ {
for ( int i=0; i<18; i++ ) for ( int i=0; i<18; i++ )
{ {
IS31FL3731_write_register(addr1, i, g_led_control_registers[0][i] ); IS31FL3731_write_register( addr, i, g_led_control_registers[index][i] );
IS31FL3731_write_register(addr2, i, g_led_control_registers[1][i] );
} }
} }
} }

View File

@ -44,8 +44,8 @@ void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, b
// (eg. from a timer interrupt). // (eg. from a timer interrupt).
// Call this while idle (in between matrix scans). // Call this while idle (in between matrix scans).
// If the buffer is dirty, it will update the driver with the buffer. // If the buffer is dirty, it will update the driver with the buffer.
void IS31FL3731_update_pwm_buffers( uint8_t addr1, uint8_t addr2 ); void IS31FL3731_update_pwm_buffers( uint8_t addr, uint8_t index );
void IS31FL3731_update_led_control_registers( uint8_t addr1, uint8_t addr2 ); void IS31FL3731_update_led_control_registers( uint8_t addr, uint8_t index );
#define C1_1 0x24 #define C1_1 0x24
#define C1_2 0x25 #define C1_2 0x25

View File

@ -17,8 +17,8 @@
#include "tmk_core/common/eeprom.h" #include "tmk_core/common/eeprom.h"
// HACK // HACK
#include "keyboards/zeal60/zeal60_api.h" // Temporary hack #include "keyboards/wilba_tech/via_api.h" // Temporary hack
#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack #include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
/* Artificial delay added to get media keys to work in the encoder*/ /* Artificial delay added to get media keys to work in the encoder*/
@ -72,7 +72,7 @@ void eeprom_set_valid(bool valid)
void eeprom_reset(void) void eeprom_reset(void)
{ {
// Set the Zeal60 specific EEPROM state as invalid. // Set the VIA specific EEPROM state as invalid.
eeprom_set_valid(false); eeprom_set_valid(false);
// Set the TMK/QMK EEPROM state as invalid. // Set the TMK/QMK EEPROM state as invalid.
eeconfig_disable(); eeconfig_disable();

View File

@ -12,8 +12,8 @@
#include "tmk_core/common/eeprom.h" #include "tmk_core/common/eeprom.h"
// HACK // HACK
#include "keyboards/zeal60/zeal60_api.h" // Temporary hack #include "keyboards/wilba_tech/via_api.h" // Temporary hack
#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack #include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
backlight_config_t kb_backlight_config = { backlight_config_t kb_backlight_config = {

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -18,8 +18,8 @@
#define XXX KC_NO #define XXX KC_NO
#include "quantum.h" #include "quantum.h"
#include "../../zeal60/rgb_backlight_keycodes.h" #include "../../wilba_tech/wt_rgb_backlight_keycodes.h"
#include "../../zeal60/zeal60_keycodes.h" #include "../../wilba_tech/via_keycodes.h"
// This a shortcut to help you visually see your layout. // This a shortcut to help you visually see your layout.

View File

@ -11,7 +11,7 @@
#endif #endif
#include "quantum.h" #include "quantum.h"
#include "../../zeal60/zeal60_keycodes.h" #include "../../wilba_tech/via_keycodes.h"
// Used to create a keymap using only KC_ prefixed keys // Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \ #define LAYOUT_kc( \

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -18,8 +18,8 @@
#define XXX KC_NO #define XXX KC_NO
#include "quantum.h" #include "quantum.h"
#include "../zeal60/rgb_backlight_keycodes.h" #include "../wilba_tech/wt_rgb_backlight_keycodes.h"
#include "../zeal60/zeal60_keycodes.h" #include "../wilba_tech/via_keycodes.h"
// This a shortcut to help you visually see your layout. // This a shortcut to help you visually see your layout.

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/issi/is31fl3733.c \ drivers/issi/is31fl3733.c \
quantum/color.c \ quantum/color.c \
drivers/arm/i2c_master.c drivers/arm/i2c_master.c

View File

@ -1,11 +0,0 @@
# RAMA
Firmware for keyboards designed by [RAMA WORKS](https://rama.works)
[RAMA M6-A](https://rama.works/m6a)
[RAMA M60-A](https://rama.works/#/m60-a/)
[RAMA U80-A](https://rama.works/#/tkl-a/)
[RAMA M10-B](https://www.massdrop.com/buy/rama-m10-a?mode=guest_open)

View File

@ -1,37 +0,0 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
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_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_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};

View File

@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW" #define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x4B59 // "KY" #define PRODUCT_ID 0x4B59 // "KY"
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER RAMA.WORKS #define MANUFACTURER RAMA WORKS
#define PRODUCT RAMA KOYU #define PRODUCT RAMA WORKS KOYU
#define DESCRIPTION RAMA KOYU Keyboard #define DESCRIPTION RAMA WORKS KOYU

View File

@ -1,8 +1,8 @@
{ {
"keyboard_name": "KOYU", "keyboard_name": "RAMA WORKS KOYU",
"url": "", "url": "http://rama.works",
"maintainer": "Wilba", "maintainer": "Wilba",
"bootloader": "DFU", "bootloader": "atmel-dfu",
"width": 16, "width": 16,
"height": 5, "height": 5,
"layouts": { "layouts": {

View File

@ -17,8 +17,8 @@
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"
#include "../../zeal60/rgb_backlight_keycodes.h" #include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
#include "../../zeal60/zeal60_keycodes.h" #include "keyboards/wilba_tech/via_keycodes.h"
#define ____ KC_NO #define ____ KC_NO

View File

@ -1,6 +1,6 @@
# RAMA KOYU # RAMA WORKS KOYU
![RAMA KOYU](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/5b8bd6e6b8a045c95eac2003/1535891375794/RW-KOYU-A-RENDER-04-TOP.1335.jpg?format=1500w) ![RAMA WORKS KOYU](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/5b8bd6e6b8a045c95eac2003/1535891375794/RW-KOYU-A-RENDER-04-TOP.1335.jpg?format=1500w)
The 'wait' for something isn't the most conscious desire, but that anticipation creates nostalgia. The 'wait' for something isn't the most conscious desire, but that anticipation creates nostalgia.
@ -13,11 +13,11 @@ This is the sound of Rama Works. Never too busy-a feeling of delightful modern w
[More info at RAMA WORKS](https://rama.works/koyu/) [More info at RAMA WORKS](https://rama.works/koyu/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: RAMA KOYU PCB Hardware Supported: RAMA WORKS KOYU PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/) Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make rama/koyu:default make wilba_tech/rama_works_koyu: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). 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).

View File

@ -1,8 +1,8 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \ quantum/color.c \
drivers/issi/is31fl3731.c \ drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c drivers/avr/i2c_master.c

View File

@ -24,9 +24,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0x5241 // "RW" #define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x00AB // 10-B #define PRODUCT_ID 0x00AB // 10-B
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER RAMA.WORKS #define MANUFACTURER RAMA WORKS
#define PRODUCT RAMA M10-B #define PRODUCT RAMA WORKS M10-B
#define DESCRIPTION RAMA M10-B #define DESCRIPTION RAMA WORKS M10-B
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 1 #define MATRIX_ROWS 1

View File

@ -1,7 +1,7 @@
{ {
"keyboard_name": "m10-b", "keyboard_name": "RAMA WORKS M10-B",
"url": "", "url": "http://rama.works",
"maintainer": "qmk", "maintainer": "Wilba",
"width": 3, "width": 3,
"height": 4, "height": 4,
"layouts": { "layouts": {

View File

@ -1,15 +1,15 @@
# RAMA M10-B # RAMA WORKS M10-B
![RAMA M10-B](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/5b4997390e2e72d65f7a8e83/5b499748352f534ffb40392b/1531549522790/RAMA-M10-B-04.572.jpg?format=1500w) ![RAMA WORKS M10-B](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/5b4997390e2e72d65f7a8e83/5b499748352f534ffb40392b/1531549522790/RAMA-M10-B-04.572.jpg?format=1500w)
Mechanical Mini Pad. [More info at Massdrop](https://www.massdrop.com/buy/rama-m10-a) Mechanical Mini Pad. [More info at Massdrop](https://www.massdrop.com/buy/rama-m10-a)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: RAMA M10-B PCB Hardware Supported: RAMA WORKS M10-B PCB
Hardware Availability: [Massdrop](https://www.massdrop.com/buy/rama-m10-a) Hardware Availability: [Massdrop](https://www.massdrop.com/buy/rama-m10-a)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make rama/m10_b:default make wilba_tech/rama_works_m10_b:default
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.

View File

@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW" #define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x060A // 60-A #define PRODUCT_ID 0x060A // 60-A
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER RAMA.WORKS #define MANUFACTURER RAMA WORKS
#define PRODUCT RAMA M60-A #define PRODUCT RAMA WORKS M60-A
#define DESCRIPTION RAMA M60-A Keyboard #define DESCRIPTION RAMA WORKS M60-A
// key matrix size // key matrix size
#define MATRIX_ROWS 5 #define MATRIX_ROWS 5

View File

@ -1,8 +1,8 @@
{ {
"keyboard_name": "M60-A", "keyboard_name": "RAMA WORKS M60-A",
"url": "", "url": "http://rama.works",
"maintainer": "Wilba", "maintainer": "Wilba",
"bootloader": "DFU", "bootloader": "atmel-dfu",
"width": 15, "width": 15,
"height": 5, "height": 5,
"layouts": { "layouts": {

View File

@ -16,8 +16,8 @@
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"
#include "../../zeal60/rgb_backlight_keycodes.h" #include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
#include "../../zeal60/zeal60_keycodes.h" #include "keyboards/wilba_tech/via_keycodes.h"
#define XXX KC_NO #define XXX KC_NO

View File

@ -1,15 +1,15 @@
# RAMA M60-A # RAMA WORKS M60-A
![RAMA M60-A](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/5aafa6a20e2e7254480b21bf/1535873164793/RAMA-M60-A-03.688.jpg?format=1500w) ![RAMA WORKS M60-A](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/5aafa6a20e2e7254480b21bf/1535873164793/RAMA-M60-A-03.688.jpg?format=1500w)
The M60-A represents the benchmark and equilibrium between function and design for us at Rama Works. The gently exaggerated design of the frame is not understated, but rather provocative. Inspiration and evolution from previous models are evident in the beautifully articulated design and the well defined aesthetic, the fingerprint of our 'Industrial Modern' designs. The M60-A offers a unique contender in the traditional 60% form factor. [More info at RAMA WORKS](https://rama.works/m60-a/) The M60-A represents the benchmark and equilibrium between function and design for us at Rama Works. The gently exaggerated design of the frame is not understated, but rather provocative. Inspiration and evolution from previous models are evident in the beautifully articulated design and the well defined aesthetic, the fingerprint of our 'Industrial Modern' designs. The M60-A offers a unique contender in the traditional 60% form factor. [More info at RAMA WORKS](https://rama.works/m60-a/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: RAMA M60-A PCB Hardware Supported: RAMA WORKS M60-A PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/) Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make rama/m60_a:default make wilba_tech/rama_works_m60_a: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). 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).

View File

@ -1,8 +1,8 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \ quantum/color.c \
drivers/issi/is31fl3731.c \ drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c drivers/avr/i2c_master.c

View File

@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW" #define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x006A // 6-A #define PRODUCT_ID 0x006A // 6-A
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER RAMA.WORKS #define MANUFACTURER RAMA WORKS
#define PRODUCT RAMA M6-A #define PRODUCT RAMA WORKS M6-A
#define DESCRIPTION RAMA M6-A Macropad #define DESCRIPTION RAMA WORKS M6-A
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 1 #define MATRIX_ROWS 1

View File

@ -1,7 +1,7 @@
{ {
"keyboard_name": "m6-b", "keyboard_name": "RAMA WORKS M6-A",
"url": "", "url": "http://rama.works",
"maintainer": "qmk", "maintainer": "Wilba",
"width": 3, "width": 3,
"height": 2, "height": 2,
"layouts": { "layouts": {

View File

@ -1,15 +1,15 @@
# RAMA M6-B # RAMA WORKS M6-A
![RAMA M6-B](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/59fc7b1053450adf5bf9a852/1515932239307/RAMA-RAMA-M6-DSA-XO-CAPS.73-3_1.jpg?format=1500w) ![RAMA WORKS M6-A](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/59fc7b1053450adf5bf9a852/1515932239307/RAMA-RAMA-M6-DSA-XO-CAPS.73-3_1.jpg?format=1500w)
A 6-key companion keyboard. [More info at RAMA WORKS](https://rama.works/m6a) A 6-key companion keyboard. [More info at RAMA WORKS](https://rama.works/m6a)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: RAMA M6-B PCB Hardware Supported: RAMA WORKS M6-A PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/) Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make rama/m6_b:default make wilba_tech/rama_works_m6_a: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). 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).

View File

@ -1,5 +1,5 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c SRC = keyboards/wilba_tech/wt_main.c
# MCU name # MCU name
MCU = atmega32u4 MCU = atmega32u4

View File

@ -21,9 +21,9 @@
#define VENDOR_ID 0x5241 // "RW" #define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x006B // 6-B #define PRODUCT_ID 0x006B // 6-B
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER RAMA.WORKS #define MANUFACTURER RAMA WORKS
#define PRODUCT RAMA M6-B #define PRODUCT RAMA WORKS M6-B
#define DESCRIPTION RAMA M6-B Macropad #define DESCRIPTION RAMA WORKS M6-B
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 1 #define MATRIX_ROWS 1

View File

@ -1,7 +1,7 @@
{ {
"keyboard_name": "m6-a", "keyboard_name": "RAMA WORKS M6-B",
"url": "", "url": "http://rama.works",
"maintainer": "qmk", "maintainer": "Wilba",
"width": 3, "width": 3,
"height": 2, "height": 2,
"layouts": { "layouts": {

View File

@ -1,15 +1,15 @@
# RAMA M6-A # RAMA WORKS M6-B
![RAMA M6-A](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/59fc7b1053450adf5bf9a852/1515932239307/RAMA-RAMA-M6-DSA-XO-CAPS.73-3_1.jpg?format=1500w) ![RAMA WORKS M6-B](https://static1.squarespace.com/static/563c788ae4b099120ae219e2/t/59fc7b1053450adf5bf9a852/1515932239307/RAMA-RAMA-M6-DSA-XO-CAPS.73-3_1.jpg?format=1500w)
A 6-key companion keyboard. [More info at RAMA WORKS](https://rama.works/m6a) A 6-key companion keyboard. [More info at RAMA WORKS](https://rama.works/m6a)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: RAMA M6-A PCB Hardware Supported: RAMA WORKS M6-B PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/) Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make rama/m6_a:default make wilba_tech/rama_works_m6_b: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). 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).

View File

@ -1,6 +1,6 @@
# project specific files # project specific files
SRC = keyboards/zeal60/zeal60.c \ SRC = keyboards/wilba_tech/wt_main.c \
keyboards/zeal60/rgb_backlight.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \ quantum/color.c \
drivers/issi/is31fl3218.c \ drivers/issi/is31fl3218.c \
drivers/avr/i2c_master.c drivers/avr/i2c_master.c

View File

@ -22,9 +22,9 @@
#define VENDOR_ID 0x5241 // "RW" #define VENDOR_ID 0x5241 // "RW"
#define PRODUCT_ID 0x080A // 80-A #define PRODUCT_ID 0x080A // 80-A
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER RAMA.WORKS #define MANUFACTURER RAMA WORKS
#define PRODUCT RAMA U80-A #define PRODUCT RAMA WORKS U80-A
#define DESCRIPTION RAMA U80-A Keyboard #define DESCRIPTION RAMA WORKS U80-A
/* key matrix size */ /* key matrix size */
#define MATRIX_ROWS 6 #define MATRIX_ROWS 6
@ -45,7 +45,7 @@
#define UNUSED_PINS #define UNUSED_PINS
/* COL2ROW, ROW2COL*/ /* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL #define DIODE_DIRECTION COL2ROW
// #define BACKLIGHT_PIN B7 // #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING // #define BACKLIGHT_BREATHING
@ -179,7 +179,61 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 1 //#define MIDI_TONE_KEYCODE_OCTAVES 1
#define WT_MONO_BACKLIGHT //#define WT_MONO_BACKLIGHT
// IS31FL3731 driver
#define DRIVER_COUNT 3
#define DRIVER_LED_TOTAL 108
#define RGB_BACKLIGHT_ENABLED 1
// This conditionally compiles the backlight code for U80-A specifics
#define RGB_BACKLIGHT_U80_A
// enable/disable LEDs based on layout
// they aren't really used if RGB_BACKLIGHT_M60_A defined
#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1
#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
#define RGB_BACKLIGHT_USE_7U_SPACEBAR 1
#define RGB_BACKLIGHT_USE_ISO_ENTER 0
#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 1
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
// disable backlight after timeout in minutes, 0 = no timeout
#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
// the default brightness
#define RGB_BACKLIGHT_BRIGHTNESS 255
// the default effect (RGB test)
#define RGB_BACKLIGHT_EFFECT 255
// the default effect speed (0-3)
#define RGB_BACKLIGHT_EFFECT_SPEED 0
// the default color1 and color2
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
// These define which keys in the matrix are alphas/mods
// Used for backlight effects so colors are different for
// alphas vs. mods
// Each value is for a row, bit 0 is column 0
// Alpha=0 Mod=1
#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b1110000000000000
#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b1100000000000001
#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b1111000000000001
#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b1111000000000001
#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b1111100000000111
#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
#define DYNAMIC_KEYMAP_LAYER_COUNT 4 #define DYNAMIC_KEYMAP_LAYER_COUNT 4
@ -194,9 +248,11 @@
#define EEPROM_VERSION 0x07 #define EEPROM_VERSION 0x07
#define EEPROM_VERSION_ADDR 34 #define EEPROM_VERSION_ADDR 34
// Dynamic keymap starts after EEPROM version // Backlight config starts after EEPROM version
#define DYNAMIC_KEYMAP_EEPROM_ADDR 35 #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
// Dynamic macro starts after dynamic keymaps (35+(4*6*17*2)) = (35+816) // Dynamic keymap starts after backlight config (35+31)
#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 851 #define DYNAMIC_KEYMAP_EEPROM_ADDR 66
#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 173 // Dynamic macro starts after dynamic keymaps (66+(4*6*17*2)) = (66+816)
#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 882
#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 142
#define DYNAMIC_KEYMAP_MACRO_COUNT 16 #define DYNAMIC_KEYMAP_MACRO_COUNT 16

View File

@ -1,6 +1,6 @@
{ {
"keyboard_name": "RAMA U80-A", "keyboard_name": "RAMA WORKS U80-A",
"url": "https://rama.works/#/tkl-a/", "url": "http://rama.works",
"maintainer": "Wilba", "maintainer": "Wilba",
"bootloader": "atmel-dfu", "bootloader": "atmel-dfu",
"width": 18.25, "width": 18.25,

View File

@ -0,0 +1,37 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
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_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@ -17,6 +17,8 @@
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"
#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
#include "keyboards/wilba_tech/via_keycodes.h"
#define ____ KC_NO #define ____ KC_NO
@ -27,17 +29,17 @@
#define LAYOUT_all( \ #define LAYOUT_all( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K313, K114, K115, K116, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \
K500, K501, K502, K506, K510, K511, K512, K513, K514, K515, K516 \ K500, K501, K502, K507, K511, K512, K513, K514, K515, K516 \
) { \ ) { \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, K015, K016 }, \ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, K015, K016 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, ____, ____ }, \ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, ____, ____, ____ }, \
{ K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____, K415, ____ }, \ { K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, ____, ____, K415, ____ }, \
{ K500, K501, K502, ____, ____, ____, K506, ____, ____, ____, K510, K511, K512, K513, K514, K515, K516 } \ { K500, K501, K502, ____, ____, ____, ____, K507, ____, ____, ____, K511, K512, K513, K514, K515, K516 } \
} }

View File

@ -1,15 +1,15 @@
# RAMA U80-A # RAMA WORKS U80-A
![RAMA U80-A](https://something.com/something.jpg) ![RAMA WORKS U80-A](https://something.com/something.jpg)
A TKL keyboard. [More info at RAMA WORKS](https://rama.works/#/tkl-a/) A TKL keyboard. [More info at RAMA WORKS](https://rama.works/#/tkl-a/)
Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582) Keyboard Maintainer: [Wilba6582](https://github.com/Wilba6582)
Hardware Supported: RAMA U80-A PCB Hardware Supported: RAMA WORKS U80-A PCB
Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/) Hardware Availability: [RAMA WORKS Store](https://ramaworks.store/)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make rama/u80_a:default make wilba_tech/rama_works_u80_a: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). 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).

View File

@ -1,8 +1,9 @@
# project specific files # project specific files
SRC = drivers/issi/is31fl3736.c \ SRC = keyboards/wilba_tech/wt_main.c \
drivers/avr/i2c_master.c \ keyboards/wilba_tech/wt_rgb_backlight.c \
keyboards/wilba_tech/wt_mono_backlight.c \ quantum/color.c \
keyboards/wilba_tech/wt_main.c drivers/issi/is31fl3731.c \
drivers/avr/i2c_master.c
# MCU name # MCU name
MCU = atmega32u4 MCU = atmega32u4
@ -69,3 +70,4 @@ FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
RAW_ENABLE = yes RAW_ENABLE = yes
DYNAMIC_KEYMAP_ENABLE = yes DYNAMIC_KEYMAP_ENABLE = yes
CIE1931_CURVE = yes

View File

@ -17,7 +17,7 @@
#define PROTOCOL_VERSION 0x0008 #define PROTOCOL_VERSION 0x0008
enum zeal60_command_id enum via_command_id
{ {
id_get_protocol_version = 0x01, // always 0x01 id_get_protocol_version = 0x01, // always 0x01
id_get_keyboard_value, id_get_keyboard_value,
@ -41,7 +41,7 @@ enum zeal60_command_id
id_unhandled = 0xFF, id_unhandled = 0xFF,
}; };
enum zeal60_keyboard_value_id enum via_keyboard_value_id
{ {
id_uptime = 0x01, id_uptime = 0x01,
id_firmware_version id_firmware_version

View File

@ -20,7 +20,7 @@
// Need to keep checking 0x5F10 is still in the safe range. // Need to keep checking 0x5F10 is still in the safe range.
// TODO: merge this into quantum_keycodes // TODO: merge this into quantum_keycodes
// Backlight keycodes are in range 0x5F00-0x5F0F // Backlight keycodes are in range 0x5F00-0x5F0F
enum zeal60_keycodes { enum via_keycodes {
FN_MO13 = 0x5F10, FN_MO13 = 0x5F10,
FN_MO23, FN_MO23,
MACRO00, MACRO00,
@ -60,10 +60,10 @@ enum user_keycodes {
USER15, USER15,
}; };
// Zeal60 specific "action functions" // VIA specific "action functions", introduced with Zeal60
// These are only valid IDs in action_function() // These are only valid IDs in action_function()
// Use FN_TT13, FN_TT23, etc. in keymaps // Use FN_TT13, FN_TT23, etc. in keymaps
enum zeal60_action_functions { enum via_action_functions {
TRIPLE_TAP_1_3 = 0x31, TRIPLE_TAP_1_3 = 0x31,
TRIPLE_TAP_2_3 = 0x32 TRIPLE_TAP_2_3 = 0x32
}; };

View File

@ -15,11 +15,16 @@
*/ */
#include "quantum.h" #include "quantum.h"
// Check that no backlight functions are called
#if RGB_BACKLIGHT_ENABLED
#include "keyboards/wilba_tech/wt_rgb_backlight.h"
#endif // RGB_BACKLIGHT_ENABLED
#ifdef WT_MONO_BACKLIGHT #ifdef WT_MONO_BACKLIGHT
#include "keyboards/wilba_tech/wt_mono_backlight.h" #include "keyboards/wilba_tech/wt_mono_backlight.h"
#endif #endif // WT_MONO_BACKLIGHT
#include "keyboards/zeal60/zeal60_api.h" // Temporary hack #include "keyboards/wilba_tech/via_api.h" // Temporary hack
#include "keyboards/zeal60/zeal60_keycodes.h" // Temporary hack #include "keyboards/wilba_tech/via_keycodes.h" // Temporary hack
#include "raw_hid.h" #include "raw_hid.h"
#include "dynamic_keymap.h" #include "dynamic_keymap.h"
@ -145,6 +150,23 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
break; break;
} }
#endif // DYNAMIC_KEYMAP_ENABLE #endif // DYNAMIC_KEYMAP_ENABLE
#if RGB_BACKLIGHT_ENABLED
case id_backlight_config_set_value:
{
backlight_config_set_value(command_data);
break;
}
case id_backlight_config_get_value:
{
backlight_config_get_value(command_data);
break;
}
case id_backlight_config_save:
{
backlight_config_save();
break;
}
#endif // RGB_BACKLIGHT_ENABLED
case id_eeprom_reset: case id_eeprom_reset:
{ {
eeprom_reset(); eeprom_reset();
@ -180,29 +202,40 @@ void main_init(void)
// If the EEPROM has the magic, the data is good. // If the EEPROM has the magic, the data is good.
// OK to load from EEPROM. // OK to load from EEPROM.
if (eeprom_is_valid()) { if (eeprom_is_valid()) {
//backlight_config_load(); #if RGB_BACKLIGHT_ENABLED
backlight_config_load();
#endif // RGB_BACKLIGHT_ENABLED
} else { } else {
#if RGB_BACKLIGHT_ENABLED
// If the EEPROM has not been saved before, or is out of date, // If the EEPROM has not been saved before, or is out of date,
// save the default values to the EEPROM. Default values // save the default values to the EEPROM. Default values
// come from construction of the zeal_backlight_config instance. // come from construction of the zeal_backlight_config instance.
//backlight_config_save(); backlight_config_save();
#endif // RGB_BACKLIGHT_ENABLED
#ifdef DYNAMIC_KEYMAP_ENABLE #ifdef DYNAMIC_KEYMAP_ENABLE
// This resets the keymaps in EEPROM to what is in flash. // This resets the keymaps in EEPROM to what is in flash.
dynamic_keymap_reset(); dynamic_keymap_reset();
// This resets the macros in EEPROM to nothing. // This resets the macros in EEPROM to nothing.
dynamic_keymap_macro_reset(); dynamic_keymap_macro_reset();
#endif #endif // DYNAMIC_KEYMAP_ENABLE
// Save the magic number last, in case saving was interrupted // Save the magic number last, in case saving was interrupted
eeprom_set_valid(true); eeprom_set_valid(true);
} }
#if RGB_BACKLIGHT_ENABLED
// Initialize LED drivers for backlight.
backlight_init_drivers();
backlight_timer_init();
backlight_timer_enable();
#endif // RGB_BACKLIGHT_ENABLED
#ifdef WT_MONO_BACKLIGHT #ifdef WT_MONO_BACKLIGHT
// Initialize LED drivers for backlight. // Initialize LED drivers for backlight.
backlight_init_drivers(); backlight_init_drivers();
backlight_timer_init(); backlight_timer_init();
backlight_timer_enable(); backlight_timer_enable();
#endif #endif // WT_MONO_BACKLIGHT
} }
void bootmagic_lite(void) void bootmagic_lite(void)
@ -234,6 +267,10 @@ void matrix_init_kb(void)
void matrix_scan_kb(void) void matrix_scan_kb(void)
{ {
#if RGB_BACKLIGHT_ENABLED
// This only updates the LED driver buffers if something has changed.
backlight_update_pwm_buffers();
#endif // RGB_BACKLIGHT_ENABLED
#ifdef WT_MONO_BACKLIGHT #ifdef WT_MONO_BACKLIGHT
// This only updates the LED driver buffers if something has changed. // This only updates the LED driver buffers if something has changed.
backlight_update_pwm_buffers(); backlight_update_pwm_buffers();
@ -243,6 +280,10 @@ void matrix_scan_kb(void)
bool process_record_kb(uint16_t keycode, keyrecord_t *record) bool process_record_kb(uint16_t keycode, keyrecord_t *record)
{ {
#if RGB_BACKLIGHT_ENABLED
process_record_backlight(keycode, record);
#endif // RGB_BACKLIGHT_ENABLED
switch(keycode) { switch(keycode) {
case FN_MO13: case FN_MO13:
if (record->event.pressed) { if (record->event.pressed) {
@ -280,3 +321,73 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record)
return process_record_user(keycode, record); return process_record_user(keycode, record);
} }
// This overrides the one in quantum/keymap_common.c
uint16_t keymap_function_id_to_action( uint16_t function_id )
{
// Zeal60 specific "action functions" are 0xF00 to 0xFFF
// i.e. F(0xF00) to F(0xFFF) are mapped to
// enum zeal60_action_functions by masking last 8 bits.
if ( function_id >= 0x0F00 && function_id <= 0x0FFF )
{
uint8_t id = function_id & 0xFF;
switch ( id ) {
case TRIPLE_TAP_1_3:
case TRIPLE_TAP_2_3:
{
return ACTION_FUNCTION_TAP(id);
break;
}
default:
break;
}
}
return pgm_read_word(&fn_actions[function_id]);
}
// Zeal60 specific "action functions"
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id)
{
case TRIPLE_TAP_1_3:
case TRIPLE_TAP_2_3:
if (record->event.pressed) {
layer_on( id == TRIPLE_TAP_1_3 ? 1 : 2 );
if (record->tap.count && !record->tap.interrupted) {
if (record->tap.count >= 3) {
layer_invert(3);
}
} else {
record->tap.count = 0;
}
} else {
layer_off( id == TRIPLE_TAP_1_3 ? 1 : 2 );
}
break;
}
}
void led_set_kb(uint8_t usb_led)
{
#if RGB_BACKLIGHT_ENABLED
backlight_set_indicator_state(usb_led);
#endif // RGB_BACKLIGHT_ENABLED
}
void suspend_power_down_kb(void)
{
#if RGB_BACKLIGHT_ENABLED
backlight_set_suspend_state(true);
#endif // RGB_BACKLIGHT_ENABLED
}
void suspend_wakeup_init_kb(void)
{
#if RGB_BACKLIGHT_ENABLED
backlight_set_suspend_state(false);
#endif // RGB_BACKLIGHT_ENABLED
}

View File

@ -13,11 +13,10 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#if RGB_BACKLIGHT_ENABLED
#if defined(RGB_BACKLIGHT_ZEAL60) || defined(RGB_BACKLIGHT_ZEAL65) || defined(RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) #if defined(RGB_BACKLIGHT_ZEAL60) || defined(RGB_BACKLIGHT_ZEAL65) || defined(RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_U80_A)
#else #else
#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU, RGB_BACKLIGHT_HS60, RGB_BACKLIGHT_NK65 #error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU, RGB_BACKLIGHT_HS60, RGB_BACKLIGHT_NK65, RGB_BACKLIGHT_U80_A
#endif #endif
#ifndef MAX #ifndef MAX
@ -29,9 +28,9 @@
#endif #endif
#include "quantum.h" #include "quantum.h"
#include "rgb_backlight.h" #include "wt_rgb_backlight.h"
#include "rgb_backlight_api.h" #include "wt_rgb_backlight_api.h"
#include "rgb_backlight_keycodes.h" #include "wt_rgb_backlight_keycodes.h"
#if !defined(RGB_BACKLIGHT_HS60) && !defined(RGB_BACKLIGHT_NK65) #if !defined(RGB_BACKLIGHT_HS60) && !defined(RGB_BACKLIGHT_NK65)
#include <avr/io.h> #include <avr/io.h>
@ -58,8 +57,12 @@
#define BACKLIGHT_LED_COUNT 69 #define BACKLIGHT_LED_COUNT 69
#else #else
#include "drivers/issi/is31fl3731.h" #include "drivers/issi/is31fl3731.h"
#if defined(RGB_BACKLIGHT_U80_A)
#define BACKLIGHT_LED_COUNT 108
#else
#define BACKLIGHT_LED_COUNT 72 #define BACKLIGHT_LED_COUNT 72
#endif #endif
#endif
#define BACKLIGHT_EFFECT_MAX 10 #define BACKLIGHT_EFFECT_MAX 10
@ -330,6 +333,134 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
{1, K_16, J_16, L_16}, //LB64 {1, K_16, J_16, L_16}, //LB64
}; };
#elif defined(RGB_BACKLIGHT_U80_A)
// U80-A prototype uses 3 ISSI drivers
#define ISSI_ADDR_1 0x74 // 11101[00] <- GND
#define ISSI_ADDR_2 0x76 // 11101[10] <- SDA
#define ISSI_ADDR_3 0x75 // 11101[01] <- SCL
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C2_1, C3_1, C4_1}, // LA0
{0, C1_1, C3_2, C4_2}, // LA1
{0, C1_2, C2_2, C4_3}, // LA2
{0, C1_3, C2_3, C3_3}, // LA3
{0, C1_4, C2_4, C3_4}, // LA4
{0, C1_5, C2_5, C3_5}, // LA5
{0, C1_6, C2_6, C3_6}, // LA6
{0, C1_7, C2_7, C3_7}, // LA7
{0, C1_8, C2_8, C3_8}, // LA8
{0, C9_1, C8_1, C7_1}, // LA9
{0, C9_2, C8_2, C7_2}, // LA10
{0, C9_3, C8_3, C7_3}, // LA11
{0, C9_4, C8_4, C7_4}, // LA12
{0, C9_5, C8_5, C7_5}, // LA13
{0, C9_6, C8_6, C7_6}, // LA14
{0, C9_7, C8_7, C6_6}, // LA15
{0, C9_8, C7_7, C6_7}, // LA16
{0, C8_8, C7_8, C6_8}, // LA17
{0, C2_9, C3_9, C4_9}, // LB0
{0, C1_9, C3_10, C4_10}, // LB1
{0, C1_10, C2_10, C4_11}, // LB2
{0, C1_11, C2_11, C3_11}, // LB3
{0, C1_12, C2_12, C3_12}, // LB4
{0, C1_13, C2_13, C3_13}, // LB5
{0, C1_14, C2_14, C3_14}, // LB6
{0, C1_15, C2_15, C3_15}, // LB7
{0, C1_16, C2_16, C3_16}, // LB8
{0, C9_9, C8_9, C7_9}, // LB9
{0, C9_10, C8_10, C7_10}, // LB10
{0, C9_11, C8_11, C7_11}, // LB11
{0, C9_12, C8_12, C7_12}, // LB12
{0, C9_13, C8_13, C7_13}, // LB13
{0, C9_14, C8_14, C7_14}, // LB14
{0, C9_15, C8_15, C6_14}, // LB15
{0, C9_16, C7_15, C6_15}, // LB16
{0, C8_16, C7_16, C6_16}, // LB17
{1, C2_1, C3_1, C4_1}, // LC0
{1, C1_1, C3_2, C4_2}, // LC1
{1, C1_2, C2_2, C4_3}, // LC2
{1, C1_3, C2_3, C3_3}, // LC3
{1, C1_4, C2_4, C3_4}, // LC4
{1, C1_5, C2_5, C3_5}, // LC5
{1, C1_6, C2_6, C3_6}, // LC6
{1, C1_7, C2_7, C3_7}, // LC7
{1, C1_8, C2_8, C3_8}, // LC8
{1, C9_1, C8_1, C7_1}, // LC9
{1, C9_2, C8_2, C7_2}, // LC10
{1, C9_3, C8_3, C7_3}, // LC11
{1, C9_4, C8_4, C7_4}, // LC12
{1, C9_5, C8_5, C7_5}, // LC13
{1, C9_6, C8_6, C7_6}, // LC14
{1, C9_7, C8_7, C6_6}, // LC15
{1, C9_8, C7_7, C6_7}, // LC16
{1, C8_8, C7_8, C6_8}, // LC17
{1, C2_9, C3_9, C4_9}, // LD0
{1, C1_9, C3_10, C4_10}, // LD1
{1, C1_10, C2_10, C4_11}, // LD2
{1, C1_11, C2_11, C3_11}, // LD3
{1, C1_12, C2_12, C3_12}, // LD4
{1, C1_13, C2_13, C3_13}, // LD5
{1, C1_14, C2_14, C3_14}, // LD6
{1, C1_15, C2_15, C3_15}, // LD7
{1, C1_16, C2_16, C3_16}, // LD8
{1, C9_9, C8_9, C7_9}, // LD9
{1, C9_10, C8_10, C7_10}, // LD10
{1, C9_11, C8_11, C7_11}, // LD11
{1, C9_12, C8_12, C7_12}, // LD12
{1, C9_13, C8_13, C7_13}, // LD13
{1, C9_14, C8_14, C7_14}, // LD14
{1, C9_15, C8_15, C6_14}, // LD15
{1, C9_16, C7_15, C6_15}, // LD16
{1, C8_16, C7_16, C6_16}, // LD17
{2, C2_1, C3_1, C4_1}, // LE0
{2, C1_1, C3_2, C4_2}, // LE1
{2, C1_2, C2_2, C4_3}, // LE2
{2, C1_3, C2_3, C3_3}, // LE3
{2, C1_4, C2_4, C3_4}, // LE4
{2, C1_5, C2_5, C3_5}, // LE5
{2, C1_6, C2_6, C3_6}, // LE6
{2, C1_7, C2_7, C3_7}, // LE7
{2, C1_8, C2_8, C3_8}, // LE8
{2, C9_1, C8_1, C7_1}, // LE9
{2, C9_2, C8_2, C7_2}, // LE10
{2, C9_3, C8_3, C7_3}, // LE11
{2, C9_4, C8_4, C7_4}, // LE12
{2, C9_5, C8_5, C7_5}, // LE13
{2, C9_6, C8_6, C7_6}, // LE14
{2, C9_7, C8_7, C6_6}, // LE15
{2, C9_8, C7_7, C6_7}, // LE16
{2, C8_8, C7_8, C6_8}, // LE17
{2, C2_9, C3_9, C4_9}, // LF0
{2, C1_9, C3_10, C4_10}, // LF1
{2, C1_10, C2_10, C4_11}, // LF2
{2, C1_11, C2_11, C3_11}, // LF3
{2, C1_12, C2_12, C3_12}, // LF4
{2, C1_13, C2_13, C3_13}, // LF5
{2, C1_14, C2_14, C3_14}, // LF6
{2, C1_15, C2_15, C3_15}, // LF7
{2, C1_16, C2_16, C3_16}, // LF8
{2, C9_9, C8_9, C7_9}, // LF9
{2, C9_10, C8_10, C7_10}, // LF10
{2, C9_11, C8_11, C7_11}, // LF11
{2, C9_12, C8_12, C7_12}, // LF12
{2, C9_13, C8_13, C7_13}, // LF13
{2, C9_14, C8_14, C7_14}, // LF14
{2, C9_15, C8_15, C6_14}, // LF15
{2, C9_16, C7_15, C6_15}, // LF16
{2, C8_16, C7_16, C6_16}, // LF17
};
#elif !defined(RGB_BACKLIGHT_M6_B) #elif !defined(RGB_BACKLIGHT_M6_B)
// This is a 7-bit address, that gets left-shifted and bit 0 // This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol) // set to 0 for write, 1 for read (as per I2C protocol)
@ -506,8 +637,8 @@ const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
}; };
const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = { const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
// LA0..LA17 // LA0..LA17
{58,129}, {70,129}, {80,139}, {89,157}, {96,181}, {101,208}, {105,238}, {109,255}, {128,247}, {58,255}, {58,129}, {70,129}, {80,139}, {89,157}, {96,181}, {101,208}, {105,238}, {109,255}, {128,247},
{64,255}, {70,255}, {75,255}, {80,255}, {85,255}, {89,255}, {93,255}, {96,255}, {58,255}, {64,255}, {70,255}, {75,255}, {80,255}, {85,255}, {89,255}, {93,255}, {96,255},
// LB0..LB17 // LB0..LB17
{53,255}, {48,255}, {43,255}, {39,255}, {34,255}, {32,255}, {255,255}, {255,255}, {255,255}, {53,255}, {48,255}, {43,255}, {39,255}, {34,255}, {32,255}, {255,255}, {255,255}, {255,255},
{48,139}, {39,157}, {32,181}, {27,208}, {23,238}, {19,255}, {255,255}, {255,255}, {255,255}, {48,139}, {39,157}, {32,181}, {27,208}, {23,238}, {19,255}, {255,255}, {255,255}, {255,255},
@ -518,6 +649,48 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
{0,27}, {0,64}, {0,101}, {0,137}, {0,174}, {255,233}, {228,201}, {235,255}, {237,255}, {0,27}, {0,64}, {0,101}, {0,137}, {0,174}, {255,233}, {228,201}, {235,255}, {237,255},
{195,128}, {206,136}, {215,152}, {222,175}, {205,234}, {209,255}, {214,255}, {219,255}, {223,255} {195,128}, {206,136}, {215,152}, {222,175}, {205,234}, {209,255}, {214,255}, {219,255}, {223,255}
}; };
#elif defined(RGB_BACKLIGHT_U80_A)
const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
// Thse are scaled by 14.5 per U
// LA0..LA17
{109,36}, {94,36}, {80,36}, {65,36}, {51,36}, {36,36}, {22,36}, {4,36}, {5,51},
{116,22}, {102,22}, {87,22}, {73,22}, {58,22}, {44,22}, {29,22}, {15,22}, {0,22},
// LB0..LB17
{131,22}, {145,22}, {160,22}, {174,22}, {196,22}, {0,0}, {0,0}, {0,0}, {0,0},
{123,36}, {138,36}, {152,36}, {167,36}, {181,36}, {199,36}, {0,0}, {0,0}, {0,0},
// LC0..LC17
{102,80}, {91,65}, {76,65}, {62,65}, {47,65}, {33,65}, {58,76}, {40,80}, {22,80},
{98,51}, {83,51}, {69,51}, {54,51}, {40,51}, {25,51}, {0,0}, {9,65}, {4,80},
// LD0..LD17
{112,51}, {127,51}, {141,51}, {156,51}, {170,51}, {194,51}, {163,65}, {190,65}, {0,0},
{105,65}, {120,65}, {134,65}, {149,65}, {0,0}, {145,76}, {163,80}, {181,80}, {199,80},
// LE0..LE17
{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0},
{73,0}, {94,0}, {109,0}, {123,0}, {138,0}, {58,0}, {44,0}, {29,0}, {0,0},
// LF0..LF17
{160,0}, {174,0}, {189,0}, {203,0}, {225,0}, {239,0}, {254,0}, {254,22}, {254,36},
{239,22}, {239,36}, {225,22}, {225,36}, {0,0}, {239,65}, {225,80}, {239,80}, {254,80}
};
const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
// LA0..LA17
{59,129}, {69,129}, {80,138}, {88,154}, {95,175}, {100,200}, {104,227}, {107,255}, {128,226},
{59,255}, {64,255}, {69,255}, {75,255}, {80,255}, {84,255}, {88,255}, {91,255}, {95,255},
// LB0..LB17
{53,255}, {48,255}, {44,255}, {40,255}, {35,255}, {255,255}, {255,255}, {255,255}, {255,255},
{48,138}, {40,154}, {33,175}, {28,200}, {24,227}, {21,255}, {255,255}, {255,255}, {255,255},
// LC0..LC17
{192,255}, {184,131}, {174,141}, {166,159}, {160,181}, {155,207}, {174,244}, {171,255}, {166,255},
{128,9}, {128,43}, {128,77}, {128,111}, {128,145}, {128,179}, {255,255}, {150,252}, {162,255},
// LD0..LD17
{0,26}, {0,60}, {0,94}, {0,128}, {0,162}, {0,218}, {227,193}, {234,245}, {255,255},
{195,128}, {205,135}, {214,149}, {221,169}, {255,255}, {210,244}, {213,255}, {218,255}, {222,255},
// LE0..LE17
{255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255}, {255,255},
{70,255}, {66,255}, {62,255}, {59,255}, {56,255}, {73,255}, {76,255}, {79,255}, {84,255},
// LF0..LF17
{52,255}, {49,255}, {47,255}, {44,255}, {41,255}, {38,255}, {37,255}, {25,255}, {14,255},
{27,255}, {15,255}, {29,255}, {17,255}, {255,255}, {241,255}, {227,255}, {229,255}, {231,255}
};
#elif defined(RGB_BACKLIGHT_HS60) && defined(HS60_ANSI) #elif defined(RGB_BACKLIGHT_HS60) && defined(HS60_ANSI)
const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = { const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
// LA1..LA47 // LA1..LA47
@ -745,6 +918,17 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
{ 36+16, 36+15, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 54+8 }, { 36+16, 36+15, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 54+8 },
{ 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 54+13, 54+14, 54+15, 54+16, 54+17 } { 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 54+13, 54+14, 54+15, 54+16, 54+17 }
}; };
#elif defined(RGB_BACKLIGHT_U80_A)
// Note: Left spacebar stab is at 5,3 (LC6)
// Right spacebar stab is at 5,10 (LD14)
const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
{ 72+17, 72+16, 72+15, 72+14, 72+9, 72+10, 72+11, 72+12, 72+13, 90+0, 90+1, 90+2, 90+3, 255, 90+4, 90+5, 90+6 },
{ 0+17, 0+16, 0+15, 0+14, 0+13, 0+12, 0+11, 0+10, 0+9, 18+0, 18+1, 18+2, 18+3, 18+4, 90+11, 90+9, 90+7 },
{ 0+7, 0+6, 0+5, 0+4, 0+3, 0+2, 0+1, 0+0, 18+9, 18+10, 18+11, 18+12, 18+13, 18+14, 90+12, 90+10, 90+8 },
{ 0+8, 36+14, 36+13, 36+12, 36+11, 36+10, 36+9, 54+0, 54+1, 54+2, 54+3, 54+4, 54+5, 255, 255, 255, 255 },
{ 36+16, 255, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 255, 255, 90+14, 255 },
{ 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 255, 54+14, 54+15, 54+16, 54+17, 90+15, 90+16, 90+17 }
};
#elif defined(RGB_BACKLIGHT_HS60) && defined(HS60_ANSI) #elif defined(RGB_BACKLIGHT_HS60) && defined(HS60_ANSI)
// //
// LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45, LA49, LA53, // LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45, LA49, LA53,
@ -831,9 +1015,29 @@ void backlight_update_pwm_buffers(void)
IS31FL3733_update_pwm_buffers( ISSI_ADDR_2, 1 ); IS31FL3733_update_pwm_buffers( ISSI_ADDR_2, 1 );
IS31FL3733_update_led_control_registers( ISSI_ADDR_1, 0 ); IS31FL3733_update_led_control_registers( ISSI_ADDR_1, 0 );
IS31FL3733_update_led_control_registers( ISSI_ADDR_2, 1 ); IS31FL3733_update_led_control_registers( ISSI_ADDR_2, 1 );
#elif defined(RGB_BACKLIGHT_U80_A)
static uint8_t driver = 0;
switch ( driver )
{
case 0:
IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, 0 );
break;
case 1:
IS31FL3731_update_pwm_buffers( ISSI_ADDR_2, 1 );
break;
case 2:
IS31FL3731_update_pwm_buffers( ISSI_ADDR_3, 2 );
break;
}
if ( ++driver > 2 )
{
driver = 0;
}
#else #else
IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, ISSI_ADDR_2 ); IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, 0 );
IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 ); IS31FL3731_update_pwm_buffers( ISSI_ADDR_2, 1 );
IS31FL3731_update_led_control_registers( ISSI_ADDR_1, 0 );
IS31FL3731_update_led_control_registers( ISSI_ADDR_2, 1 );
#endif #endif
} }
@ -1028,7 +1232,7 @@ void backlight_effect_alphas_mods(void)
{ {
RGB rgb1 = hsv_to_rgb( (HSV){ .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness } ); RGB rgb1 = hsv_to_rgb( (HSV){ .h = g_config.color_1.h, .s = g_config.color_1.s, .v = g_config.brightness } );
RGB rgb2 = hsv_to_rgb( (HSV){ .h = g_config.color_2.h, .s = g_config.color_2.s, .v = g_config.brightness } ); RGB rgb2 = hsv_to_rgb( (HSV){ .h = g_config.color_2.h, .s = g_config.color_2.s, .v = g_config.brightness } );
bool is_alpha = false;
for ( int row = 0; row < MATRIX_ROWS; row++ ) for ( int row = 0; row < MATRIX_ROWS; row++ )
{ {
for ( int column = 0; column < MATRIX_COLS; column++ ) for ( int column = 0; column < MATRIX_COLS; column++ )
@ -1037,7 +1241,19 @@ void backlight_effect_alphas_mods(void)
map_row_column_to_led( row, column, &index ); map_row_column_to_led( row, column, &index );
if ( index < BACKLIGHT_LED_COUNT ) if ( index < BACKLIGHT_LED_COUNT )
{ {
if ( ( g_config.alphas_mods[row] & (1<<column) ) == 0 ) #if defined(RGB_BACKLIGHT_U80_A)
if ( row == 0 )
{
is_alpha = ( column < 16 ) && (( 0b1110000111100001 & (1<<column) ) == 0);
}
else
{
is_alpha = ( column < 16 ) && (( g_config.alphas_mods[row-1] & (1<<column) ) == 0);
}
#else
is_alpha = ( g_config.alphas_mods[row] & (1<<column) ) == 0;
#endif
if ( is_alpha )
{ {
backlight_set_color( index, rgb1.r, rgb1.g, rgb1.b ); backlight_set_color( index, rgb1.r, rgb1.g, rgb1.b );
} }
@ -1889,6 +2105,15 @@ void backlight_init_drivers(void)
IS31FL3731_init( ISSI_ADDR_1 ); IS31FL3731_init( ISSI_ADDR_1 );
IS31FL3731_init( ISSI_ADDR_2 ); IS31FL3731_init( ISSI_ADDR_2 );
#if defined(RGB_BACKLIGHT_U80_A)
IS31FL3731_init( ISSI_ADDR_3 );
#endif
// Experimental feature, not in configuration yet
#if defined(RGB_BACKLIGHT_ZEAL60)
bool disable_spacebar_stab_leds = false;
#endif
for ( int index = 0; index < DRIVER_LED_TOTAL; index++ ) for ( int index = 0; index < DRIVER_LED_TOTAL; index++ )
{ {
// OR the possible "disabled" cases together, then NOT the result to get the enabled state // OR the possible "disabled" cases together, then NOT the result to get the enabled state
@ -1928,13 +2153,35 @@ void backlight_init_drivers(void)
( index == 18+8 ) || // LB8 ( index == 18+8 ) || // LB8
( index == 18+15 ) || // LB15 ( index == 18+15 ) || // LB15
( index == 18+16 ) || // LB16 ( index == 18+16 ) || // LB16
( index == 18+17 ) ); // LB17 ( index == 18+17 ) || // LB17
( index == 36+6 && disable_spacebar_stab_leds ) || // LC6
( index == 54+13 && disable_spacebar_stab_leds ) || // LD13
( index == 54+14 && disable_spacebar_stab_leds && g_config.use_7u_spacebar ) ); // LD14
#elif defined(RGB_BACKLIGHT_U80_A)
// LB5, LB6, LB7, LB8, LB15, LB16, LB17, LC15, LD8, LD13, LE0-LE8, LF13
bool enabled = !(
( index == 18+5 ) || // LB5
( index == 18+6 ) || // LB6
( index == 18+7 ) || // LB7
( index == 18+8 ) || // LB8
( index == 18+15 ) || // LB15
( index == 18+16 ) || // LB16
( index == 18+16 ) || // LB17
( index == 36+15 ) || // LC15
( index == 54+8 ) || // LD8
( index == 54+13 ) || // LD13
( index >= 72+0 && index <= 72+8 ) || // LE0-LE8
( index == 90+13 ) ); // LF13
#endif #endif
// This only caches it for later // This only caches it for later
IS31FL3731_set_led_control_register( index, enabled, enabled, enabled ); IS31FL3731_set_led_control_register( index, enabled, enabled, enabled );
} }
// This actually updates the LED drivers // This actually updates the LED drivers
IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 ); IS31FL3731_update_led_control_registers( ISSI_ADDR_1, 0 );
IS31FL3731_update_led_control_registers( ISSI_ADDR_2, 1 );
#if defined(RGB_BACKLIGHT_U80_A)
IS31FL3731_update_led_control_registers( ISSI_ADDR_3, 2 );
#endif
#endif // !defined(RGB_BACKLIGHT_M6_B) #endif // !defined(RGB_BACKLIGHT_M6_B)
// TODO: put the 1 second startup delay here? // TODO: put the 1 second startup delay here?
@ -2193,4 +2440,3 @@ void backlight_debug_led( bool state )
} }
#endif // defined(RGB_DEBUGGING_ONLY) #endif // defined(RGB_DEBUGGING_ONLY)
#endif // BACKLIGHT_ENABLED

View File

@ -15,7 +15,7 @@
*/ */
#pragma once #pragma once
enum backlight_config_value enum wt_rgb_backlight_config_value
{ {
id_use_split_backspace = 0x01, id_use_split_backspace = 0x01,
id_use_split_left_shift = 0x02, id_use_split_left_shift = 0x02,

View File

@ -16,7 +16,7 @@
#pragma once #pragma once
// This is hardcoded at 0x5F00 so it's well after keycode value SAFE_RANGE // This is hardcoded at 0x5F00 so it's well after keycode value SAFE_RANGE
enum backlight_keycodes { enum wt_rgb_backlight_keycodes {
BR_INC = 0x5F00, // backlight brightness increase BR_INC = 0x5F00, // backlight brightness increase
BR_DEC, // backlight brightness decrease BR_DEC, // backlight brightness decrease
EF_INC, // backlight effect increase EF_INC, // backlight effect increase

View File

@ -1,8 +1,8 @@
{ {
"keyboard_name": "Zeal60", "keyboard_name": "Zeal60",
"url": "", "url": "https://zealpc.net",
"maintainer": "Wilba", "maintainer": "Wilba",
"bootloader": "DFU", "bootloader": "atmel-dfu",
"width": 15, "width": 15,
"height": 5, "height": 5,
"layouts": { "layouts": {

Some files were not shown because too many files have changed in this diff Show More