mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0309db983 | ||
|
|
cfb1b353ee | ||
|
|
e72e4b6920 | ||
|
|
b7e25f9ec4 | ||
|
|
9012f4c2e0 | ||
|
|
07d317ab88 | ||
|
|
ce057ea474 | ||
|
|
58b9b22670 | ||
|
|
57ec309d3e | ||
|
|
35e76539e7 | ||
|
|
747cf78b5d | ||
|
|
99c1c5bfe9 | ||
|
|
cfdc23bbae | ||
|
|
4c22e92ce8 | ||
|
|
6cab514036 | ||
|
|
5b4bcfa7f2 | ||
|
|
14be5258a6 | ||
|
|
2bdeccd7ba | ||
|
|
334e2629df | ||
|
|
77433b1a31 | ||
|
|
14f691d2a7 | ||
|
|
c23233f41a | ||
|
|
71fe973190 | ||
|
|
92f67719cc | ||
|
|
23da333ae3 | ||
|
|
03b8ce206d | ||
|
|
ec64be6622 | ||
|
|
cb8d352cb3 |
@@ -119,22 +119,22 @@ You can completely disable Music Mode as well. This is useful, if you're pressed
|
||||
|
||||
#define NO_MUSIC_MODE
|
||||
|
||||
## Faux Click
|
||||
## Audio Click
|
||||
|
||||
This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly.
|
||||
|
||||
* `CK_TOGG` - Toggles the status (will play sound if enabled)
|
||||
* `CK_RST` - Resets the frequency to the default state
|
||||
* `CK_UP` - Increases the frequency of the clicks
|
||||
* `CK_DOWN` - Decreases the frequency of the clicks
|
||||
* `CK_ON` - Turns on Audio Click (plays sound)
|
||||
* `CK_OFF` - Turns off Audio Click (doesn't play sound)
|
||||
* `CK_RST` - Resets the frequency to the default state (plays sound at default frequency)
|
||||
* `CK_UP` - Increases the frequency of the clicks (plays sound at new frequency)
|
||||
* `CK_DOWN` - Decreases the frequency of the clicks (plays sound at new frequency)
|
||||
|
||||
|
||||
The feature is disabled by default, to save space. To enable it, add this to your `config.h`:
|
||||
|
||||
#define AUDIO_CLICKY
|
||||
|
||||
Additionally, even when enabled, the feature is not enabled by default, so you would need to turn it on first. And since we don't use EEPROM to store the setting (yet), you can default this to on by adding this to your `config.h`:
|
||||
|
||||
#define AUDIO_CLICKY_ON
|
||||
|
||||
You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values:
|
||||
|
||||
@@ -144,7 +144,7 @@ You can configure the default, min and max frequencies, the stepping and built i
|
||||
| `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). |
|
||||
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. |
|
||||
| `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. |
|
||||
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical. |
|
||||
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. |
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,24 @@ To hook up a Trackpoint, you need to obtain a Trackpoint module (i.e. harvest fr
|
||||
|
||||
There are three available modes for hooking up PS/2 devices: USART (best), interrupts (better) or busywait (not recommended).
|
||||
|
||||
### The Cirtuitry between Trackpoint and Controller
|
||||
|
||||
To get the things working, a 4.7K drag is needed between the two lines DATA and CLK and the line 5+.
|
||||
|
||||
```
|
||||
|
||||
DATA ----------+--------- PIN
|
||||
|
|
||||
4.7K
|
||||
|
|
||||
MODULE 5+ --------+--+--------- PWR CONTROLLER
|
||||
|
|
||||
4.7K
|
||||
|
|
||||
CLK ------+------------ PIN
|
||||
```
|
||||
|
||||
|
||||
### Busywait Version
|
||||
|
||||
Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible.
|
||||
|
||||
@@ -89,11 +89,15 @@ There are 3 main sections of a `keymap.c` file you'll want to concern yourself w
|
||||
|
||||
At the top of the file you'll find this:
|
||||
|
||||
#include "clueboard.h"
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Helpful defines
|
||||
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||
#define _______ KC_TRNS
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* You can use _______ in place for KC_TRNS (transparent) *
|
||||
* Or you can use XXXXXXX for KC_NO (NOOP) *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
// Each layer gets a name for readability.
|
||||
// The underscores don't mean anything - you can
|
||||
@@ -105,7 +109,9 @@ At the top of the file you'll find this:
|
||||
#define _FL 1
|
||||
#define _CL 2
|
||||
|
||||
These are some handy definitions we can use when building our keymap and our custom function. The `GRAVE_MODS` definition will be used later in our custom function. The `_______` define makes it easier to see what keys a layer is overriding, while the `_BL`, `_FL`, and `_CL` defines make it easier to refer to each of our layers.
|
||||
These are some handy definitions we can use when building our keymap and our custom function. The `GRAVE_MODS` definition will be used later in our custom function, and the following `_BL`, `_FL`, and `_CL` defines make it easier to refer to each of our layers.
|
||||
|
||||
Note: You may also find some older keymap files may also have a define(s) for `_______` and/or `XXXXXXX`. These can be used in place for `KC_TRNS` and `KC_NO` respectively, making it easier to see what keys a layer is overriding. These definitions are now unecessary, as they are included by default.
|
||||
|
||||
### Layers and Keymaps
|
||||
|
||||
|
||||
42
keyboards/atreus/keymaps/talljoe-atreus/config.h
Normal file
42
keyboards/atreus/keymaps/talljoe-atreus/config.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include QMK_KEYBOARD_CONFIG_H
|
||||
|
||||
#define PREVENT_STUCK_MODIFIERS
|
||||
#define SPACE_COUNT 2
|
||||
|
||||
#define TEMPLATE( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
||||
) LAYOUT( \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
|
||||
K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
|
||||
K10, K41, K42, K30, K44, K1D, K20, K45, K3C, K0D, K2B, K3D \
|
||||
)
|
||||
|
||||
#define TEMPLATE_NUM( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
|
||||
) LAYOUT( \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
|
||||
K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
|
||||
K10, K41, K42, K30, K44, K1D, K20, K45, K48, K49, K2B, K3D \
|
||||
)
|
||||
|
||||
|
||||
#define TEMPLATE_RESET LAYOUT( \
|
||||
RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
|
||||
)
|
||||
#endif
|
||||
1
keyboards/atreus/keymaps/talljoe-atreus/keymap.c
Normal file
1
keyboards/atreus/keymaps/talljoe-atreus/keymap.c
Normal file
@@ -0,0 +1 @@
|
||||
// This space intentionally left blank
|
||||
1
keyboards/atreus/keymaps/talljoe-atreus/rules.mk
Normal file
1
keyboards/atreus/keymaps/talljoe-atreus/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
USER_NAME := talljoe
|
||||
@@ -32,6 +32,24 @@ static uint8_t debouncing = DEBOUNCING_DELAY;
|
||||
static matrix_row_t matrix[MATRIX_ROWS];
|
||||
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
static matrix_row_t scan_col(void) {
|
||||
return (
|
||||
(PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
|
||||
@@ -25,22 +25,19 @@ Make example for this keyboard (after setting up your build environment):
|
||||
104 key default layout:
|
||||
|
||||
```
|
||||
make frosty_flake:default
|
||||
make bpiphany/frosty_flake:default
|
||||
```
|
||||
|
||||
To directly flash the frosty_flake after compiling use
|
||||
|
||||
```
|
||||
make frosty_flake:default:dfu
|
||||
make bpiphany/frosty_flake:default:dfu
|
||||
```
|
||||
|
||||
87 key tkl layout:
|
||||
|
||||
```
|
||||
make frosty_flake:tkl:dfu
|
||||
make bpiphany/frosty_flake:tkl:dfu
|
||||
```
|
||||
|
||||
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).
|
||||
@@ -35,6 +35,24 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
||||
static uint8_t read_rows(void);
|
||||
static void select_col(uint8_t col);
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
inline uint8_t matrix_rows(void) {
|
||||
return MATRIX_ROWS;
|
||||
}
|
||||
@@ -48,7 +66,7 @@ inline uint8_t matrix_cols(void) {
|
||||
* col: 0 1 2 3 4 5 6 7
|
||||
* pin: PC7 PD5 PD3 PD1 PC2 PD6 PD4 PD2
|
||||
*
|
||||
* Rrr pin configuration
|
||||
* Rrr pin configuration
|
||||
*
|
||||
* These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low
|
||||
* active), together with 2 rrrs driven directly from the micro
|
||||
@@ -84,7 +102,7 @@ uint8_t matrix_scan(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (debouncing) {
|
||||
if (--debouncing) {
|
||||
_delay_ms(1);
|
||||
@@ -11,6 +11,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=46700.0
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make kitten_paw:default
|
||||
make bpiphany/kitten_paw: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).
|
||||
12
keyboards/bpiphany/pegasushoof/README.md
Normal file
12
keyboards/bpiphany/pegasushoof/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
Pegasus Hoof Controller
|
||||
===
|
||||
|
||||
Keyboard Maintainer: QMK Community
|
||||
Hardware Supported: Pegasus Hoof
|
||||
Hardware Availability: https://1upkeyboards.com/filco-pegasus-hoof-controller.html
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make bpiphany/pegasus_hoof:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
@@ -33,6 +33,24 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
||||
static matrix_row_t read_cols(void);
|
||||
static void select_row(uint8_t col);
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
inline uint8_t matrix_rows(void)
|
||||
{
|
||||
return MATRIX_ROWS;
|
||||
6
keyboards/bpiphany/readme.md
Normal file
6
keyboards/bpiphany/readme.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Bathroom Epiphanies
|
||||
|
||||
bpiphany is the owner and designer of [Bathroom Epiphanies](http://bathroomepiphanies.com/).
|
||||
|
||||
He is based in Sweden and creates several controller boards as a swappable component for some off the shelf keyboards.
|
||||
|
||||
@@ -32,6 +32,24 @@ static uint8_t debouncing = DEBOUNCING_DELAY;
|
||||
static matrix_row_t matrix[MATRIX_ROWS];
|
||||
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
static matrix_row_t scan_col(void) {
|
||||
return (
|
||||
(PINC&(1<<2) ? 0 : ((matrix_row_t)1<<0)) | \
|
||||
@@ -134,4 +152,4 @@ uint8_t matrix_key_count(void) {
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++)
|
||||
count += bitpop32(matrix[row]);
|
||||
return count;
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,6 @@ Hardware Availability: https://geekhack.org/index.php?topic=46700.0
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make tiger_lily:default
|
||||
make bpiphany/tiger_lily: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).
|
||||
@@ -25,6 +25,24 @@
|
||||
#include "util.h"
|
||||
#include "matrix.h"
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
#ifndef DEBOUNCING_DELAY
|
||||
# define DEBOUNCING_DELAY 5
|
||||
#endif
|
||||
@@ -10,6 +10,6 @@ Hardware Availability: Pretty much anywhere
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make unloved_bastard:default
|
||||
make bpiphany/unloved_bastard: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).
|
||||
35
keyboards/converter/hp_46010a/config.h
Normal file
35
keyboards/converter/hp_46010a/config.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2018 listofoptions <listofoptions@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 1
|
||||
#define MANUFACTURER QMK
|
||||
#define PRODUCT 46010A keyboard converter
|
||||
#define DESCRIPTION 46010A keyboard converter
|
||||
|
||||
#define MATRIX_ROWS 14
|
||||
#define MATRIX_COLS 8
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
|
||||
3
keyboards/converter/hp_46010a/hp_46010a.c
Normal file
3
keyboards/converter/hp_46010a/hp_46010a.c
Normal file
@@ -0,0 +1,3 @@
|
||||
#include "hp_46010a.h"
|
||||
#include <avr/io.h>
|
||||
#include "quantum.h"
|
||||
62
keyboards/converter/hp_46010a/hp_46010a.h
Normal file
62
keyboards/converter/hp_46010a/hp_46010a.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
Copyright 2018 listofoptions <listofoptions@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* ,---------. ,---------------------------------------------------------. ,---------. ,-------------------.
|
||||
* | res|stop| | f1| f2| f3| f4|menu|user| f5| f6| f7| f8| |clrl|clrd| | | | | |
|
||||
* `---------' `---------------------------------------------------------' `---------' `-------------------'
|
||||
* ,------------------------------------------------------------------------..---------. ,-------------------.
|
||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| +| back||insl|dell| | *| /| +| -|
|
||||
* |------------------------------------------------------------------------||---------| |-------------------|
|
||||
* | tab| q| w| e| r| t| y| u| i| o| p| [| ]| \||insc|delc| | 7| 8| 9|pade|
|
||||
* |------------------------------------------------------------------------||---------| |-------------------|
|
||||
* |caps|ctrl| a| s| d| f| g| h| j| k| l| ;| '| retr|| cur|prev| | 4| 5| 6| ,|
|
||||
* |------------------------------------------------------------------------------------ |-------------------|
|
||||
* |dele|lshf | z| x| c| v| b| n| m| ,| .| /|rshf |sel | up|next| | 1| 2| 3| tab|
|
||||
* |-------------------------------------------------------------------------|---------| |--------------- |
|
||||
* |prnt| |lalt| space |ralt| |left|down|rght| | 0| .| |
|
||||
* `-----------------------------------------------------------------------------------' `-------------------'
|
||||
*/
|
||||
|
||||
#define LAYOUT_HP_46010A( \
|
||||
KEY_RES, KEY_STOP, KEY_F1, KEY_F2, KEY_F3, KEY_F4,KEY_MENU,KEY_USER, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_CLRL, KEY_CLRD, KEY_B1, KEY_B2, KEY_B3, KEY_B4, \
|
||||
KEY_GRAV, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINU, KEY_PLUS, KEY_BACK, KEY_INSL, KEY_DELL, KEY_MULT, KEY_DIV, KEY_ADD, KEY_SUBT, \
|
||||
KEY_TAB, KEY_Q,KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_LBRA, KEY_RBRA, KEY_PIPE, KEY_INSC, KEY_DELC, KEY_P7, KEY_P8, KEY_P9, KEY_PADE, \
|
||||
KEY_CAPS, KEY_CTRL, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMI, KEY_QUOT, KEY_RETR, KEY_CUR, KEY_PREV, KEY_P4, KEY_P5, KEY_P6, KEY_PCOM, \
|
||||
KEY_DELE, KEY_LSHF, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMA, KEY_DOT, KEY_SLAS,KEY_RSHF, KEY_SEL, KEY_UP, KEY_NEXT, KEY_P1, KEY_P2, KEY_P3, KEY_PTAB, \
|
||||
KEY_PRNT, KEY_LALT, KEY_SPACE , KEY_RALT, KEY_LEFT, KEY_DOWN, KEY_RGHT, KEY_P0, KEY_PDOT \
|
||||
) { \
|
||||
{KEY_USER, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_CLRL, KEY_CLRD, KEY_MENU }, \
|
||||
{KEY_9, KEY_0, KEY_MINU, KEY_PLUS, KEY_BACK, KEY_INSL, KEY_DELL, KEY_8 }, \
|
||||
{KEY_O, KEY_P, KEY_LBRA, KEY_RBRA, KEY_PIPE, KEY_INSC, KEY_DELC, KEY_I }, \
|
||||
{KEY_K, KEY_L, KEY_SEMI, KEY_QUOT, KEY_RETR, KEY_CUR, KEY_PREV, KEY_J }, \
|
||||
{KEY_COMA, KEY_DOT, KEY_SLAS, KEY_1, KEY_SEL, KEY_UP, KEY_NEXT, KEY_M }, \
|
||||
{KEY_SPACE, KEY_LALT, KEY_RALT, KC_NO, KEY_LEFT, KEY_DOWN, KEY_RGHT, KC_NO }, \
|
||||
{KEY_F3, KEY_F2, KEY_F1, KEY_GRAV, KEY_CTRL, KEY_STOP, KEY_G, KEY_F4 }, \
|
||||
{KEY_6, KEY_5, KEY_4, KEY_3, KEY_CAPS, KEY_RSHF, KEY_LSHF, KEY_7 }, \
|
||||
{KEY_Y, KEY_T, KEY_R, KEY_E, KEY_W, KEY_Q, KEY_TAB, KEY_U }, \
|
||||
{KEY_RES, KEY_F, KEY_D, KEY_S, KEY_A, KC_NO, KEY_2, KEY_H }, \
|
||||
{KEY_P7, KEY_P4, KEY_P8, KEY_P5, KEY_P9, KEY_P6, KEY_PADE, KEY_PCOM }, \
|
||||
{KEY_MULT, KEY_P1, KEY_DIV, KEY_P2, KEY_PLUS, KEY_P3, KEY_MINU, KEY_PTAB }, \
|
||||
{KEY_B1, KEY_P0, KEY_B2, KC_NO, KEY_B3, KEY_PDOT, KEY_B4, KC_NO }, \
|
||||
{KEY_B, KEY_V, KEY_C, KEY_X, KEY_Z, KEY_PRNT, KEY_DELE, KEY_N }, \
|
||||
}
|
||||
|
||||
#define LAYOUT LAYOUT_HP_46010A
|
||||
6
keyboards/converter/hp_46010a/info.json
Normal file
6
keyboards/converter/hp_46010a/info.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"keyboard_name": "HP_46010A",
|
||||
"keyboard_folder": "converter/HP_46010A",
|
||||
"url": "https://deskthority.net/wiki/HP_46010A",
|
||||
"maintainer": "listofoptions",
|
||||
}
|
||||
45
keyboards/converter/hp_46010a/keymaps/default/keymap.c
Normal file
45
keyboards/converter/hp_46010a/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2018 listofoptions <listofoptions@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* ,---------. ,---------------------------------------------------------. ,---------. ,-------------------.
|
||||
* | esc|xxxx| | f1| f2| f3| f4|xxxx|xxxx| f5| f6| f7| f8| |xxxx|xxxx| | f9| f10| f11| f12|
|
||||
* `---------' `---------------------------------------------------------' `---------' `-------------------'
|
||||
* ,------------------------------------------------------------------------..---------. ,-------------------.
|
||||
* | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| back||ins |home| | *| /| +| -|
|
||||
* |------------------------------------------------------------------------||---------| |-------------------|
|
||||
* | tab| q| w| e| r| t| y| u| i| o| p| [| ]| \||del | end| | 7| 8| 9|pade|
|
||||
* |------------------------------------------------------------------------||---------| |-------------------|
|
||||
* |caps|ctrl| a| s| d| f| g| h| j| k| l| ;| '| retr||xxxx|pgup| | 4| 5| 6| ,|
|
||||
* |------------------------------------------------------------------------------------ |-------------------|
|
||||
* |del |lsft | z| x| c| v| b| n| m| ,| .| /|rsft | app| up|pgdn| | 1| 2| 3| tab|
|
||||
* |-------------------------------------------------------------------------|---------| |--------------- |
|
||||
* | gui| |lalt| space |ralt| |left|down|rght| | 0| .| |
|
||||
* `-----------------------------------------------------------------------------------' `-------------------'
|
||||
*/
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4,KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, \
|
||||
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC, KC_INS, KC_HOME, KC_PAST, KC_PSLS, KC_PPLS, KC_PMNS, \
|
||||
KC_TAB, KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_P7, KC_P8, KC_P9, KC_PENT, \
|
||||
KC_CAPS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PCMM, \
|
||||
KC_DEL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,KC_RSFT, KC_APP, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_TAB, \
|
||||
KC_LGUI, KC_LALT, KC_SPACE , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
|
||||
)
|
||||
} ;
|
||||
244
keyboards/converter/hp_46010a/matrix.c
Normal file
244
keyboards/converter/hp_46010a/matrix.c
Normal file
@@ -0,0 +1,244 @@
|
||||
/*
|
||||
Copyright 2018 listofoptions <listofoptions@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#if defined(__AVR__)
|
||||
#include <avr/io.h>
|
||||
#endif
|
||||
#include <util/delay.h>
|
||||
|
||||
#include "wait.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
#include "matrix.h"
|
||||
#include "timer.h"
|
||||
#include "LUFA/Drivers/Peripheral/SPI.h"
|
||||
|
||||
#include "config.h"
|
||||
|
||||
|
||||
#ifndef DEBOUNCING_DELAY
|
||||
# define DEBOUNCING_DELAY 5
|
||||
#endif
|
||||
|
||||
#if ( DEBOUNCING_DELAY > 0 )
|
||||
static uint16_t debouncing_time ;
|
||||
static bool debouncing = false ;
|
||||
#endif
|
||||
|
||||
static uint8_t matrix [MATRIX_ROWS] = {0};
|
||||
|
||||
#if ( DEBOUNCING_DELAY > 0 )
|
||||
static uint8_t matrix_debounce_old [MATRIX_ROWS] = {0};
|
||||
static uint8_t matrix_debounce_new [MATRIX_ROWS] = {0};
|
||||
#endif
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_quantum(void) {
|
||||
matrix_init_kb();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_quantum(void) {
|
||||
matrix_scan_kb();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
// the keyboard's internal wiring is such that the inputs to the logic are
|
||||
// a clock signal, and a reset line.
|
||||
// the output is a single output pin. im bitbanging here, but the SPI controller
|
||||
// would work normally
|
||||
//
|
||||
// the device functions, by using the clock signal to count 128 bits, the lower
|
||||
// 3 bits of this 7 bit counter are tied to a 1-of-8 multiplexer, this forms
|
||||
// the columns.
|
||||
// the upper 4 bits form the rows, and are decoded using bcd to decimal
|
||||
// decoders, so that 14 out of 16 of the outputs are wired to the rows of the
|
||||
// matrix. each switch has a diode, such that the row signal feeds into the
|
||||
// switch, and then into the diode, then into one of the columns into the
|
||||
// matrix. the reset pin can be used to reset the entire counter.
|
||||
|
||||
#define RESET _BV(PB0)
|
||||
#define SCLK _BV(PB1)
|
||||
#define SDATA _BV(PB3)
|
||||
#define LED _BV(PD6)
|
||||
|
||||
inline
|
||||
static
|
||||
void SCLK_increment(void) {
|
||||
PORTB &= ~SCLK ;
|
||||
_delay_us( 4 ) ; // make sure the line is stable
|
||||
PORTB |= SCLK ;
|
||||
_delay_us( 4 ) ;
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
inline
|
||||
static
|
||||
void Matrix_Reset(void) {
|
||||
PORTB |= RESET ;
|
||||
_delay_us( 4 ) ; // make sure the line is stable
|
||||
PORTB &= ~RESET ;
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
inline
|
||||
static
|
||||
uint8_t Matrix_ReceiveByte (void) {
|
||||
uint8_t received = 0 ;
|
||||
uint8_t temp = 0 ;
|
||||
for ( uint8_t bit = 0; bit < MATRIX_COLS; ++bit ) {
|
||||
// toggle the clock
|
||||
SCLK_increment();
|
||||
temp = (PINB & SDATA) << 4 ;
|
||||
received |= temp >> bit ;
|
||||
}
|
||||
|
||||
return received ;
|
||||
}
|
||||
|
||||
inline
|
||||
static
|
||||
void Matrix_ThrowByte(void) {
|
||||
// we use MATRIX_COLS - 1 here because that would put us at 7 clocks
|
||||
for ( uint8_t bit = 0; bit < MATRIX_COLS - 1; ++bit ) {
|
||||
// toggle the clock
|
||||
SCLK_increment();
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
void matrix_init () {
|
||||
// debug_matrix = 1;
|
||||
// PB0 (SS) and PB1 (SCLK) set to outputs
|
||||
DDRB |= RESET | SCLK ;
|
||||
// PB2, is unused, and PB3 is our serial input
|
||||
DDRB &= ~SDATA ;
|
||||
|
||||
// SS is reset for this board, and is active High
|
||||
// SCLK is the serial clock and is active High
|
||||
PORTB &= ~RESET ;
|
||||
PORTB |= SCLK ;
|
||||
|
||||
// led pin
|
||||
DDRD |= LED ;
|
||||
PORTD &= ~LED ;
|
||||
|
||||
matrix_init_quantum();
|
||||
|
||||
//toggle reset, to put the keyboard logic into a known state
|
||||
Matrix_Reset() ;
|
||||
}
|
||||
|
||||
uint8_t matrix_scan(void) {
|
||||
|
||||
// the first byte of the keyboard's output data can be ignored
|
||||
Matrix_ThrowByte();
|
||||
|
||||
#if ( DEBOUNCING_DELAY > 0 )
|
||||
|
||||
for ( uint8_t row = 0 ; row < MATRIX_ROWS ; ++row ) {
|
||||
//transfer old debouncing values
|
||||
matrix_debounce_old[row] = matrix_debounce_new[row] ;
|
||||
// read new key-states in
|
||||
matrix_debounce_new[row] = Matrix_ReceiveByte() ;
|
||||
|
||||
if ( matrix_debounce_new[row] != matrix_debounce_old[row] ) {
|
||||
debouncing = true ;
|
||||
debouncing_time = timer_read() ;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
// without debouncing we simply just read in the raw matrix
|
||||
for ( uint8_t row = 0 ; row < MATRIX_ROWS ; ++row ) {
|
||||
matrix[row] = Matrix_ReceiveByte ;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if ( DEBOUNCING_DELAY > 0 )
|
||||
if ( debouncing && ( timer_elapsed( debouncing_time ) > DEBOUNCING_DELAY ) ) {
|
||||
|
||||
for ( uint8_t row = 0 ; row < MATRIX_ROWS ; ++row ) {
|
||||
matrix[row] = matrix_debounce_new[row] ;
|
||||
}
|
||||
|
||||
debouncing = false ;
|
||||
}
|
||||
#endif
|
||||
Matrix_Reset() ;
|
||||
|
||||
matrix_scan_quantum() ;
|
||||
return 1;
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_get_row( uint8_t row ) {
|
||||
return matrix[row];
|
||||
}
|
||||
|
||||
void matrix_print(void)
|
||||
{
|
||||
print("\nr/c 01234567\n");
|
||||
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||
phex(row); print(": ");
|
||||
print_bin_reverse8(matrix_get_row(row));
|
||||
print("\n");
|
||||
}
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_rows(void) {
|
||||
return MATRIX_ROWS;
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_cols(void) {
|
||||
return MATRIX_COLS;
|
||||
}
|
||||
|
||||
// as an aside, I used the M0110 converter:
|
||||
// tmk_core/common/keyboard.c, quantum/matrix.c, and the project layout of the planck
|
||||
// the online ducmentation starting from :
|
||||
// https://docs.qmk.fm/#/config_options
|
||||
// https://docs.qmk.fm/#/understanding_qmk
|
||||
// and probably a few i forgot....
|
||||
52
keyboards/converter/hp_46010a/readme.md
Normal file
52
keyboards/converter/hp_46010a/readme.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# HP 46010A
|
||||
|
||||

|
||||
|
||||
A converter for the eponymous keyboard.
|
||||
|
||||
Keyboard Maintainer: [Listofoptions](https://github.com/listofoptions)
|
||||
Hardware Supported: HP 46010A, Teensy 2.0
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make converter/HP_46010A:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
to get a matrix created if your board uses a different one (i used the US layout) please see the following gists:
|
||||
for the matrix itself: https://gist.github.com/listofoptions/cdf70d94767e9c6c027741850a24c568
|
||||
for the program to generate the matrix: https://gist.github.com/listofoptions/d245e370678024edbe5bed8c8ab17999
|
||||
|
||||
to build the actual converter, you are going to need to either splice into the a connector or, use a multi-meter to buzz/ohm out which wires go where.
|
||||
from the bottom of the pcb the pins are arraged as follows:
|
||||
|
||||
|
||||
4 5 6
|
||||
3 2 1
|
||||
|
||||
|
||||
connect a six pin modular connector of the 6p6c variaty.
|
||||
then lop off the other end of the cable, striping the wires inside.
|
||||
use the ohm-meter to find the corresponding wire for each pin on the bottom of the pcb
|
||||
|
||||
the pin meanings are as follows:
|
||||
1 reset
|
||||
2 no connection
|
||||
3 vcc
|
||||
4 data out
|
||||
5 clock
|
||||
6 ground
|
||||
|
||||
wire the ground and power pins to ground and 5v power on the teensy (or other avr device of your choice)
|
||||
connect
|
||||
on the teensy the connection is as follows
|
||||
|
||||
|
||||
teensy | HP 46010A
|
||||
----|-----
|
||||
gnd | gnd (6)
|
||||
vcc | vcc (3)
|
||||
PB0 | reset (1)
|
||||
PB1 | clock (5)
|
||||
PB3 | data out (4)
|
||||
gnd | no connection (2) -- optional
|
||||
72
keyboards/converter/hp_46010a/rules.mk
Normal file
72
keyboards/converter/hp_46010a/rules.mk
Normal file
@@ -0,0 +1,72 @@
|
||||
# MCU name
|
||||
#MCU = at90usb1287
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
#
|
||||
# This will be an integer division of F_USB below, as it is sourced by
|
||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||
# does not *change* the processor frequency - it should merely be updated to
|
||||
# reflect the processor speed set externally so that the code can use accurate
|
||||
# software delays.
|
||||
F_CPU = 16000000
|
||||
|
||||
#
|
||||
# LUFA specific
|
||||
#
|
||||
# Target architecture (see library "Board Types" documentation).
|
||||
ARCH = AVR8
|
||||
|
||||
# Input clock frequency.
|
||||
# This will define a symbol, F_USB, in all source code files equal to the
|
||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||
# at the end, this will be done automatically to create a 32-bit value in your
|
||||
# source code.
|
||||
#
|
||||
# If no clock division is performed on the input clock inside the AVR (via the
|
||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||
F_USB = $(F_CPU)
|
||||
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
|
||||
# Bootloader
|
||||
# This definition is optional, and if your keyboard supports multiple bootloaders of
|
||||
# different sizes, comment this out, and the correct address will be loaded
|
||||
# automatically (+60). See bootloader.mk for all options.
|
||||
BOOTLOADER = halfkay
|
||||
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
API_SYSEX_ENABLE = no
|
||||
SPLIT_KEYBOARD = no
|
||||
WAIT_FOR_USB = yes
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
LAYOUTS_HAS_RGB = NO
|
||||
|
||||
CUSTOM_MATRIX = yes
|
||||
SRC = matrix.c
|
||||
@@ -21,6 +21,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "config_common.h"
|
||||
#include <serial_config.h>
|
||||
|
||||
#define USE_I2C
|
||||
#define USE_SERIAL
|
||||
|
||||
#ifdef USE_Link_Time_Optimization
|
||||
// LTO has issues with macros (action_get_macro) and "functions" (fn_actions),
|
||||
// so just disable them
|
||||
|
||||
62
keyboards/crkbd/info.json
Normal file
62
keyboards/crkbd/info.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"keyboard_name": "crkbd (helidox) rev. 1",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 15,
|
||||
"height": 4.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"Esc", "x":0, "y":0.3},
|
||||
{"label":"Q", "x":1, "y":0.3},
|
||||
{"label":"W", "x":2, "y":0.1},
|
||||
{"label":"E", "x":3, "y":0},
|
||||
{"label":"R", "x":4, "y":0.1},
|
||||
{"label":"T", "x":5, "y":0.2},
|
||||
|
||||
{"label":"Y", "x":9, "y":0.2},
|
||||
{"label":"U", "x":10, "y":0.1},
|
||||
{"label":"I", "x":11, "y":0},
|
||||
{"label":"O", "x":12, "y":0.1},
|
||||
{"label":"P", "x":13, "y":0.3},
|
||||
{"label":"Back Space", "x":14, "y":0.3},
|
||||
|
||||
{"label":"Ctrl / Tab", "x":0, "y":1.3},
|
||||
{"label":"A", "x":1, "y":1.3},
|
||||
{"label":"S", "x":2, "y":1.1},
|
||||
{"label":"D", "x":3, "y":1},
|
||||
{"label":"F", "x":4, "y":1.1},
|
||||
{"label":"G", "x":5, "y":1.2},
|
||||
|
||||
{"label":"H", "x":9, "y":1.2},
|
||||
{"label":"J", "x":10, "y":1.1},
|
||||
{"label":"K", "x":11, "y":1},
|
||||
{"label":"L", "x":12, "y":1.1},
|
||||
{"label":";", "x":13, "y":1.3},
|
||||
{"label":"'", "x":14, "y":1.3},
|
||||
|
||||
{"label":"Shift", "x":0, "y":2.3},
|
||||
{"label":"Z", "x":1, "y":2.3},
|
||||
{"label":"X", "x":2, "y":2.1},
|
||||
{"label":"C", "x":3, "y":2},
|
||||
{"label":"V", "x":4, "y":2.1},
|
||||
{"label":"B", "x":5, "y":2.2},
|
||||
|
||||
{"label":"N", "x":9, "y":2.2},
|
||||
{"label":"M", "x":10, "y":2.1},
|
||||
{"label":",", "x":11, "y":2},
|
||||
{"label":".", "x":12, "y":2.1},
|
||||
{"label":"/", "x":13, "y":2.3},
|
||||
{"label":"Shift", "x":14, "y":2.3},
|
||||
|
||||
{"label":"GUI / KC_HANJ", "x":4, "y":3.7},
|
||||
{"label":"Lower", "x":5, "y":3.7},
|
||||
{"label":"Space", "x":6, "y":3.2, "h":1.5},
|
||||
|
||||
{"label":"Enter", "x":8, "y":3.2, "h":1.5},
|
||||
{"label":"Raise", "x":9, "y":3.7},
|
||||
{"label":"Alt / KC_HAEN", "x":10, "y":3.7}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Use I2C or Serial */
|
||||
|
||||
#define USE_I2C
|
||||
#define USE_SERIAL
|
||||
//#define USE_MATRIX_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Use I2C or Serial */
|
||||
|
||||
#define USE_I2C
|
||||
#define USE_SERIAL
|
||||
//#define USE_MATRIX_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
@@ -10,8 +10,9 @@ A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
|
||||
Keyboard Maintainer: [foostan](https://github.com/foostan/) [@foostan](https://twitter.com/foostan)
|
||||
Hardware Supported: Crkbd PCB, Pro Micro
|
||||
Hardware Availability: [PCB & Case Data](https://github.com/foostan/crkbd)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make crkbd: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).
|
||||
|
||||
@@ -82,13 +82,13 @@
|
||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
|
||||
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \
|
||||
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
|
||||
K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
|
||||
{ K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313, K314 }, \
|
||||
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
|
||||
{ K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _BL 0 // Base layer
|
||||
#define _FL 1 // Function layer
|
||||
#define _ML 2 // Media layer
|
||||
#define _NL 2 // Numpad layer
|
||||
enum dz60_layers {
|
||||
_BL, // Base layer
|
||||
_FL, // Function layer
|
||||
_ML, // Media layer
|
||||
_NL // Numpad layer
|
||||
};
|
||||
|
||||
enum my_keycodes {
|
||||
BR_UP = SAFE_RANGE,
|
||||
|
||||
64
keyboards/evil80/config.h
Normal file
64
keyboards/evil80/config.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Evil
|
||||
#define PRODUCT Evil80
|
||||
#define DESCRIPTION QMK keyboard firmware for Evil80
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 6
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
/* Planck PCB default pin-out */
|
||||
#define MATRIX_ROW_PINS { F1, F4, F5, F0, B3, B0 }
|
||||
#define MATRIX_COL_PINS { B2, D0, D1, D2, D3, D5, D4, D6, D7, B4, B1, C6, C7, E6, F6, F7 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B5
|
||||
#define BACKLIGHT_BREATHING
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* key combination for command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
47
keyboards/evil80/evil80.c
Normal file
47
keyboards/evil80/evil80.c
Normal file
@@ -0,0 +1,47 @@
|
||||
#include "evil80.h"
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
led_init_ports();
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
// put your per-action keyboard code here
|
||||
// runs for every action, just before processing by the firmware
|
||||
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
void led_init_ports(void) {
|
||||
DDRB |= (1<<6) | (1<<7); // OUT
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
if (usb_led & (1<<USB_LED_CAPS_LOCK))
|
||||
{
|
||||
PORTB |= (1<<6); // HI
|
||||
}
|
||||
else
|
||||
{
|
||||
PORTB &= ~(1<<6); // LO
|
||||
}
|
||||
|
||||
if (usb_led & (1<<USB_LED_SCROLL_LOCK))
|
||||
{
|
||||
PORTB |= (1<<7); // HI
|
||||
}
|
||||
else
|
||||
{
|
||||
PORTB &= ~(1<<7); // LO
|
||||
}
|
||||
|
||||
led_set_user(usb_led);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user