Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Keyboard] Add NuPhy Air75 V2 keyboard #21949

Closed
wants to merge 10 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions keyboards/nuphy/air75_v2/ansi/ansi.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Copyright 2023 Persama (@Persama)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "ansi.h"

bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {
case MAC_VOICE:
if (record->event.pressed) {
host_consumer_send(0xcf);
} else {
host_consumer_send(0);
}
return false;
default:
return true;
}
}

bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
}
switch (index) {
case 0:
if (active) {
default_layer_set(1 << 2); // WIN
keymap_config.nkro = 1;
} else {
default_layer_set(1 << 0); // MAC
keymap_config.nkro = 0;
}
break;
}
return false;
}

void keyboard_post_init_kb(void) {
setPinOutput(DRIVER_LED_CS_PIN);
setPinOutput(DC_BOOST_PIN);
writePinLow(DRIVER_LED_CS_PIN);
writePinHigh(DC_BOOST_PIN);

keyboard_post_init_user();
}
9 changes: 9 additions & 0 deletions keyboards/nuphy/air75_v2/ansi/ansi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Copyright 2023 Persama (@Persama)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once

#include "quantum.h"

enum custom_keycodes {
MAC_VOICE = QK_KB_0,
};
11 changes: 11 additions & 0 deletions keyboards/nuphy/air75_v2/ansi/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Copyright 2023 Persama (@Persama)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once


#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended

#define DIP_SWITCH_PINS { C1 }

#define DC_BOOST_PIN C2
#define DRIVER_LED_CS_PIN C6
269 changes: 269 additions & 0 deletions keyboards/nuphy/air75_v2/ansi/info.json
drashna marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
{
"keyboard_name": "NuPhy Air75 V2",
"manufacturer": "github.com/persama",
"bootloader": "stm32-dfu",
"processor": "STM32F072",
"usb":{
"vid": "0x19F5",
drashna marked this conversation as resolved.
Show resolved Hide resolved
"pid": "0x3245",
"device_version": "0.0.1",
"no_startup_check": true
},
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": true,
"command": true,
"nkro": true,
"key_lock": true,
"rgb_matrix": true,
"dip_switch": true,
},
"matrix_pins": {
"cols": ["A4", "A5", "A6", "B9", "B0", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10", "A15", "B3"],
"rows": ["C14", "C15", "A0", "A1", "A2", "A3"]
},
"diode_direction": "COL2ROW",
"debounce": 2,
"ws2812": {
"pin": "A7"
},
"rgb_matrix": {
"driver": "ws2812",
"center_point": [80, 30],
"max_brightness": 100,
"val_steps": 20,
"speed_steps": 52,
"animations": {
"gradient_up_down": true,
"gradient_left_right": true,
"breathing": true,
"band_sat": true,
"band_val": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"rainbow_moving_chevron": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"rainbow_pinwheels": true,
"raindrops": true,
"jellybean_raindrops": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"typing_heatmap": true,
"digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
"solid_reactive_multiwide": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_nexus": true,
"solid_reactive_multinexus": true,
"splash": true,
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
},

"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 10, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 20, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 30, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 40, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 50, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 60, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 70, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 80, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 90, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 100, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 110, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 120, "y": 0, "flags": 4},
{"matrix": [2, 14], "x": 130, "y": 0, "flags": 4},
{"matrix": [0, 15], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 150, "y": 0, "flags": 4},

{"matrix": [1, 16], "x": 150, "y": 10, "flags": 4},
{"matrix": [1, 13], "x": 130, "y": 10, "flags": 4},
{"matrix": [1, 12], "x": 120, "y": 10, "flags": 4},
{"matrix": [1, 11], "x": 110, "y": 10, "flags": 4},
{"matrix": [1, 10], "x": 100, "y": 10, "flags": 4},
{"matrix": [1, 9], "x": 90, "y": 10, "flags": 4},
{"matrix": [1, 8], "x": 80, "y": 10, "flags": 4},
{"matrix": [1, 7], "x": 70, "y": 10, "flags": 4},
{"matrix": [1, 6], "x": 60, "y": 10, "flags": 4},
{"matrix": [1, 5], "x": 50, "y": 10, "flags": 4},
{"matrix": [1, 4], "x": 40, "y": 10, "flags": 4},
{"matrix": [1, 3], "x": 30, "y": 10, "flags": 4},
{"matrix": [1, 2], "x": 20, "y": 10, "flags": 4},
{"matrix": [1, 1], "x": 10, "y": 10, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 10, "flags": 4},

{"matrix": [2, 0], "x": 0, "y": 20, "flags": 4},
{"matrix": [2, 1], "x": 15, "y": 20, "flags": 4},
{"matrix": [2, 2], "x": 25, "y": 20, "flags": 4},
{"matrix": [2, 3], "x": 35, "y": 20, "flags": 4},
{"matrix": [2, 4], "x": 45, "y": 20, "flags": 4},
{"matrix": [2, 5], "x": 55, "y": 20, "flags": 4},
{"matrix": [2, 6], "x": 65, "y": 20, "flags": 4},
{"matrix": [2, 7], "x": 75, "y": 20, "flags": 4},
{"matrix": [2, 8], "x": 85, "y": 20, "flags": 4},
{"matrix": [2, 9], "x": 95, "y": 20, "flags": 4},
{"matrix": [2, 10], "x": 105, "y": 20, "flags": 4},
{"matrix": [2, 11], "x": 115, "y": 20, "flags": 4},
{"matrix": [2, 12], "x": 125, "y": 20, "flags": 4},
{"matrix": [2, 13], "x": 135, "y": 20, "flags": 4},
{"matrix": [2, 16], "x": 150, "y": 20, "flags": 4},

{"matrix": [1, 15], "x": 150, "y": 30, "flags": 4},
{"matrix": [3, 13], "x": 127.5, "y": 30, "flags": 4},
{"matrix": [3, 11], "x": 117.5, "y": 30, "flags": 4},
{"matrix": [3, 10], "x": 107.5, "y": 30, "flags": 4},
{"matrix": [3, 9], "x": 97.5, "y": 30, "flags": 4},
{"matrix": [3, 8], "x": 87.5, "y": 30, "flags": 4},
{"matrix": [3, 7], "x": 77.5, "y": 30, "flags": 4},
{"matrix": [3, 6], "x": 67.5, "y": 30, "flags": 4},
{"matrix": [3, 5], "x": 57.5, "y": 30, "flags": 4},
{"matrix": [3, 4], "x": 47.5, "y": 30, "flags": 4},
{"matrix": [3, 3], "x": 37.5, "y": 30, "flags": 4},
{"matrix": [3, 2], "x": 27.5, "y": 30, "flags": 4},
{"matrix": [3, 1], "x": 17.5, "y": 30, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 30, "flags": 4},

{"matrix": [4, 0], "x": 0, "y": 40, "flags": 4},
{"matrix": [4, 2], "x": 22.5, "y": 40, "flags": 4},
{"matrix": [4, 3], "x": 32.5, "y": 40, "flags": 4},
{"matrix": [4, 4], "x": 42.5, "y": 40, "flags": 4},
{"matrix": [4, 5], "x": 52.5, "y": 40, "flags": 4},
{"matrix": [4, 6], "x": 62.5, "y": 40, "flags": 4},
{"matrix": [4, 7], "x": 72.5, "y": 40, "flags": 4},
{"matrix": [4, 8], "x": 82.5, "y": 40, "flags": 4},
{"matrix": [4, 9], "x": 92.5, "y": 40, "flags": 4},
{"matrix": [4, 10], "x": 102.5, "y": 40, "flags": 4},
{"matrix": [4, 11], "x": 112.5, "y": 40, "flags": 4},
{"matrix": [4, 13], "x": 122.5, "y": 40, "flags": 4},
{"matrix": [4, 14], "x": 140, "y": 40, "flags": 4},
{"matrix": [2, 15], "x": 150, "y": 40, "flags": 4},

{"matrix": [5, 15], "x": 150, "y": 50, "flags": 4},
{"matrix": [5, 14], "x": 140, "y": 50, "flags": 4},
{"matrix": [5, 13], "x": 130, "y": 50, "flags": 4},
{"matrix": [3, 14], "x": 120, "y": 50, "flags": 4},
{"matrix": [5, 10], "x": 110, "y": 50, "flags": 4},
{"matrix": [5, 9], "x": 100, "y": 50, "flags": 4},
{"matrix": [5, 6], "x": 37.5, "y": 50, "flags": 4},
{"matrix": [5, 2], "x": 25, "y": 50, "flags": 4},
{"matrix": [5, 1], "x": 12.5, "y": 50, "flags": 4},
{"matrix": [5, 0], "x": 0, "y": 50, "flags": 4}
]
},
"layouts": {
"LAYOUT_ansi_84": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F1", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "F2", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "F3", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "F4", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "F5", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "F6", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "F7", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "F8", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "F9", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "F10", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "F11", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "F12", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Print", "matrix": [2, 14], "x": 13, "y": 0},
{"label": "Ins", "matrix": [0, 15], "x": 14, "y": 0},
{"label": "Del", "matrix": [0, 14], "x": 15, "y": 0},

{"label": "~`", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "!1", "matrix": [1, 1], "x": 1, "y": 1},
{"label": "@2", "matrix": [1, 2], "x": 2, "y": 1},
{"label": "#3", "matrix": [1, 3], "x": 3, "y": 1},
{"label": "$4", "matrix": [1, 4], "x": 4, "y": 1},
{"label": "%5", "matrix": [1, 5], "x": 5, "y": 1},
{"label": "^6", "matrix": [1, 6], "x": 6, "y": 1},
{"label": "&7", "matrix": [1, 7], "x": 7, "y": 1},
{"label": "*8", "matrix": [1, 8], "x": 8, "y": 1},
{"label": "(9", "matrix": [1, 9], "x": 9, "y": 1},
{"label": ")0", "matrix": [1, 10], "x": 10, "y": 1},
{"label": "_-", "matrix": [1, 11], "x": 11, "y": 1},
{"label": "+=", "matrix": [1, 12], "x": 12, "y": 1},
{"label": "Backsp", "matrix": [1, 13], "x": 13, "y": 1, "w": 2},
{"label": "PageUp", "matrix": [1, 16], "x": 15, "y": 1},

{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
{"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2},
{"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2},
{"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2},
{"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2},
{"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2},
{"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2},
{"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2},
{"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2},
{"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2},
{"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2},
{"label": "{[", "matrix": [2, 11], "x": 11.5, "y": 2},
{"label": "}]", "matrix": [2, 12], "x": 12.5, "y": 2},
{"label": "|\\", "matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
{"label": "PageDn", "matrix": [2, 16], "x": 15, "y": 2},

{"label": "Caps", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
{"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3},
{"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3},
{"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3},
{"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3},
{"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3},
{"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3},
{"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3},
{"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3},
{"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3},
{"label": ":", "matrix": [3, 10], "x": 10.75, "y": 3},
{"label": "\"", "matrix": [3, 11], "x": 11.75, "y": 3},
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
{"label": "Home", "matrix": [1, 15], "x": 15, "y": 3},

{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
{"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4},
{"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4},
{"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4},
{"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4},
{"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4},
{"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4},
{"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4},
{"label": "<,", "matrix": [4, 9], "x": 9.25, "y": 4},
{"label": ">.", "matrix": [4, 10], "x": 10.25, "y": 4},
{"label": "?/", "matrix": [4, 11], "x": 11.25, "y": 4},
{"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75},
{"label": "↑", "matrix": [4, 14], "x": 14, "y": 4},
{"label": "End", "matrix": [2, 15], "x": 15, "y": 4},

{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
{"label": "Opt", "matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
{"label": "Cmd", "matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
{"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
{"label": "Cmd", "matrix": [5, 9], "x": 10, "y": 5},
{"label": "Fn", "matrix": [5, 10], "x": 11, "y": 5},
{"label": "Ctrl", "matrix": [3, 14], "x": 12, "y": 5},
{"label": "←", "matrix": [5, 13], "x": 13, "y": 5},
{"label": "↓", "matrix": [5, 14], "x": 14, "y": 5},
{"label": "→", "matrix": [5, 15], "x": 15, "y": 5}

]
}
}
}

Loading