[Keyboard] add kinesis/kintlc (#17301)

This commit is contained in:
Alex Băluț 2022-07-11 19:46:51 +00:00 committed by GitHub
parent 61a5059fc5
commit 2bb0550707
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 353 additions and 10 deletions

View file

@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define MANUFACTURER You
#define PRODUCT Kinesis Advantage/Contoured
#define PRODUCT Kinesis Classic/Advantage/Contoured
// Mouse
#define MOUSEKEY_DELAY 60

View file

@ -12,6 +12,8 @@
# include "kint36.h"
#elif defined(KEYBOARD_kinesis_kint41)
# include "kint41.h"
#elif defined(KEYBOARD_kinesis_kintlc)
# include "kintlc.h"
#endif
#include "quantum.h"

View file

@ -16,11 +16,12 @@
#include "kint36.h"
#define LED_POWER C5
void matrix_init_kb(void) {
matrix_init_user();
// Turn on the Teensy 3.6 Power LED:
#define LED_POWER C5
// Turn on the Teensy 3.6 Power LED:
setPinOutput(LED_POWER);
writePinHigh(LED_POWER);
}

View file

@ -4,6 +4,3 @@ MCU = MK66FX1M0
# Debounce eagerly (report change immediately), keep per-key timers. We can use
# this because the kinT does not have to deal with noise.
DEBOUNCE_TYPE = sym_eager_pk
#Specify firmware format that is copied to root qmk_firmware folder
FIRMWARE_FORMAT = hex

View file

@ -16,11 +16,12 @@
#include "kint41.h"
#define LED_POWER LINE_PIN13
void matrix_init_kb(void) {
matrix_init_user();
// Turn on the Teensy 4.x Power LED:
#define LED_POWER LINE_PIN13
// Turn on the Teensy 4.x Power LED:
setPinOutput(LED_POWER);
writePinHigh(LED_POWER);
}

View file

@ -3,7 +3,7 @@ MCU_SERIES = MIMXRT1062
MCU_LDSCRIPT = MIMXRT1062
MCU_STARTUP = MIMXRT1062
BOARD = IC_TEENSY_4_1
MCU = cortex-m4
MCU = cortex-m4
ARMV = 7
# Debounce eagerly (report change immediately), keep per-key timers. We can use
@ -11,5 +11,4 @@ ARMV = 7
# pressed.
DEBOUNCE_TYPE = sym_eager_pk
#Specify firmware format that is copied to root qmk_firmware folder
FIRMWARE_FORMAT = hex

View file

@ -0,0 +1,53 @@
/* Copyright 2020 QMK
*
* 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/kinesis/kint36/chconf.h -r platforms/chibios/common/configs/chconf.h`
*/
#pragma once
#define CH_CFG_ST_FREQUENCY 1000
#define CH_CFG_ST_TIMEDELTA 0
#define CH_CFG_TIME_QUANTUM 20
#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
#define CH_CFG_FACTORY_SEMAPHORES TRUE
#define CH_CFG_FACTORY_MAILBOXES TRUE
#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
#define CH_CFG_FACTORY_PIPES TRUE
#define CH_DBG_SYSTEM_STATE_CHECK TRUE
#define CH_DBG_ENABLE_CHECKS TRUE
#define CH_DBG_ENABLE_ASSERTS TRUE
#define CH_DBG_ENABLE_STACK_CHECK TRUE
#define CH_DBG_FILL_THREADS TRUE
#include_next <chconf.h>

View file

@ -0,0 +1,114 @@
/* Copyright 2020 QMK
*
* 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
/* USB Device descriptor parameter */
#undef VENDOR_ID
#define VENDOR_ID 0x1209
#undef PRODUCT_ID
#define PRODUCT_ID 0x345C
#undef DEVICE_VER
#define DEVICE_VER 0x0001
#undef MANUFACTURER
#define MANUFACTURER "https://github.com/stapelberg"
#undef PRODUCT
#define PRODUCT "kinT (kintlc)"
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 7
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS \
{ \
LINE_PIN8, /* ROW_EQL */ \
LINE_PIN9, /* ROW_1 */ \
LINE_PIN10, /* ROW_2 */ \
LINE_PIN11, /* ROW_3 */ \
LINE_PIN7, /* ROW_4 */ \
LINE_PIN16, /* ROW_5 */ \
LINE_PIN5, /* ROW_6 */ \
LINE_PIN3, /* ROW_7 */ \
LINE_PIN4, /* ROW_8 */ \
LINE_PIN1, /* ROW_9 */ \
LINE_PIN0, /* ROW_0 */ \
LINE_PIN2, /* ROW_MIN */ \
LINE_PIN17, /* ROW_ESC */ \
LINE_PIN23, /* ROW_F1 */ \
LINE_PIN21 /* ROW_F2 */ \
}
#define MATRIX_COL_PINS \
{ \
LINE_PIN18, /* COL_0 */ \
LINE_PIN14, /* COL_1 */ \
LINE_PIN15, /* COL_2 */ \
LINE_PIN20, /* COL_3 */ \
LINE_PIN22, /* COL_4 */ \
LINE_PIN19, /* COL_5 */ \
LINE_PIN6 /* COL_6 */ \
}
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Well-worn Cherry MX key switches can bounce for up to 20ms, despite the
* Cherry data sheet specifying 5ms. Because we use the sym_eager_pk debounce
* algorithm, this debounce latency only affects key releases (not key
* presses). */
#undef DEBOUNCE
#define DEBOUNCE 20
#define IGNORE_MOD_TAP_INTERRUPT
// The Teensy LC power consumption is unknown as per
// https://www.pjrc.com/store/teensylc.html but since
// https://www.pjrc.com/store/teensy41.html says 100mA, let's go with half.
#define USB_MAX_POWER_CONSUMPTION 50
/* We use the i.MX RT1060 high-speed GPIOs (GPIO6-9) which are connected to the
* AHB bus (AHB_CLK_ROOT), which runs at the same speed as the ARM Core Clock,
* i.e. 600 MHz. See MIMXRT1062, page 949, 12.1 Chip-specific GPIO information.
* No additional delay is necessary. */
// in clock cycles
#define GPIO_INPUT_PIN_DELAY 0
// The default "1" results in LEDs being on when they should be off and
// the other way around.
#define LED_PIN_ON_STATE 0
// Discussion about which Teensy LC pins can be used for driving staus LEDs:
// https://github.com/kinx-project/kint/issues/55
// Discussion about using Neopixel LEDs:
// https://github.com/kinx-project/kint/issues/32
// Available pins can be seen in:
// /lib/chibios-contrib/os/hal/boards/PJRC_TEENSY_LC/board.h
#define LED_CAPS_LOCK_PIN LINE_PIN12
#define LED_SCROLL_LOCK_PIN LINE_PIN25
#define LED_COMPOSE_PIN LINE_PIN24

View file

@ -0,0 +1,27 @@
/* Copyright 2020 QMK
*
* 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 "kintlc.h"
#define LED_POWER LINE_PIN13
void matrix_init_kb(void) {
matrix_init_user();
// Turn on the Teensy LC Power LED:
setPinOutput(LED_POWER);
writePinHigh(LED_POWER);
}

View file

@ -0,0 +1,92 @@
/* Copyright 2020 QMK
*
* 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 "quantum.h"
#define ___ KC_NO
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments as on the physical keyboard
// The second converts the arguments into the 2-D scanned array
#define LAYOUT( \
kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, \
k00, k10, k20, k30, k40, k50, \
k01, k11, k21, k31, k41, k51, \
k02, k12, k22, k32, k42, k52, \
k03, k13, k23, k33, k43, k53, \
k14, k24, k34, k54, \
k56, k55, \
k35, \
k36, k46, k25, \
\
kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
k60, k70, k80, k90, kA0, kB0, \
k61, k71, k81, k91, kA1, kB1, \
k62, k72, k82, k92, kA2, kB2, \
k63, k73, k83, k93, kA3, kB3, \
k64, k84, k94, kA4, \
k96, k85, \
k86, \
k66, k75, k65 \
) { \
{ k00, k01, k02, k03, ___, ___, ___ }, \
{ k10, k11, k12, k13, k14, ___, ___ }, \
{ k20, k21, k22, k23, k24, k25, ___ }, \
{ k30, k31, k32, k33, k34, k35, k36 }, \
{ k40, k41, k42, k43, ___, ___, k46 }, \
{ k50, k51, k52, k53, k54, k55, k56 }, \
{ k60, k61, k62, k63, k64, k65, k66 }, \
{ k70, k71, k72, k73, ___, k75, ___ }, \
{ k80, k81, k82, k83, k84, k85, k86 }, \
{ k90, k91, k92, k93, k94, ___, k96 }, \
{ kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
{ kB0, kB1, kB2, kB3, ___, ___, ___ }, \
{ kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
{ kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
{ kE0, kE1, kE2, kE3, kE4, kE5, ___ }, \
}
/* ---------------- LEFT HAND ----------------- ---------------- RIGHT HAND ---------------- */
#define LAYOUT_pretty( \
kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, kA0, kB0, \
k01, k11, k21, k31, k41, k51, k61, k71, k81, k91, kA1, kB1, \
k02, k12, k22, k32, k42, k52, k62, k72, k82, k92, kA2, kB2, \
k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, kA3, kB3, \
k14, k24, k34, k54, k64, k84, k94, kA4, \
k56, k55, k96, k85, \
k35, k86, \
k36, k46, k25, k66, k75, k65 \
) { \
{ k00, k01, k02, k03, ___, ___, ___ }, \
{ k10, k11, k12, k13, k14, ___, ___ }, \
{ k20, k21, k22, k23, k24, k25, ___ }, \
{ k30, k31, k32, k33, k34, k35, k36 }, \
{ k40, k41, k42, k43, ___, ___, k46 }, \
{ k50, k51, k52, k53, k54, k55, k56 }, \
{ k60, k61, k62, k63, k64, k65, k66 }, \
{ k70, k71, k72, k73, ___, k75, ___ }, \
{ k80, k81, k82, k83, k84, k85, k86 }, \
{ k90, k91, k92, k93, k94, ___, k96 }, \
{ kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
{ kB0, kB1, kB2, kB3, ___, ___, ___ }, \
{ kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
{ kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
{ kE0, kE1, kE2, kE3, kE4, kE5, ___ } \
}

View file

@ -0,0 +1,45 @@
/*
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef _MCUCONF_H_
#define _MCUCONF_H_
#define KL2x_MCUCONF
/*
* HAL driver system settings.
*/
/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */
#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE
#define KINETIS_PLLCLK_FREQUENCY 96000000UL
#define KINETIS_SYSCLK_FREQUENCY 48000000UL
/*
* SERIAL driver system settings.
*/
#define KINETIS_SERIAL_USE_UART0 TRUE
/*
* USB driver settings
*/
#define KINETIS_USB_USE_USB0 TRUE
/* Need to redefine this, since the default (configured for K20x) might not apply
* 2 for Teensy LC
* 5 for Teensy 3.x */
#define KINETIS_USB_USB0_IRQ_PRIORITY 2
#endif /* _MCUCONF_H_ */

View file

@ -0,0 +1,3 @@
# kinesis_kintlc keyboard firmware
Please see https://github.com/kinx-project/kint for details.

View file

@ -0,0 +1,9 @@
# MCU name
MCU = MKL26Z64
# This MCU is not in the main CHIBIOS repo but in the CHIBIOS_CONTRIB repo.
USE_CHIBIOS_CONTRIB = yes
# Debounce eagerly (report change immediately), keep per-key timers. We can use
# this because the Cherry MX keyswitches on the Kinesis only produce noise while
# pressed.
DEBOUNCE_TYPE = sym_eager_pk