Skip to content

Commit

Permalink
[Keyboard] Preliminary Support for Duck Orion V3 (qmk#6892)
Browse files Browse the repository at this point in the history
* initial commit

* fixup init_rows and read_rows routine

* fixup matrix based on Marcus's tracing info

* add a temporary keymap

* add notes

* use a standard tkl ansi keymap

* turn on that last column

* backslash and backspace row left to fix

* reorg from backslash to pgdn

* got the matrix done but the backspace location at K4N is still suspect

* add reset info into readme

* add qmk configurator support

* add community layout support

* remove uneeded keymap readme

* add a new column just for the reset switch

* change copyright dates

* add cautionary message to readme as we don't know about the lighting condition yet

* Update keyboards/duck/orion/v3/v3.c

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

* Update keyboards/duck/orion/v3/v3.c

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

* Update keyboards/duck/orion/v3/v3.c

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

* change bootloader comments
  • Loading branch information
mechmerlin authored and HokieGeek committed Feb 21, 2020
1 parent 8e36400 commit b96808c
Show file tree
Hide file tree
Showing 12 changed files with 621 additions and 0 deletions.
12 changes: 12 additions & 0 deletions keyboards/duck/orion/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"keyboard_name": "Duck Orion V3",
"url": "",
"maintainer": "qmk",
"width": 18.25,
"height": 6.5,
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
}
}
}
7 changes: 7 additions & 0 deletions keyboards/duck/orion/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Duck Orion

Non official firmware for custom TKL Korean keyboard made by Duck.

Newest version is the [Orion V3](http://duck0113.tistory.com/127)

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).
1 change: 1 addition & 0 deletions keyboards/duck/orion/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DEFAULT_FOLDER = duck/orion/v3
50 changes: 50 additions & 0 deletions keyboards/duck/orion/v3/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
Copyright 2019 MechMerlin <mechmerlin@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0x444B // Duck ("DK")
#define PRODUCT_ID 0x4F52 // Orion ("OR")
#define DEVICE_VER 0x0002
#define MANUFACTURER Duck
#define PRODUCT Orion V3
#define DESCRIPTION TKL Korean custom keyboard

/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18

#define DIODE_DIRECTION COL2ROW

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5

/* number of backlight levels */
#define BACKLIGHT_LEVELS 3

#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN D6
#define RGBLED_NUM 17

/* Set to top left most key */
#define BOOTMAGIC_LITE_ROW 4
#define BOOTMAGIC_LITE_COLUMN 10

#define TAPPING_TERM 200
82 changes: 82 additions & 0 deletions keyboards/duck/orion/v3/indicator_leds.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
Copyright 2019 MechMerlin <mechmerlin@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdbool.h>
#include <util/delay.h>
#include "indicator_leds.h"
#include "duck_led/duck_led.h"

#define LED_T1H 600
#define LED_T1L 650
#define LED_T0H 250
#define LED_T0L 1000

void send_bit_d4(bool bitVal) {
if(bitVal) {
asm volatile (
"sbi %[port], %[bit] \n\t"
".rept %[onCycles] \n\t"
"nop \n\t"
".endr \n\t"
"cbi %[port], %[bit] \n\t"
".rept %[offCycles] \n\t"
"nop \n\t"
".endr \n\t"
::
[port] "I" (_SFR_IO_ADDR(PORTD)),
[bit] "I" (4),
[onCycles] "I" (NS_TO_CYCLES(LED_T1H) - 2),
[offCycles] "I" (NS_TO_CYCLES(LED_T1L) - 2));
} else {
asm volatile (
"sbi %[port], %[bit] \n\t"
".rept %[onCycles] \n\t"
"nop \n\t"
".endr \n\t"
"cbi %[port], %[bit] \n\t"
".rept %[offCycles] \n\t"
"nop \n\t"
".endr \n\t"
::
[port] "I" (_SFR_IO_ADDR(PORTD)),
[bit] "I" (4),
[onCycles] "I" (NS_TO_CYCLES(LED_T0H) - 2),
[offCycles] "I" (NS_TO_CYCLES(LED_T0L) - 2));
}
}

void send_value(uint8_t byte, enum Device device) {
for(uint8_t b = 0; b < 8; b++) {
if(device == Device_STATUSLED) {
send_bit_d4(byte & 0b10000000);
byte <<= 1;
}
}
}

// Send the LED indicators to the WS2811S chips
void indicator_leds_set(bool leds[8]) {
uint8_t led_cnt;

cli();
for(led_cnt = 0; led_cnt < 8; led_cnt++)
send_value(leds[led_cnt] ? 255 : 0, Device_STATUSLED);
sei();
show();
}

1 change: 1 addition & 0 deletions keyboards/duck/orion/v3/indicator_leds.h
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
void indicator_leds_set(bool leds[8]);
26 changes: 26 additions & 0 deletions keyboards/duck/orion/v3/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* Copyright 2019 MechMerlin <mechmerlin@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi(\
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,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) \
};
Loading

0 comments on commit b96808c

Please sign in to comment.