Compare commits

...

25 Commits

Author SHA1 Message Date
631cd6bfb0 mess around with the length to fix pitches 2019-03-06 01:31:20 -05:00
8ac1ca5b64 working 2018-12-18 12:23:41 -05:00
48d0a1af28 Merge branch 'master' of github.com:qmk/qmk_firmware into peasy 2018-12-17 16:34:30 -05:00
399de15193 adjustments for i2c 2018-12-17 16:34:25 -05:00
ba4a599f13 proton c update for mcu selection 2018-12-16 13:01:42 -05:00
398204b2a0 EKeyboard: ErgoInu Configurator fix (#4665)
* ErgoInu: Configurator update, part 1

Give each key its own line to make the file easier to debug.

* ErgoInu: Configurator update, part 2

- converted all JSON variables to lowercase (this was the bugfix)
- converted Tabs to Spaces

* ErgoInu: Configurator update, part 3

- break key data into chunks

* ErgoInu: Configurator update, part 4

Rebuilt the layout tree into a new file, taking the Y values from the original data. Copied relevant data from original file into the new file, and then overwrote the original file.
2018-12-16 00:40:46 -08:00
5ec327ad99 Cospad Configurator and readme update (#4663)
* Cospad: Configurator update

- added LAYOUT_gamepad_6x4 data
  - renders as 4 rows by 6 columns visually
- fixed LAYOUT_numpad_6x4 data
  - JSON objects were in the wrong order

* Cospad: readme update

- markdown formatting fixes
- made Hardware Availability address a hyperlink
- updated Docs links
2018-12-15 13:39:34 -08:00
6172e55489 Ergo42: Configurator patch (#4664)
Wasn't rendering in Configurator as intended. Updated JSON data to use alias name instead of macro name.
2018-12-15 13:39:05 -08:00
973e3a7849 doc updates 2018-12-15 12:47:49 -05:00
738efb2529 update flag names 2018-12-15 12:01:44 -05:00
3ec4a00bfc Per Key Leader Timing Option (#4026)
* leader changes to enable per key timing option

* Changes requested to docs for @drashna

* Changes requested by @drashna
2018-12-15 07:29:24 -08:00
72bd17f290 converter/xt_usb: Configurator support (#4657) 2018-12-15 07:25:29 -08:00
11439c4326 Configurator support for Sun Type 3 and Type 5 USB converters (#4656)
* Sun Type 3 USB converter: Configurator support

* Sun Type 5 USB converter: Configurator support
2018-12-15 07:25:11 -08:00
ff5fcedb10 converter/palm_usb/stowaway: Configurator support (#4655) 2018-12-14 22:58:57 -08:00
2527fe879f converter/ibm_5291: Configurator support and readme cleanup (#4654)
* converter/ibm_5291: Configurator support

- added layout data to info.json file
- corrected keyboard_folder value

* converter/ibm_5291: readme cleanup

- Fixed "image" url (target of link was a web page; changed markdown formatting to text link)
- Sentence capitalization fixes
- markdown formatting fixes for readability
2018-12-14 22:58:30 -08:00
dcdc2e4924 disable backlight, fix d7 2018-12-15 01:12:54 -05:00
45591ee443 Keyboard: Chimera Ortho refactor (#4652)
* Layout macro refactor

- Renamed KC_KEYMAP to LAYOUT_kc
- Renamed KEYMAP to LAYOUT
- moved LAYOUT above LAYOUT_kc (Hoping this encourages users to use LAYOUT.)
- updated layout macro name in info.json
- white space changes for readability

* Keymap refactor: default

Default keymap now uses `#include QMK_KEYBOARD_H` and LAYOUT macro (from KC_KEYMAP/LAYOUT_kc). Keymap was also refactored to use process_record_user function instead of deprecated action_get_macro from TMK.

Also moved LONGPRESS_DELAY and LAYER_TOGGLE_DELAY definitions to config.h.

* Keymap refactor: dcompact

- Changed chimera_ortho.h include for QMK_KEYBOARD_H
- Updated layout name on keymap layers

* Coding conventions fix in default keymap

* Keymap refactor: gordon

- Changed chimera_ortho.h include for QMK_KEYBOARD_H
- Removed redundant includes of action_layer.h and process_tap_dance.h (superseded by QMK_KEYBOARD_H)
- Removed redundant definitions for KC_NO and KC_TRNS
- Updated layout name on keymap layers
2018-12-14 21:36:03 -08:00
44370bc35b add at90 to list 2018-12-14 23:43:50 -05:00
f8c07e05c2 add pin mapping and sweet16 test 2018-12-13 14:33:54 -05:00
255173f379 merge 2018-12-13 12:52:36 -05:00
d9ef323f8a start of mcu selection 2018-10-24 16:10:13 -04:00
57b21c037c initial proton coversion, no pin mapping 2018-10-23 23:57:54 -04:00
fd3c1aa909 adds readme.md 2018-10-23 20:38:50 -04:00
3d50a2867b fixes custom matrix include 2018-10-23 20:35:17 -04:00
0836e47e33 adds proton c base 2018-10-23 20:35:04 -04:00
58 changed files with 2484 additions and 3179 deletions

View File

@ -16,6 +16,7 @@ include common.mk
KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
STM32_PATH := quantum/stm32
# Force expansion
TARGET := $(TARGET)
@ -72,6 +73,7 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
endif
# Pull in rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
include $(KEYBOARD_PATH_5)/rules.mk
@ -89,6 +91,58 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
include $(KEYBOARD_PATH_1)/rules.mk
endif
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_5)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_4)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_3)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_2)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_1)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ($(LAYOUTS),)
include build_layout.mk
else
$(error Could not find keymap)
# this state should never be reached
endif
ifeq ($(strip $(CTPC)), yes)
CONVERT_TO_PROTON_C=yes
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
TARGET := $(TARGET)_proton_c
include $(STM32_PATH)/proton_c.mk
OPT_DEFS += -DCONVERT_TO_PROTON_C
endif
include quantum/mcu_selection.mk
ifdef MCU_FAMILY
OPT_DEFS += -DQMK_STM32
KEYBOARD_PATHS += $(STM32_PATH)
endif
# Find all the C source files to be compiled in subfolders.
KEYBOARD_SRC :=
@ -227,39 +281,6 @@ PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H)
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_5)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_4)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_3)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_2)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
-include $(MAIN_KEYMAP_PATH_1)/rules.mk
KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ($(LAYOUTS),)
include build_layout.mk
else
$(error Could not find keymap)
# this state should never be reached
endif
# Userspace setup and definitions
ifeq ("$(USER_NAME)","")
USER_NAME := $(KEYMAP)

View File

@ -115,7 +115,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
RGB_MATRIX_ENABLE ?= no
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 custom
VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 custom
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
$(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type)
@ -132,19 +132,26 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731)
OPT_DEFS += -DIS31FL3731
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3731.c
SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733)
OPT_DEFS += -DIS31FL3733
OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3733.c
SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737)
OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
SRC += is31fl3737.c
SRC += i2c_master.c
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
OPT_DEFS += -DTAP_DANCE_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c

View File

@ -1,100 +0,0 @@
* [Complete Newbs Guide](newbs.md)
* [Getting Started](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Testing and Debugging](newbs_testing_debugging.md)
* [Best Practices](newbs_best_practices.md)
* [Learning Resources](newbs_learn_more_resources.md)
* [QMK Basics](README.md)
* [QMK Introduction](getting_started_introduction.md)
* [Contributing to QMK](contributing.md)
* [How to Use Github](getting_started_github.md)
* [Getting Help](getting_started_getting_help.md)
* [FAQ](faq.md)
* [General FAQ](faq_general.md)
* [Build/Compile QMK](faq_build.md)
* [Debugging/Troubleshooting QMK](faq_debug.md)
* [Keymap](faq_keymap.md)
* Detailed Guides
* [Install Build Tools](getting_started_build_tools.md)
* [Vagrant Guide](getting_started_vagrant.md)
* [Build/Compile Instructions](getting_started_make_guide.md)
* [Flashing Firmware](flashing.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Keymap Overview](keymap.md)
* [Hardware](hardware.md)
* [AVR Processors](hardware_avr.md)
* [Drivers](hardware_drivers.md)
* Reference
* [Keyboard Guidelines](hardware_keyboard_guidelines.md)
* [Config Options](config_options.md)
* [Keycodes](keycodes.md)
* [Documentation Best Practices](documentation_best_practices.md)
* [Documentation Templates](documentation_templates.md)
* [Glossary](reference_glossary.md)
* [Unit Testing](unit_testing.md)
* [Useful Functions](ref_functions.md)
* [Configurator Support](reference_configurator_support.md)
* [Features](features.md)
* [Basic Keycodes](keycodes_basic.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* [Quantum Keycodes](quantum_keycodes.md)
* [Advanced Keycodes](feature_advanced_keycodes.md)
* [Audio](feature_audio.md)
* [Auto Shift](feature_auto_shift.md)
* [Backlight](feature_backlight.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Combos](feature_combo)
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Encoders](feature_encoders.md)
* [Grave Escape](feature_grave_esc.md)
* [Key Lock](feature_key_lock.md)
* [Layouts](feature_layouts.md)
* [Leader Key](feature_leader_key.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
* [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
* [Pointing Device](feature_pointing_device.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [RGB Lighting](feature_rgblight.md)
* [RGB Matrix](feature_rgb_matrix.md)
* [Space Cadet Shift](feature_space_cadet_shift.md)
* [Space Cadet Shift Enter](feature_space_cadet_shift_enter.md)
* [Stenography](feature_stenography.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Terminal](feature_terminal.md)
* [Thermal Printer](feature_thermal_printer.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* For Makers and Modders
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Other Topics
* [Using Eclipse with QMK](eclipse.md)
* [Support](support.md)
* QMK Internals (In Progress)
* [Defines](internals_defines.md)
* [Input Callback Reg](internals_input_callback_reg.md)
* [Midi Device](internals_midi_device.md)
* [Midi Device Setup Process](internals_midi_device_setup_process.md)
* [Midi Util](internals_midi_util.md)
* [Send Functions](internals_send_functions.md)
* [Sysex Tools](internals_sysex_tools.md)

View File

@ -81,6 +81,8 @@
* [ISP Flashing Guide](isp_flashing_guide.md)
* [ARM Debugging Guide](arm_debugging.md)
* [I2C Driver](i2c_driver.md)
* [GPIO Controls](internals_gpio_control.md)
* [Proton C Conversion](proton_c_conversion.md)
* For a Deeper Understanding
* [How Keyboards Work](how_keyboards_work.md)

View File

@ -143,6 +143,8 @@ If you define these options you will enable the associated feature, which may in
* Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
* `#define LEADER_TIMEOUT 300`
* how long before the leader key times out
* `#define LEADER_PER_KEY_TIMING`
* sets the timer for leader key chords to run on each key press rather than overall
* `#define ONESHOT_TIMEOUT 300`
* how long before oneshot times out
* `#define ONESHOT_TAP_TOGGLE 2`
@ -194,7 +196,7 @@ Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in yo
* `#define SPLIT_HAND_PIN B7`
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace 'B7' with the pin you are using. This is optional and you can still use the EEHANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
* `#define USE_I2C`
* For using I2C instead of Serial (defaults to serial)
@ -252,6 +254,8 @@ Use these to enable or disable building certain features. The more you have enab
* Enable the audio subsystem.
* `RGBLIGHT_ENABLE`
* Enable keyboard underlight functionality
* `LEADER_ENABLE`
* Enable leader key chording
* `MIDI_ENABLE`
* MIDI controls
* `UNICODE_ENABLE`

View File

@ -47,3 +47,26 @@ To add support for Leader Key you simply need to add a single line to your keyma
```
LEADER_ENABLE = yes
```
## Per Key Timing on Leader keys
Rather than relying on an incredibly high timeout for long leader key strings or those of us without 200wpm typing skills, we can enable per key timing to ensure that each key pressed provides us with more time to finish our stroke. This is incredibly helpful with leader key emulation of tap dance (read: multiple taps of the same key like C, C, C).
In order to enable this, place this in your `config.h`:
```
#define LEADER_PER_KEY_TIMING
```
After this, it's recommended that you lower your `LEADER_TIMEOUT` to something less that 300ms.
```
#define LEADER_TIMEOUT 250
```
Now, something like this won't seem impossible to do without a 1000MS leader key timeout:
```
SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
SEND_STRING("Per key timing is great!!!");
}
```

View File

@ -17,7 +17,7 @@
name: 'QMK Firmware',
nameLink: 'https://qmk.fm/',
repo: 'qmk/qmk_firmware',
loadSidebar: true,
loadSidebar: '_summary.md',
auto2top: true,
formatUpdated: '{YYYY}/{MM}/{DD} {HH}:{mm}',
search: {

View File

@ -0,0 +1,21 @@
# Converting a board to use the Proton C
If a board currently supported in QMK uses a Pro Micro (or compatible board) and you want to use the Proton C, you can generate the firmware by appending `CONVERT_TO_PROTON_C=yes` (or `CTPC=yes`) to your make argument, like this:
make 40percentclub/mf68:default CTPC=yes
You can add the same argument to your keymap's `rules.mk`, which will accomplish the same thing.
This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `#ifdef`s, like this:
#ifdef CONVERT_TO_PROTON_C
// Proton C code
#else
// Pro Micro code
#endif
Before being able to compile, you may get some errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](internals_gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:
#define CONVERT_TO_PROTON_C_RXLED

View File

@ -18,14 +18,14 @@
#define _BOARD_H_
/*
* Setup for Clueboard 60% Keyboard
* Setup for Generic STM32_F303 Board
*/
/*
* Board identifier.
*/
#define BOARD_GENERIC_STM32_F303XC
#define BOARD_NAME "Planck PCB"
#define BOARD_NAME "STM32_F303"
/*
* Board oscillators-related settings.

252
drivers/issi/is31fl3737.c Normal file
View File

@ -0,0 +1,252 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
*
* 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/>.
*/
#ifdef __AVR__
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#else
#include "wait.h"
#endif
#include <string.h>
#include "i2c_master.h"
#include "progmem.h"
#include "rgb_matrix.h"
// 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)
// The address will vary depending on your wiring:
// 00 <-> GND
// 01 <-> SCL
// 10 <-> SDA
// 11 <-> VCC
// ADDR1 represents A1:A0 of the 7-bit address.
// ADDR2 represents A3:A2 of the 7-bit address.
// The result is: 0b101(ADDR2)(ADDR1)
#define ISSI_ADDR_DEFAULT 0x50
#define ISSI_COMMANDREGISTER 0xFD
#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE
#define ISSI_INTERRUPTMASKREGISTER 0xF0
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
#define ISSI_PAGE_LEDCONTROL 0x00 //PG0
#define ISSI_PAGE_PWM 0x01 //PG1
#define ISSI_PAGE_AUTOBREATH 0x02 //PG2
#define ISSI_PAGE_FUNCTION 0x03 //PG3
#define ISSI_REG_CONFIGURATION 0x00 //PG3
#define ISSI_REG_GLOBALCURRENT 0x01 //PG3
#define ISSI_REG_RESET 0x11// PG3
#define ISSI_REG_SWPULLUP 0x0F //PG3
#define ISSI_REG_CSPULLUP 0x10 //PG3
#ifndef ISSI_TIMEOUT
#define ISSI_TIMEOUT 100
#endif
#ifndef ISSI_PERSISTENCE
#define ISSI_PERSISTENCE 0
#endif
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
// These buffers match the IS31FL3737 PWM registers.
// The control buffers match the PG0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in IS31FL3737_write_pwm_buffer() but it's
// probably not worth the extra complexity.
uint8_t g_pwm_buffer[DRIVER_COUNT][192];
bool g_pwm_buffer_update_required = false;
uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 } };
bool g_led_control_registers_update_required = false;
void IS31FL3737_write_register( uint8_t addr, uint8_t reg, uint8_t data )
{
g_twi_transfer_buffer[0] = reg;
g_twi_transfer_buffer[1] = data;
#if ISSI_PERSISTENCE > 0
for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) {
if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0)
break;
}
#else
i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT);
#endif
}
void IS31FL3737_write_pwm_buffer( uint8_t addr, uint8_t *pwm_buffer )
{
// assumes PG1 is already selected
// transmit PWM registers in 12 transfers of 16 bytes
// g_twi_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for ( int i = 0; i < 192; i += 16 ) {
g_twi_transfer_buffer[0] = i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer
for ( int j = 0; j < 16; j++ ) {
g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j];
}
#if ISSI_PERSISTENCE > 0
for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) {
if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) == 0)
break;
}
#else
i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT);
#endif
}
}
void IS31FL3737_init( uint8_t addr )
{
// In order to avoid the LEDs being driven with garbage data
// in the LED driver's PWM registers, shutdown is enabled last.
// Set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
// Unlock the command register.
IS31FL3737_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 );
// Select PG0
IS31FL3737_write_register( addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL );
// Turn off all LEDs.
for ( int i = 0x00; i <= 0x17; i++ )
{
IS31FL3737_write_register( addr, i, 0x00 );
}
// Unlock the command register.
IS31FL3737_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 );
// Select PG1
IS31FL3737_write_register( addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM );
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for ( int i = 0x00; i <= 0xBF; i++ )
{
IS31FL3737_write_register( addr, i, 0x00 );
}
// Unlock the command register.
IS31FL3737_write_register( addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 );
// Select PG3
IS31FL3737_write_register( addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION );
// Set global current to maximum.
IS31FL3737_write_register( addr, ISSI_REG_GLOBALCURRENT, 0xFF );
// Disable software shutdown.
IS31FL3737_write_register( addr, ISSI_REG_CONFIGURATION, 0x01 );
// Wait 10ms to ensure the device has woken up.
#ifdef __AVR__
_delay_ms( 10 );
#else
wait_ms(10);
#endif
}
void IS31FL3737_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
{
if ( index >= 0 && index < DRIVER_LED_TOTAL ) {
is31_led led = g_is31_leds[index];
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
g_pwm_buffer_update_required = true;
}
}
void IS31FL3737_set_color_all( uint8_t red, uint8_t green, uint8_t blue )
{
for ( int i = 0; i < DRIVER_LED_TOTAL; i++ )
{
IS31FL3737_set_color( i, red, green, blue );
}
}
void IS31FL3737_set_led_control_register( uint8_t index, bool red, bool green, bool blue )
{
is31_led led = g_is31_leds[index];
uint8_t control_register_r = led.r / 8;
uint8_t control_register_g = led.g / 8;
uint8_t control_register_b = led.b / 8;
uint8_t bit_r = led.r % 8;
uint8_t bit_g = led.g % 8;
uint8_t bit_b = led.b % 8;
if ( red ) {
g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r);
} else {
g_led_control_registers[led.driver][control_register_r] &= ~(1 << bit_r);
}
if ( green ) {
g_led_control_registers[led.driver][control_register_g] |= (1 << bit_g);
} else {
g_led_control_registers[led.driver][control_register_g] &= ~(1 << bit_g);
}
if ( blue ) {
g_led_control_registers[led.driver][control_register_b] |= (1 << bit_b);
} else {
g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b);
}
g_led_control_registers_update_required = true;
}
void IS31FL3737_update_pwm_buffers( uint8_t addr1, uint8_t addr2 )
{
if ( g_pwm_buffer_update_required )
{
// Firstly we need to unlock the command register and select PG1
IS31FL3737_write_register( addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 );
IS31FL3737_write_register( addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM );
IS31FL3737_write_pwm_buffer( addr1, g_pwm_buffer[0] );
//IS31FL3737_write_pwm_buffer( addr2, g_pwm_buffer[1] );
}
g_pwm_buffer_update_required = false;
}
void IS31FL3737_update_led_control_registers( uint8_t addr1, uint8_t addr2 )
{
if ( g_led_control_registers_update_required )
{
// Firstly we need to unlock the command register and select PG0
IS31FL3737_write_register( addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5 );
IS31FL3737_write_register( addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL );
for ( int i=0; i<24; i++ )
{
IS31FL3737_write_register(addr1, i, g_led_control_registers[0][i] );
//IS31FL3737_write_register(addr2, i, g_led_control_registers[1][i] );
}
}
}

207
drivers/issi/is31fl3737.h Normal file
View File

@ -0,0 +1,207 @@
/* Copyright 2017 Jason Williams
* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
*
* 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/>.
*/
#ifndef IS31FL3737_DRIVER_H
#define IS31FL3737_DRIVER_H
#include <stdint.h>
#include <stdbool.h>
typedef struct is31_led {
uint8_t driver:2;
uint8_t r;
uint8_t g;
uint8_t b;
} __attribute__((packed)) is31_led;
extern const is31_led g_is31_leds[DRIVER_LED_TOTAL];
void IS31FL3737_init( uint8_t addr );
void IS31FL3737_write_register( uint8_t addr, uint8_t reg, uint8_t data );
void IS31FL3737_write_pwm_buffer( uint8_t addr, uint8_t *pwm_buffer );
void IS31FL3737_set_color( int index, uint8_t red, uint8_t green, uint8_t blue );
void IS31FL3737_set_color_all( uint8_t red, uint8_t green, uint8_t blue );
void IS31FL3737_set_led_control_register( uint8_t index, bool red, bool green, bool blue );
// This should not be called from an interrupt
// (eg. from a timer interrupt).
// Call this while idle (in between matrix scans).
// If the buffer is dirty, it will update the driver with the buffer.
void IS31FL3737_update_pwm_buffers( uint8_t addr1, uint8_t addr2 );
void IS31FL3737_update_led_control_registers( uint8_t addr1, uint8_t addr2 );
#define A_1 0x00
#define A_2 0x01
#define A_3 0x02
#define A_4 0x03
#define A_5 0x04
#define A_6 0x05
#define A_7 0x08
#define A_8 0x09
#define A_9 0x0A
#define A_10 0x0B
#define A_11 0x0C
#define A_12 0x0D
#define B_1 0x10
#define B_2 0x11
#define B_3 0x12
#define B_4 0x13
#define B_5 0x14
#define B_6 0x15
#define B_7 0x18
#define B_8 0x19
#define B_9 0x1A
#define B_10 0x1B
#define B_11 0x1C
#define B_12 0x1D
#define C_1 0x20
#define C_2 0x21
#define C_3 0x22
#define C_4 0x23
#define C_5 0x24
#define C_6 0x25
#define C_7 0x28
#define C_8 0x29
#define C_9 0x2A
#define C_10 0x2B
#define C_11 0x2C
#define C_12 0x2D
#define D_1 0x30
#define D_2 0x31
#define D_3 0x32
#define D_4 0x33
#define D_5 0x34
#define D_6 0x35
#define D_7 0x38
#define D_8 0x39
#define D_9 0x3A
#define D_10 0x3B
#define D_11 0x3C
#define D_12 0x3D
#define E_1 0x40
#define E_2 0x41
#define E_3 0x42
#define E_4 0x43
#define E_5 0x44
#define E_6 0x45
#define E_7 0x48
#define E_8 0x49
#define E_9 0x4A
#define E_10 0x4B
#define E_11 0x4C
#define E_12 0x4D
#define F_1 0x50
#define F_2 0x51
#define F_3 0x52
#define F_4 0x53
#define F_5 0x54
#define F_6 0x55
#define F_7 0x58
#define F_8 0x59
#define F_9 0x5A
#define F_10 0x5B
#define F_11 0x5C
#define F_12 0x5D
#define G_1 0x60
#define G_2 0x61
#define G_3 0x62
#define G_4 0x63
#define G_5 0x64
#define G_6 0x65
#define G_7 0x68
#define G_8 0x69
#define G_9 0x6A
#define G_10 0x6B
#define G_11 0x6C
#define G_12 0x6D
#define H_1 0x70
#define H_2 0x71
#define H_3 0x72
#define H_4 0x73
#define H_5 0x74
#define H_6 0x75
#define H_7 0x78
#define H_8 0x79
#define H_9 0x7A
#define H_10 0x7B
#define H_11 0x7C
#define H_12 0x7D
#define I_1 0x80
#define I_2 0x81
#define I_3 0x82
#define I_4 0x83
#define I_5 0x84
#define I_6 0x85
#define I_7 0x88
#define I_8 0x89
#define I_9 0x8A
#define I_10 0x8B
#define I_11 0x8C
#define I_12 0x8D
#define J_1 0x90
#define J_2 0x91
#define J_3 0x92
#define J_4 0x93
#define J_5 0x94
#define J_6 0x95
#define J_7 0x98
#define J_8 0x99
#define J_9 0x9A
#define J_10 0x9B
#define J_11 0x9C
#define J_12 0x9D
#define K_1 0xA0
#define K_2 0xA1
#define K_3 0xA2
#define K_4 0xA3
#define K_5 0xA4
#define K_6 0xA5
#define K_7 0xA8
#define K_8 0xA9
#define K_9 0xAA
#define K_10 0xAB
#define K_11 0xAC
#define K_12 0xAD
#define L_1 0xB0
#define L_2 0xB1
#define L_3 0xB2
#define L_4 0xB3
#define L_5 0xB4
#define L_6 0xB5
#define L_7 0xB8
#define L_8 0xB9
#define L_9 0xBA
#define L_10 0xBB
#define L_11 0xBC
#define L_12 0xBD
#endif // IS31FL3737_DRIVER_H

View File

@ -6,9 +6,9 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_ortho_4x4(
KC_7, KC_8, KC_9, KC_ASTR,
KC_4, KC_5, KC_6, KC_SLSH,
KC_1, KC_2, KC_3, KC_MINS,
KC_7, KC_8, KC_9, KC_ASTR,
KC_4, KC_5, KC_6, KC_SLSH,
KC_1, KC_2, KC_3, KC_MINS,
KC_0, KC_ENT, KC_DOT, KC_EQL
)
};
@ -27,6 +27,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
void led_set_user(uint8_t usb_led) {
#ifndef CONVERT_TO_PROTON_C
/* Map RXLED to USB_LED_NUM_LOCK */
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
DDRB |= (1 << 0); PORTB &= ~(1 << 0);
@ -40,4 +41,5 @@ void led_set_user(uint8_t usb_led) {
} else {
DDRD &= ~(1 << 5); PORTD &= ~(1 << 5);
}
#endif
}

View File

@ -49,31 +49,32 @@
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define KC_KEYMAP( \
#define LAYOUT( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
k45, k46, k47, k48 \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
k45, k46, k47, k48 \
) \
{ \
{ KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
{ KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
{ KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
{ KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
{ KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO }, \
{ k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
{ k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
{ k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
{ KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
{ KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO } \
}
#define KEYMAP( \
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44,\
k45, k46, k47, k48 \
k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
k45, k46, k47, k48 \
) \
{ \
{ k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
{ k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
{ k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
{ KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
{ KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO }, \
{ KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k08, KC_##k09, KC_##k10, KC_##k11, KC_##k12 }, \
{ KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26 }, \
{ KC_##k29, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k37, KC_##k38, KC_##k41, KC_##k42, KC_##k43 }, \
{ KC_NO, KC_##k06, KC_##k20, KC_##k35, KC_##k46, KC_##k47, KC_##k36, KC_##k21, KC_##k07, KC_NO }, \
{ KC_NO, KC_##k28, KC_##k14, KC_##k00, KC_##k45, KC_##k48, KC_##k13, KC_##k27, KC_##k44, KC_NO } \
}
#endif

View File

@ -1,240 +1,58 @@
{
"keyboard_name": "Chimera Ortho",
"keyboard_folder": "chimera_ortho",
"maintainer": "qmk",
"width": 15.5,
"height": 4.25,
"layouts": {
"KEYMAP": {
"LAYOUT": {
"layout": [
{
"label": "Esc",
"x": 0,
"y": 0
},
{
"label": "Q",
"x": 1,
"y": 0
},
{
"label": "W",
"x": 2,
"y": 0
},
{
"label": "E",
"x": 3,
"y": 0
},
{
"label": "R",
"x": 4,
"y": 0
},
{
"label": "T",
"x": 5,
"y": 0
},
{
"label": "{",
"x": 6,
"y": 0
},
{
"label": "}",
"x": 8.5,
"y": 0
},
{
"label": "Y",
"x": 9.5,
"y": 0
},
{
"label": "U",
"x": 10.5,
"y": 0
},
{
"label": "I",
"x": 11.5,
"y": 0
},
{
"label": "O",
"x": 12.5,
"y": 0
},
{
"label": "P",
"x": 13.5,
"y": 0
},
{
"label": "\"",
"x": 14.5,
"y": 0
},
{
"label": "Tab",
"x": 0,
"y": 1
},
{
"label": "A",
"x": 1,
"y": 1
},
{
"label": "S",
"x": 2,
"y": 1
},
{
"label": "D",
"x": 3,
"y": 1
},
{
"label": "F",
"x": 4,
"y": 1
},
{
"label": "G",
"x": 5,
"y": 1
},
{
"label": "-",
"x": 6,
"y": 1
},
{
"label": "1",
"x": 8.5,
"y": 1
},
{
"label": "H",
"x": 9.5,
"y": 1
},
{
"label": "J",
"x": 10.5,
"y": 1
},
{
"label": "K",
"x": 11.5,
"y": 1
},
{
"label": "L",
"x": 12.5,
"y": 1
},
{
"label": ";",
"x": 13.5,
"y": 1
},
{
"label": "Enter",
"x": 14.5,
"y": 1
},
{
"label": "(",
"x": 0,
"y": 2
},
{
"label": "Z",
"x": 1,
"y": 2
},
{
"label": "X",
"x": 2,
"y": 2
},
{
"label": "C",
"x": 3,
"y": 2
},
{
"label": "V",
"x": 4,
"y": 2
},
{
"label": "B",
"x": 5,
"y": 2
},
{
"label": "=",
"x": 6,
"y": 2
},
{
"label": "8",
"x": 8.5,
"y": 2
},
{
"label": "N",
"x": 9.5,
"y": 2
},
{
"label": "M",
"x": 10.5,
"y": 2
},
{
"label": ",",
"x": 11.5,
"y": 2
},
{
"label": ".",
"x": 12.5,
"y": 2
},
{
"label": "/",
"x": 13.5,
"y": 2
},
{
"label": ")",
"x": 14.5,
"y": 2
},
{
"label": "Num Layer",
"x": 4,
"y": 3.25
},
{
"label": "Back Space",
"x": 5,
"y": 3.25
},
{
"label": "Space",
"x": 9.5,
"y": 3.25
},
{
"label": "Symbol Layer",
"x": 10.5,
"y": 3.25
}
{"label": "Esc", "x": 0, "y": 0},
{"label": "Q", "x": 1, "y": 0},
{"label": "W", "x": 2, "y": 0},
{"label": "E", "x": 3, "y": 0},
{"label": "R", "x": 4, "y": 0},
{"label": "T", "x": 5, "y": 0},
{"label": "{", "x": 6, "y": 0},
{"label": "}", "x": 8.5, "y": 0},
{"label": "Y", "x": 9.5, "y": 0},
{"label": "U", "x": 10.5, "y": 0},
{"label": "I", "x": 11.5, "y": 0},
{"label": "O", "x": 12.5, "y": 0},
{"label": "P", "x": 13.5, "y": 0},
{"label": "\"", "x": 14.5, "y": 0},
{"label": "Tab", "x": 0, "y": 1},
{"label": "A", "x": 1, "y": 1},
{"label": "S", "x": 2, "y": 1},
{"label": "D", "x": 3, "y": 1},
{"label": "F", "x": 4, "y": 1},
{"label": "G", "x": 5, "y": 1},
{"label": "-", "x": 6, "y": 1},
{"label": "1", "x": 8.5, "y": 1},
{"label": "H", "x": 9.5, "y": 1},
{"label": "J", "x": 10.5, "y": 1},
{"label": "K", "x": 11.5, "y": 1},
{"label": "L", "x": 12.5, "y": 1},
{"label": ";", "x": 13.5, "y": 1},
{"label": "Enter", "x": 14.5, "y": 1},
{"label": "(", "x": 0, "y": 2},
{"label": "Z", "x": 1, "y": 2},
{"label": "X", "x": 2, "y": 2},
{"label": "C", "x": 3, "y": 2},
{"label": "V", "x": 4, "y": 2},
{"label": "B", "x": 5, "y": 2},
{"label": "=", "x": 6, "y": 2},
{"label": "8", "x": 8.5, "y": 2},
{"label": "N", "x": 9.5, "y": 2},
{"label": "M", "x": 10.5, "y": 2},
{"label": ", ", "x": 11.5, "y": 2},
{"label": ".", "x": 12.5, "y": 2},
{"label": "/", "x": 13.5, "y": 2},
{"label": ")", "x": 14.5, "y": 2},
{"label": "Num Layer", "x": 4, "y": 3.25},
{"label": "Back Space", "x": 5, "y": 3.25},
{"label": "Space", "x": 9.5, "y": 3.25},
{"label": "Symbol Layer", "x": 10.5, "y": 3.25}
]
}
}

View File

@ -1,4 +1,4 @@
#include "chimera_ortho.h"
#include QMK_KEYBOARD_H
enum chimera_ortho_layers
{
@ -34,7 +34,7 @@ enum chimera_ortho_layers
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = KC_KEYMAP(
[_BASE] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
LALT ,TAB ,QUOT ,COMM ,DOT ,P ,Y ,F ,G ,C ,R ,L ,SLSH ,FUNC
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_NAV] = KC_KEYMAP(
[_NAV] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
, , , , , , , ,HOME ,PGDOWN ,PGUP ,END , ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_SYM] = KC_KEYMAP(
[_SYM] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
,QUAKE ,GRAVE ,TILDE ,BSLASH ,PIPE ,LPRN ,RPRN ,7 ,8 ,9 ,SLSH ,EQUAL ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_FUNC] = KC_KEYMAP(
[_FUNC] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
,RESET ,SLEP ,MRWD ,MPLY ,MFFD , , ,F9 ,F10 ,F11 ,F12 , ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//\-------------------------------+-------+-------+-------/ \-------+-------+---------------------------------------/
),
[_MOUSE] = KC_KEYMAP(
[_MOUSE] = LAYOUT_kc(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
, , , , , , , , , , , , ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|

View File

@ -0,0 +1,5 @@
#pragma once
// place overrides here
#define LONGPRESS_DELAY 150
//#define LAYER_TOGGLE_DELAY 300

View File

@ -1,20 +1,19 @@
// this is the style you want to emulate.
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#include "chimera_ortho.h"
#include QMK_KEYBOARD_H
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
enum chimera_ortho_layers
{
_QWERTY,
_CAPS,
_NUMPAD,
_SYMBOLS,
_MACROS,
_NAV
enum chimera_ortho_layers {
_QWERTY,
_CAPS,
_NUMPAD,
_SYMBOLS,
_MACROS,
_NAV
};
#define KC_NMPD TG(_NUMPAD)
@ -27,153 +26,140 @@ enum chimera_ortho_layers
#define KC_GBRC MT(MOD_RGUI, KC_8)
#define KC_GQOT MT(MOD_LGUI, KC_QUOT)
#define KC_MESC LT(_MACROS, KC_ESC)
#define KC_INCL M(0)
#define KC_PULL M(1)
#define KC_PUSH M(2)
#define KC_SCAP M(3)
#define KC_SCOF M(4)
#define KC_CAD LALT(LCTL(KC_DEL))
#define LONGPRESS_DELAY 150
//#define LAYER_TOGGLE_DELAY 300
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define KC_ KC_TRNS
enum custom_keycodes {
KC_INCL = SAFE_RANGE,
KC_PULL,
KC_PUSH,
KC_SCAP,
KC_SCOF
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
MESC, Q , W , E , R , T ,SCTL, SCTR, Y , U , I , O , P ,QUOT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TAB , A , S , D , F , G ,SPLT, SPRT, H , J , K , L ,SCLN,ENT ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LSPO, Z , X , C , V , B ,SPFN, GBRC, N , M ,COMM,DOT ,SLSH,RSPC,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
NMPD,BSPC, SPC ,SYMB
// \------------------+----+----+---/ \---+----+----+-------------------/
[_QWERTY] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
KC_MESC, KC_Q , KC_W , KC_E , KC_R , KC_T ,KC_SCTL, KC_SCTR, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_QUOT,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G ,KC_SPLT, KC_SPRT, KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_ENT ,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_SPFN, KC_GBRC, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_NMPD,KC_BSPC, KC_SPC ,KC_SYMB
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_CAPS] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , ,UNDS, , , , , ,COLN, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
SCOF, , , , , , , , , , , , ,SCOF,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_CAPS] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,KC_UNDS, _______,_______,_______,_______,_______,KC_COLN,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_SCOF,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,KC_SCOF,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______, _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_NUMPAD] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, ,COLN , , , , , , , 7 , 8 , 9 ,ASTR,MINS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, ,DOT , , , , , , , 4 , 5 , 6 ,PLUS, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , 1 , 2 , 3 ,SLSH, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , 0
// \------------------+----+----+---/ \---+----+----+-------------------/
[_NUMPAD] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,KC_COLN,_______,_______,_______,_______, _______,_______, KC_7 , KC_8 , KC_9 ,KC_ASTR,KC_MINS,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,KC_DOT ,_______,_______,_______,_______, _______,_______, KC_4 , KC_5 , KC_6 ,KC_PLUS,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_1 , KC_2 , KC_3 ,KC_SLSH,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______, _______, KC_0
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_SYMBOLS] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
,EXLM, AT ,HASH,DLR ,PERC, , ,CIRC,AMPR,ASTR,LPRN,RPRN,BSLS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, F1 , F2 , F3 , F4 , F5 , , ,TILD,COLN,UNDS,LCBR,RCBR, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, F6 , F7 , F8 , F9 ,F10 , , ,GRV ,SCLN,MINS,LBRC,RBRC, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
PIPE, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_SYMBOLS] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC,_______, _______,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSLS,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,_______, _______,KC_TILD,KC_COLN,KC_UNDS,KC_LCBR,KC_RCBR,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______, KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,_______, _______,KC_GRV ,KC_SCLN,KC_MINS,KC_LBRC,KC_RBRC,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_PIPE,_______, _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_NAV] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , , UP , ,PSCR, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , ,LEFT,DOWN,RGHT, , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , ,PGUP,PGDN, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
,DEL , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_NAV] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, KC_UP ,_______,KC_PSCR,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_PGUP,KC_PGDN,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,KC_DEL , _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
),
[_MACROS] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , ,INCL, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,CAD , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
SCAP, , , , , , , , , ,PULL,PUSH, ,SCAP,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
[_MACROS] = LAYOUT(
//,-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,KC_INCL,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______,_______,KC_CAD ,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
KC_SCAP,_______,_______,_______,_______,_______,_______, _______,_______,_______,KC_PULL,KC_PUSH,_______,KC_SCAP,
//|-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
_______,_______, _______,_______
// \------------------------------+-------+-------+------/ \------+-------+-------+------------------------------/
)
};
const uint16_t PROGMEM fn_actions[] = {
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
/* include some kind of library or header */
case 0:
case KC_INCL:
if (record->event.pressed) {
SEND_STRING("#include <>");
return MACRO( T(LEFT), END);
SEND_STRING("#include <>" SS_TAP(X_LEFT));
}
break;
case 1:
return false;
case KC_PULL:
if (record->event.pressed) {
SEND_STRING("git pull");
return MACRO( T(ENT), END );
SEND_STRING("git pull" SS_TAP(X_ENTER));
}
break;
case 2:
return false;
case KC_PUSH:
if (record->event.pressed){
SEND_STRING("git push");
return MACRO( T(ENT), END );
SEND_STRING("git push" SS_TAP(X_ENTER));
}
break;
case 3:
return false;
case KC_SCAP:
if (record->event.pressed){
layer_on(_CAPS);
register_code(KC_CAPSLOCK);
unregister_code(KC_CAPSLOCK);
}
break;
case 4:
return false;
case KC_SCOF:
if (record->event.pressed){
layer_off(_CAPS);
register_code(KC_CAPSLOCK);
unregister_code(KC_CAPSLOCK);
}
break;
return false;
}
return MACRO_NONE;
return true;
};
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
switch (layer) {
case _QWERTY:
set_led_green;
break;
case _QWERTY:
set_led_green;
break;
case _CAPS:
set_led_white;
break;
set_led_white;
break;
case _NUMPAD:
set_led_blue;
break;
@ -181,11 +167,11 @@ void matrix_scan_user(void) {
set_led_red;
break;
case _NAV:
set_led_magenta;
break;
set_led_magenta;
break;
case _MACROS:
set_led_cyan;
break;
set_led_cyan;
break;
default:
set_led_green;
break;

View File

@ -1,10 +1,8 @@
// this is the style you want to emulate.
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#include "chimera_ortho.h"
#include "action_layer.h"
#include QMK_KEYBOARD_H
#include "version.h"
#include "process_keycode/process_tap_dance.h"
#include "gordon.h"
// Each layer gets a name for readability, which is then used in the keymap matrix below.
@ -83,11 +81,9 @@
//#define LAYER_TOGGLE_DELAY 300
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define KC_ KC_TRNS
#define KC_ KC_TRNS
/* TODO:
/* TODO:
*
* DONE: RESET and CAD into macro layer.
* DONE: WINUP AND WINDOWN in NAV layer
@ -113,7 +109,7 @@
* Russain layer
* Hebrew layer
* Get rid of stupid git pull and push macros.
*
*
*/
//Tap dance enums
@ -127,14 +123,14 @@ enum {
CALC_PRINTSCREEN
};
static xtap ttt_state = {
static xtap ttt_state = {
.is_press_action = true,
.state = 0
};
//Already exists in gordon.c, shouldn't need this anymore
/*// To activate SINGLE_HOLD, you will need to hold for 200ms first.
/*// To activate SINGLE_HOLD, you will need to hold for 200ms first.
// This tap dance favors keys that are used frequently in typing like 'f'
int cur_dance (qk_tap_dance_state_t *state) {
if (state->count == 1) {
@ -151,8 +147,8 @@ int cur_dance (qk_tap_dance_state_t *state) {
else if (state->count == 2) {
if (state->interrupted) return DOUBLE_SINGLE_TAP;
else if (state->pressed) return DOUBLE_HOLD;
else return DOUBLE_TAP;
}
else return DOUBLE_TAP;
}
else if ((state->count == 3) && ((state->interrupted) || (!state->pressed))) return TRIPLE_TAP;
else if (state->count == 3) return TRIPLE_HOLD;
else return 8; //magic number. At some point this method will expand to work for more presses
@ -194,7 +190,7 @@ void TTT_reset (qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_action_t tap_dance_actions[] = {
// simple tap dance
[F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
[F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),
[CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
[CALC_PRINTSCREEN] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_PSCR),
[ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
@ -206,7 +202,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KC_KEYMAP(
[_QWERTY] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
MESC, Q ,CSHW,ENAV, R , T ,SPC , CLPS, Y , U ,INAV, O , P ,TTT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -218,7 +214,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_NUMPAD] = KC_KEYMAP(
[_NUMPAD] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , ,ASTR, , , , , 7 , 8 , 9 ,ASTR,/**/,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -226,11 +222,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , ,SLSH, , , , , 1 , 2 , 3 ,SLSH, ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , 0
, , , 0
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_SYMBOLS] = KC_KEYMAP(
[_SYMBOLS] = LAYOUT_kc(
//,----+----+-----+----+----+----+----. ,----+----+----+----+----+----+----.
,EXLM, AT ,LCBR,RCBR,HASH, , ,CIRC,AMPR,ASTR,LPRN,RPRN,/**/,
//|----+----+-----+----+----+----+----| |----+----+----+----+----+----+----|
@ -242,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// \-------------------+----+----+---/ \---+----+----+-------------------/
),
[_FUNCTION] = KC_KEYMAP(
[_FUNCTION] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
F6F7 ,F1 ,F2 ,F3 ,ALF4,F5 ,F6 , F7 ,F8 ,F9 ,F10 ,F11 ,F12 ,/**/,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -250,11 +246,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_NAV] = KC_KEYMAP(
[_NAV] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, ,SNAPLEFT,/**/,SNAPRIGHT,, , , , , UP , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -262,11 +258,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, ,WORKLEFT, ,WORKRIGHT,, , , ,PGUP,PGDN, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
CDEL ,DEL, ,
CDEL ,DEL, ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_TEXTNAV] = KC_KEYMAP(
[_TEXTNAV] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , , , , , , , , ,/**/, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -274,11 +270,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
[_MOUSE] = KC_KEYMAP(
[_MOUSE] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
, , ,MS_UP, , , , , , , UP , , , ,/**/
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -286,12 +282,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , , , , , , , , , , , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
,MS_BTN1 ,MS_BTN2 ,
,MS_BTN1 ,MS_BTN2 ,
// \------------------+----+----+---/ \---+----+----+-------------------/
),
),
[_MACROS] = KC_KEYMAP(
[_MACROS] = LAYOUT_kc(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
/**/,RESET,SECRET_2,SECRET_3, , , ,SYSTEM_SLEEP, , ,INCL, , , ,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
@ -299,7 +295,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
SCAP, , , , , , , , , , , , ,SCAP,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
, , ,
, , ,
// \------------------+----+----+---/ \---+----+----+-------------------/
)
@ -349,11 +345,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
return MACRO_NONE;
};
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
switch (layer) {
case _QWERTY:
set_led_green;
@ -381,7 +377,7 @@ void matrix_scan_user(void) {
_delay_ms(45);
set_led_blue;
_delay_ms(45);
break;
break;
default:
set_led_green;
break;

View File

@ -1,6 +1,97 @@
{
"keyboard_name": "IBM 5291",
"keyboard_folder": "converter/5291",
"keyboard_folder": "converter/ibm_5291",
"url": "https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard",
"maintainer": "listofoptions"
"maintainer": "listofoptions",
"width": 21,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Sys Req", "x":0, "y":0},
{"label":"Cmd", "x":1, "y":0},
{"label":"`", "x":2.25, "y":0},
{"label":"1", "x":3.25, "y":0},
{"label":"2", "x":4.25, "y":0},
{"label":"3", "x":5.25, "y":0},
{"label":"4", "x":6.25, "y":0},
{"label":"5", "x":7.25, "y":0},
{"label":"6", "x":8.25, "y":0},
{"label":"7", "x":9.25, "y":0},
{"label":"8", "x":10.25, "y":0},
{"label":"9", "x":11.25, "y":0},
{"label":"0", "x":12.25, "y":0},
{"label":"-", "x":13.25, "y":0},
{"label":"=", "x":14.25, "y":0},
{"label":"Backspace", "x":15.25, "y":0, "w":1.75},
{"label":"Reverse Tab", "x":17, "y":0, "w":2},
{"label":"Dup", "x":19, "y":0, "w":2},
{"label":"Del", "x":0, "y":1},
{"label":"Erase Input", "x":1, "y":1},
{"label":"Tab", "x":2.25, "y":1, "w":1.5},
{"label":"Q", "x":3.75, "y":1},
{"label":"W", "x":4.75, "y":1},
{"label":"E", "x":5.75, "y":1},
{"label":"R", "x":6.75, "y":1},
{"label":"T", "x":7.75, "y":1},
{"label":"Y", "x":8.75, "y":1},
{"label":"U", "x":9.75, "y":1},
{"label":"I", "x":10.75, "y":1},
{"label":"O", "x":11.75, "y":1},
{"label":"P", "x":12.75, "y":1},
{"label":"&cent;", "x":13.75, "y":1},
{"label":"\\", "x":14.75, "y":1, "w":1.25},
{"label":"7", "x":17, "y":1},
{"label":"8", "x":18, "y":1},
{"label":"9", "x":19, "y":1},
{"label":"Field -", "x":20, "y":1},
{"label":"Print", "x":0, "y":2},
{"label":"Help", "x":1, "y":2},
{"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
{"label":"A", "x":4, "y":2},
{"label":"S", "x":5, "y":2},
{"label":"D", "x":6, "y":2},
{"label":"F", "x":7, "y":2},
{"label":"G", "x":8, "y":2},
{"label":"H", "x":9, "y":2},
{"label":"J", "x":10, "y":2},
{"label":"K", "x":11, "y":2},
{"label":"L", "x":12, "y":2},
{"label":";", "x":13, "y":2},
{"label":"'", "x":14, "y":2},
{"label":"{", "x":15, "y":2},
{"label":"Field Exit", "x":16, "y":1, "h":2},
{"label":"4", "x":17, "y":2},
{"label":"5", "x":18, "y":2},
{"label":"6", "x":19, "y":2},
{"label":"Roll Up", "x":0, "y":3},
{"label":"Roll Down", "x":1, "y":3},
{"label":"Shift", "x":2.25, "y":3, "w":1.25},
{"label":"<", "x":3.5, "y":3},
{"label":"Z", "x":4.5, "y":3},
{"label":"X", "x":5.5, "y":3},
{"label":"C", "x":6.5, "y":3},
{"label":"V", "x":7.5, "y":3},
{"label":"B", "x":8.5, "y":3},
{"label":"N", "x":9.5, "y":3},
{"label":"M", "x":10.5, "y":3},
{"label":",", "x":11.5, "y":3},
{"label":".", "x":12.5, "y":3},
{"label":"/", "x":13.5, "y":3},
{"label":"Shift", "x":14.5, "y":3, "w":1.5},
{"label":"Return", "x":16, "y":3},
{"label":"1", "x":17, "y":3},
{"label":"2", "x":18, "y":3},
{"label":"3", "x":19, "y":3},
{"label":"Field +", "x":20, "y":2, "h":3},
{"label":"Left", "x":0, "y":4},
{"label":"Right", "x":1, "y":4},
{"label":"Error Reset", "x":2.25, "y":4, "w":2},
{"label":"Space", "x":4.25, "y":4, "w":9.75},
{"label":"Enter Rec Adv", "x":14, "y":4, "w":2},
{"label":"0", "x":16, "y":4, "w":2},
{"label":".", "x":18, "y":4, "w":2}
]
}
}
}

View File

@ -1,6 +1,6 @@
# IBM 5291 keyboard converter
![5291](https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard)
[IBM 5291](https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard)
A converter for the eponymous keyboard.
@ -14,7 +14,7 @@ Make example for this keyboard (after setting up your build environment):
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).
the pinout is as follows:
The pinout is as follows:
IBM5291Cable to Pinhead14
@ -35,7 +35,8 @@ IBM5291Cable to Pinhead14
13| Strobe
14| Out
the pins on this connector are organized ![here](https://geekhack.org/index.php?action=dlattach;topic=48950.0;attach=36759;image)
The pins on this connector are organized
![here](https://geekhack.org/index.php?action=dlattach;topic=48950.0;attach=36759;image)
IBM52912 Cable with DB15M connector
@ -55,10 +56,11 @@ IBM52912 Cable with DB15M connector
|14 | PE
|15 | NC
the above connector is actually numbered so it should be easier to determine
The above connector is actually numbered so it should be easier to determine
where the needed connections are.
to connect to the teensy, the following are pins are needed (if you should choose not set your own):
To connect to the teensy, the following are pins are needed (if you should choose not set your own):
* PB0 -> PB6 are connected to D0 -> D6
* +5V is connected to the corresponding teensy pin
* gnd is as well, only one of the gnd pins needs to be connected though.

View File

@ -0,0 +1,83 @@
{
"keyboard_name": "Palm Stowaway Serial",
"keyboard_folder": "converter/palm_usb/stowaway",
"url": "",
"maintainer": "qmk",
"width": 15.25,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"1", "x":0.5, "y":0},
{"label":"2", "x":1.5, "y":0},
{"label":"3", "x":2.5, "y":0},
{"label":"4", "x":3.5, "y":0},
{"label":"5", "x":4.5, "y":0},
{"label":"6", "x":5.5, "y":0},
{"label":"7", "x":6.5, "y":0},
{"label":"8", "x":7.5, "y":0},
{"label":"9", "x":8.5, "y":0},
{"label":"0", "x":9.5, "y":0},
{"label":"MINS", "x":10.5, "y":0},
{"label":"EQL", "x":11.5, "y":0},
{"label":"BACK", "x":12.5, "y":0, "w":1.5},
{"label":"APP0", "x":14.25, "y":1, "h":0.6875},
{"label":"TAB", "x":0, "y":1},
{"label":"Q", "x":1, "y":1},
{"label":"W", "x":2, "y":1},
{"label":"E", "x":3, "y":1},
{"label":"R", "x":4, "y":1},
{"label":"T", "x":5, "y":1},
{"label":"Y", "x":6, "y":1},
{"label":"U", "x":7, "y":1},
{"label":"I", "x":8, "y":1},
{"label":"O", "x":9, "y":1},
{"label":"P", "x":10, "y":1},
{"label":"LBRC", "x":11, "y":1},
{"label":"RBRC", "x":12, "y":1},
{"label":"BSLS", "x":13, "y":1},
{"label":"APP1", "x":14.25, "y":1.6875, "h":0.6875},
{"label":"CAPS", "x":0, "y":2, "w":1.25},
{"label":"A", "x":1.25, "y":2},
{"label":"S", "x":2.25, "y":2},
{"label":"D", "x":3.25, "y":2},
{"label":"F", "x":4.25, "y":2},
{"label":"G", "x":5.25, "y":2},
{"label":"H", "x":6.25, "y":2},
{"label":"J", "x":7.25, "y":2},
{"label":"K", "x":8.25, "y":2},
{"label":"L", "x":9.25, "y":2},
{"label":"SCLN", "x":10.25, "y":2},
{"label":"QUOT", "x":11.25, "y":2},
{"label":"ENT", "x":12.25, "y":2, "w":1.75},
{"label":"APP2", "x":14.25, "y":2.375, "h":0.6875},
{"label":"LSFT", "x":0, "y":3, "w":1.75},
{"label":"Z", "x":1.75, "y":3},
{"label":"X", "x":2.75, "y":3},
{"label":"C", "x":3.75, "y":3},
{"label":"V", "x":4.75, "y":3},
{"label":"B", "x":5.75, "y":3},
{"label":"N", "x":6.75, "y":3},
{"label":"M", "x":7.75, "y":3},
{"label":"COMM", "x":8.75, "y":3},
{"label":"DOT", "x":9.75, "y":3},
{"label":"SLSH", "x":10.75, "y":3},
{"label":"RSFT", "x":11.75, "y":3, "w":1.25},
{"label":"UP", "x":13, "y":3},
{"label":"APP3", "x":14.25, "y":3.0625, "h":0.6875},
{"label":"LCTL", "x":0, "y":4, "w":1.25},
{"label":"FN", "x":1.25, "y":4},
{"label":"LALT", "x":2.25, "y":4},
{"label":"CMD", "x":3.25, "y":4},
{"label":"SPACE", "x":4.25, "y":4, "w":3.5},
{"label":"SPACE/New", "x":7.75, "y":4},
{"label":"GRAVE", "x":8.75, "y":4},
{"label":"DONE", "x":9.75, "y":4},
{"label":"DEL", "x":10.75, "y":4, "w":1.25},
{"label":"LEFT", "x":12, "y":4},
{"label":"DOWN", "x":13, "y":4},
{"label":"RIGHT", "x":14, "y":4}
]
}
}
}

View File

@ -0,0 +1,109 @@
{
"keyboard_name": "Sun Type 3",
"keyboard_folder": "converter/sun_usb/type3",
"url": "",
"maintainer": "qmk",
"width": 21,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"STOP", "x":0, "y":0},
{"label":"AGAIN", "x":1, "y":0},
{"label":"CAPS LOCK", "x":2.5, "y":0},
{"label":"F2", "x":3.5, "y":0},
{"label":"F3", "x":4.5, "y":0, "w":2},
{"label":"F4", "x":6.5, "y":0, "w":2},
{"label":"F5", "x":8.5, "y":0, "w":2},
{"label":"F6", "x":10.5, "y":0, "w":2},
{"label":"F7", "x":12.5, "y":0, "w":2},
{"label":"F8", "x":14.5, "y":0},
{"label":"F9", "x":15.5, "y":0},
{"label":"BACKSPACE", "x":16.5, "y":0},
{"label":"R1", "x":18, "y":0},
{"label":"R2", "x":19, "y":0},
{"label":"R3", "x":20, "y":0},
{"label":"PROPS", "x":0, "y":1},
{"label":"UNDO", "x":1, "y":1},
{"label":"ESC", "x":2.5, "y":1},
{"label":"1", "x":3.5, "y":1},
{"label":"2", "x":4.5, "y":1},
{"label":"3", "x":5.5, "y":1},
{"label":"4", "x":6.5, "y":1},
{"label":"5", "x":7.5, "y":1},
{"label":"6", "x":8.5, "y":1},
{"label":"7", "x":9.5, "y":1},
{"label":"8", "x":10.5, "y":1},
{"label":"9", "x":11.5, "y":1},
{"label":"0", "x":12.5, "y":1},
{"label":"MINUS", "x":13.5, "y":1},
{"label":"EQUAL", "x":14.5, "y":1},
{"label":"BACKSLASH", "x":15.5, "y":1},
{"label":"GRAVE", "x":16.5, "y":1},
{"label":"R4", "x":18, "y":1},
{"label":"R5", "x":19, "y":1},
{"label":"R6", "x":20, "y":1},
{"label":"FRONT", "x":0, "y":2},
{"label":"COPY", "x":1, "y":2},
{"label":"TAB", "x":2.5, "y":2, "w":1.5},
{"label":"Q", "x":4, "y":2},
{"label":"W", "x":5, "y":2},
{"label":"E", "x":6, "y":2},
{"label":"R", "x":7, "y":2},
{"label":"T", "x":8, "y":2},
{"label":"Y", "x":9, "y":2},
{"label":"U", "x":10, "y":2},
{"label":"I", "x":11, "y":2},
{"label":"O", "x":12, "y":2},
{"label":"P", "x":13, "y":2},
{"label":"LBRACKET", "x":14, "y":2},
{"label":"RBRACKET", "x":15, "y":2},
{"label":"DELETE", "x":16, "y":2, "w":1.5},
{"label":"R7", "x":18, "y":2},
{"label":"R8", "x":19, "y":2},
{"label":"R9", "x":20, "y":2},
{"label":"OPEN", "x":0, "y":3},
{"label":"PASTE", "x":1, "y":3},
{"label":"CONTROL", "x":2.5, "y":3, "w":1.75},
{"label":"A", "x":4.25, "y":3},
{"label":"S", "x":5.25, "y":3},
{"label":"D", "x":6.25, "y":3},
{"label":"F", "x":7.25, "y":3},
{"label":"G", "x":8.25, "y":3},
{"label":"H", "x":9.25, "y":3},
{"label":"J", "x":10.25, "y":3},
{"label":"K", "x":11.25, "y":3},
{"label":"L", "x":12.25, "y":3},
{"label":"SEMICOLON", "x":13.25, "y":3},
{"label":"QUOTE", "x":14.25, "y":3},
{"label":"RETURN", "x":15.25, "y":3, "w":2.25},
{"label":"R10", "x":18, "y":3},
{"label":"R11", "x":19, "y":3},
{"label":"R12", "x":20, "y":3},
{"label":"FIND", "x":0, "y":4},
{"label":"CUT", "x":1, "y":4},
{"label":"LSHIFT", "x":2.5, "y":4, "w":2.25},
{"label":"Z", "x":4.75, "y":4},
{"label":"X", "x":5.75, "y":4},
{"label":"C", "x":6.75, "y":4},
{"label":"V", "x":7.75, "y":4},
{"label":"B", "x":8.75, "y":4},
{"label":"N", "x":9.75, "y":4},
{"label":"M", "x":10.75, "y":4},
{"label":"COMMA", "x":11.75, "y":4},
{"label":"PERIOD", "x":12.75, "y":4},
{"label":"SLASH", "x":13.75, "y":4},
{"label":"RSHIFT", "x":14.75, "y":4, "w":1.75},
{"label":"LINE FEED", "x":16.5, "y":4},
{"label":"R13", "x":18, "y":4},
{"label":"R14", "x":19, "y":4},
{"label":"R15", "x":20, "y":4},
{"label":"CAPS", "x":2.5, "y":5, "w":1.25},
{"label":"LEFT", "x":3.75, "y":5, "w":1.5},
{"label":"SPACE", "x":5.25, "y":5, "w":9},
{"label":"RIGHT", "x":14.25, "y":5, "w":1.5},
{"label":"ALTERNATE", "x":15.75, "y":5, "w":1.75}
]
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,229 @@
{
"keyboard_name": "IBM PC XT",
"keyboard_folder": "converter/xt_usb",
"url": "",
"maintainer": "qmk",
"width": 21,
"height": 5,
"layouts": {
"LAYOUT_xt": {
"layout": [
{"label":"F1", "x":0, "y":0},
{"label":"F2", "x":1, "y":0},
{"label":"Esc", "x":2.25, "y":0},
{"label":"1", "x":3.25, "y":0},
{"label":"2", "x":4.25, "y":0},
{"label":"3", "x":5.25, "y":0},
{"label":"4", "x":6.25, "y":0},
{"label":"5", "x":7.25, "y":0},
{"label":"6", "x":8.25, "y":0},
{"label":"7", "x":9.25, "y":0},
{"label":"8", "x":10.25, "y":0},
{"label":"9", "x":11.25, "y":0},
{"label":"0", "x":12.25, "y":0},
{"label":"-", "x":13.25, "y":0},
{"label":"=", "x":14.25, "y":0},
{"label":"Backspace", "x":15.25, "y":0, "w":1.75},
{"label":"Num Lock", "x":17, "y":0, "w":2},
{"label":"Scroll Lock", "x":19, "y":0, "w":2},
{"label":"F3", "x":0, "y":1},
{"label":"F4", "x":1, "y":1},
{"label":"Tab", "x":2.25, "y":1, "w":1.5},
{"label":"Q", "x":3.75, "y":1},
{"label":"W", "x":4.75, "y":1},
{"label":"E", "x":5.75, "y":1},
{"label":"R", "x":6.75, "y":1},
{"label":"T", "x":7.75, "y":1},
{"label":"Y", "x":8.75, "y":1},
{"label":"U", "x":9.75, "y":1},
{"label":"I", "x":10.75, "y":1},
{"label":"O", "x":11.75, "y":1},
{"label":"P", "x":12.75, "y":1},
{"label":"[", "x":13.75, "y":1},
{"label":"]", "x":14.75, "y":1},
{"label":"7", "x":17, "y":1},
{"label":"8", "x":18, "y":1},
{"label":"9", "x":19, "y":1},
{"label":"-", "x":20, "y":1},
{"label":"F5", "x":0, "y":2},
{"label":"F6", "x":1, "y":2},
{"label":"Ctrl", "x":2.25, "y":2, "w":1.75},
{"label":"A", "x":4, "y":2},
{"label":"S", "x":5, "y":2},
{"label":"D", "x":6, "y":2},
{"label":"F", "x":7, "y":2},
{"label":"G", "x":8, "y":2},
{"label":"H", "x":9, "y":2},
{"label":"J", "x":10, "y":2},
{"label":"K", "x":11, "y":2},
{"label":"L", "x":12, "y":2},
{"label":";", "x":13, "y":2},
{"label":"'", "x":14, "y":2},
{"label":"`", "x":15, "y":2},
{"label":"Enter", "x":16, "y":1, "h":2},
{"label":"4", "x":17, "y":2},
{"label":"5", "x":18, "y":2},
{"label":"6", "x":19, "y":2},
{"label":"F7", "x":0, "y":3},
{"label":"F8", "x":1, "y":3},
{"label":"Shift", "x":2.25, "y":3, "w":1.25},
{"label":"\\", "x":3.5, "y":3},
{"label":"Z", "x":4.5, "y":3},
{"label":"X", "x":5.5, "y":3},
{"label":"C", "x":6.5, "y":3},
{"label":"V", "x":7.5, "y":3},
{"label":"B", "x":8.5, "y":3},
{"label":"N", "x":9.5, "y":3},
{"label":"M", "x":10.5, "y":3},
{"label":",", "x":11.5, "y":3},
{"label":".", "x":12.5, "y":3},
{"label":"/", "x":13.5, "y":3},
{"label":"Shift", "x":14.5, "y":3, "w":1.5},
{"label":"Print Screen", "x":16, "y":3},
{"label":"1", "x":17, "y":3},
{"label":"2", "x":18, "y":3},
{"label":"3", "x":19, "y":3},
{"label":"+", "x":20, "y":2, "h":3},
{"label":"F9", "x":0, "y":4},
{"label":"F10", "x":1, "y":4},
{"label":"Alt", "x":2.25, "y":4, "w":2},
{"label":"Space", "x":4.25, "y":4, "w":9.75},
{"label":"Caps Lock", "x":14, "y":4, "w":2},
{"label":"0", "x":16, "y":4, "w":2},
{"label":".", "x":18, "y":4, "w":2}
]
},
"LAYOUT": {
"layout": [
{"label":"F13", "x":2, "y":0},
{"label":"F14", "x":3, "y":0},
{"label":"F15", "x":4, "y":0},
{"label":"F16", "x":5, "y":0},
{"label":"F17", "x":6, "y":0},
{"label":"F18", "x":7, "y":0},
{"label":"F19", "x":8, "y":0},
{"label":"F20", "x":9, "y":0},
{"label":"F21", "x":10, "y":0},
{"label":"F22", "x":11, "y":0},
{"label":"F23", "x":12, "y":0},
{"label":"F24", "x":13, "y":0},
{"label":"Esc", "x":0, "y":1},
{"label":"F1", "x":2, "y":1},
{"label":"F2", "x":3, "y":1},
{"label":"F3", "x":4, "y":1},
{"label":"F4", "x":5, "y":1},
{"label":"F5", "x":6, "y":1},
{"label":"F6", "x":7, "y":1},
{"label":"F7", "x":8, "y":1},
{"label":"F8", "x":9, "y":1},
{"label":"F9", "x":10, "y":1},
{"label":"F10", "x":11, "y":1},
{"label":"F11", "x":12, "y":1},
{"label":"F12", "x":13, "y":1},
{"label":"Print Screen", "x":15.25, "y":1},
{"label":"Scroll Lock", "x":16.25, "y":1},
{"label":"Pause", "x":17.25, "y":1},
{"label":"Volume Down", "x":19.5, "y":1},
{"label":"Volume Up", "x":20.5, "y":1},
{"label":"Mute", "x":21.5, "y":1},
{"label":"`", "x":0, "y":2.5},
{"label":"1", "x":1, "y":2.5},
{"label":"2", "x":2, "y":2.5},
{"label":"3", "x":3, "y":2.5},
{"label":"4", "x":4, "y":2.5},
{"label":"5", "x":5, "y":2.5},
{"label":"6", "x":6, "y":2.5},
{"label":"7", "x":7, "y":2.5},
{"label":"8", "x":8, "y":2.5},
{"label":"9", "x":9, "y":2.5},
{"label":"0", "x":10, "y":2.5},
{"label":"-", "x":11, "y":2.5},
{"label":"=", "x":12, "y":2.5},
{"label":"JP Yen", "x":13, "y":2.5},
{"label":"Back Space", "x":14, "y":2.5},
{"label":"Insert", "x":15.25, "y":2.5},
{"label":"Home", "x":16.25, "y":2.5},
{"label":"Page Up", "x":17.25, "y":2.5},
{"label":"Num Lock", "x":18.5, "y":2.5},
{"label":"KP/", "x":19.5, "y":2.5},
{"label":"KP*", "x":20.5, "y":2.5},
{"label":"KP-", "x":21.5, "y":2.5},
{"label":"Tab", "x":0, "y":3.5, "w":1.5},
{"label":"Q", "x":1.5, "y":3.5},
{"label":"W", "x":2.5, "y":3.5},
{"label":"E", "x":3.5, "y":3.5},
{"label":"R", "x":4.5, "y":3.5},
{"label":"T", "x":5.5, "y":3.5},
{"label":"Y", "x":6.5, "y":3.5},
{"label":"U", "x":7.5, "y":3.5},
{"label":"I", "x":8.5, "y":3.5},
{"label":"O", "x":9.5, "y":3.5},
{"label":"P", "x":10.5, "y":3.5},
{"label":"[", "x":11.5, "y":3.5},
{"label":"]", "x":12.5, "y":3.5},
{"label":"\\", "x":13.5, "y":3.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":3.5},
{"label":"End", "x":16.25, "y":3.5},
{"label":"Page Down", "x":17.25, "y":3.5},
{"label":"KP 7", "x":18.5, "y":3.5},
{"label":"KP 8", "x":19.5, "y":3.5},
{"label":"KP 9", "x":20.5, "y":3.5},
{"label":"KP+", "x":21.5, "y":3.5},
{"label":"Caps Lock", "x":0, "y":4.5, "w":1.75},
{"label":"A", "x":1.75, "y":4.5},
{"label":"S", "x":2.75, "y":4.5},
{"label":"D", "x":3.75, "y":4.5},
{"label":"F", "x":4.75, "y":4.5},
{"label":"G", "x":5.75, "y":4.5},
{"label":"H", "x":6.75, "y":4.5},
{"label":"J", "x":7.75, "y":4.5},
{"label":"K", "x":8.75, "y":4.5},
{"label":"L", "x":9.75, "y":4.5},
{"label":";", "x":10.75, "y":4.5},
{"label":"'", "x":11.75, "y":4.5},
{"label":"ISO #", "x":12.75, "y":4.5},
{"label":"Enter", "x":13.75, "y":4.5, "w":1.25},
{"label":"KP 4", "x":18.5, "y":4.5},
{"label":"KP 5", "x":19.5, "y":4.5},
{"label":"KP 6", "x":20.5, "y":4.5},
{"label":"KP ,", "x":21.5, "y":4.5},
{"label":"Shift", "x":0, "y":5.5, "w":1.25},
{"label":"ISO \\", "x":1.25, "y":5.5},
{"label":"Z", "x":2.25, "y":5.5},
{"label":"X", "x":3.25, "y":5.5},
{"label":"C", "x":4.25, "y":5.5},
{"label":"V", "x":5.25, "y":5.5},
{"label":"B", "x":6.25, "y":5.5},
{"label":"N", "x":7.25, "y":5.5},
{"label":"M", "x":8.25, "y":5.5},
{"label":",", "x":9.25, "y":5.5},
{"label":".", "x":10.25, "y":5.5},
{"label":"/", "x":11.25, "y":5.5},
{"label":"JP RO", "x":12.25, "y":5.5},
{"label":"Shift", "x":13.25, "y":5.5, "w":1.75},
{"label":"Up", "x":16.25, "y":5.5},
{"label":"KP 1", "x":18.5, "y":5.5},
{"label":"KP 2", "x":19.5, "y":5.5},
{"label":"KP 3", "x":20.5, "y":5.5},
{"label":"KP Enter", "x":21.5, "y":5.5},
{"label":"Ctrl", "x":0, "y":6.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":6.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":6.5, "w":1.25},
{"label":"Muhenkan", "x":3.75, "y":6.5, "w":1.25},
{"label":"Space", "x":5, "y":6.5, "w":3.25},
{"label":"Henkan", "x":8.25, "y":6.5, "w":1.25},
{"label":"Kana", "x":9.5, "y":6.5, "w":1.25},
{"label":"Alt", "x":10.75, "y":6.5},
{"label":"GUI", "x":11.75, "y":6.5},
{"label":"Menu", "x":12.75, "y":6.5},
{"label":"Ctrl", "x":13.75, "y":6.5, "w":1.25},
{"label":"Left", "x":15.25, "y":6.5},
{"label":"Down", "x":16.25, "y":6.5},
{"label":"Right", "x":17.25, "y":6.5},
{"label":"KP 0", "x":18.5, "y":6.5, "w":2},
{"label":"KP .", "x":20.5, "y":6.5},
{"label":"KP =", "x":21.5, "y":6.5}
]
}
}
}

View File

@ -1,16 +1,67 @@
{
"keyboard_name": "",
"url": "",
"maintainer": "qmk",
"width": 4,
"height": 6,
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2, "h":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4, "h":2}, {"label":"0", "x":0, "y":5, "w":2}, {"label":".", "x":2, "y":5}]
},
"keyboard_name": "Cospad",
"keyboard_folder": "cospad",
"url": "",
"maintainer": "qmk",
"width": 4,
"height": 6,
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"Tab", "x":1, "y":0},
{"label":"Fn", "x":2, "y":0},
{"label":"Back", "x":3, "y":0},
{"label":"Num Lock", "x":0, "y":1},
{"label":"/", "x":1, "y":1},
{"label":"*", "x":2, "y":1},
{"label":"-", "x":3, "y":1},
{"label":"7", "x":0, "y":2},
{"label":"8", "x":1, "y":2},
{"label":"9", "x":2, "y":2},
{"label":"4", "x":0, "y":3},
{"label":"5", "x":1, "y":3},
{"label":"6", "x":2, "y":3},
{"label":"+", "x":3, "y":2, "h":2},
{"label":"1", "x":0, "y":4},
{"label":"2", "x":1, "y":4},
{"label":"3", "x":2, "y":4},
{"label":"0", "x":0, "y":5, "w":2},
{"label":".", "x":2, "y":5},
{"label":"Enter", "x":3, "y":4, "h":2}
]
},
"LAYOUT_ortho_6x4": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
}
"LAYOUT_gamepad_6x4": {
"layout": [
{"label":"k00", "x":5, "y":0},
{"label":"k01", "x":5, "y":1},
{"label":"k02", "x":5, "y":2},
{"label":"k03", "x":5, "y":3},
{"label":"k10", "x":4, "y":0},
{"label":"k11", "x":4, "y":1},
{"label":"k12", "x":4, "y":2},
{"label":"k13", "x":4, "y":3},
{"label":"k20", "x":3, "y":0},
{"label":"k21", "x":3, "y":1},
{"label":"k22", "x":3, "y":2},
{"label":"k30", "x":2, "y":0},
{"label":"k31", "x":2, "y":1},
{"label":"k32", "x":2, "y":2},
{"label":"k23", "x":2, "y":3, "w":2},
{"label":"k40", "x":1, "y":0},
{"label":"k41", "x":1, "y":1},
{"label":"k42", "x":1, "y":2},
{"label":"k43", "x":1, "y":3},
{"label":"k50", "x":0, "y":0},
{"label":"k51", "x":0, "y":1},
{"label":"k52", "x":0, "y":2},
{"label":"k53", "x":0, "y":3}
]
},
"LAYOUT_ortho_6x4": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, {"label":"Fn", "x":2, "y":0}, {"label":"Back", "x":3, "y":0}, {"label":"Num Lock", "x":0, "y":1}, {"label":"/", "x":1, "y":1}, {"label":"*", "x":2, "y":1}, {"label":"-", "x":3, "y":1}, {"label":"7", "x":0, "y":2}, {"label":"8", "x":1, "y":2}, {"label":"9", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"6", "x":2, "y":3}, {"x":3, "y":3}, {"label":"1", "x":0, "y":4}, {"label":"2", "x":1, "y":4}, {"label":"3", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}, {"label":"0", "x":0, "y":5}, {"x":1, "y":5}, {"label":".", "x":2, "y":5}, {"x":3, "y":5}]
}
}
}
}

View File

@ -4,8 +4,8 @@ COSPAD
A DIY Keypad Kit sold by KPRepublic, runs TKG natively.
Keyboard Maintainer: QMK Community
Hardware Supported: COSPAD
Hardware Availability: https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html
Hardware Supported: COSPAD
Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
Only supports on and off for the backlight leds, as they are not connected to a PWM pin.
@ -18,4 +18,4 @@ Make example for this keyboard (after setting up your build environment):
make cospad:default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
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).

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