Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b23072c34 | ||
|
|
9dc19fdb6d | ||
|
|
a54f09d4f3 | ||
|
|
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 | ||
|
|
a6d1db2c27 | ||
|
|
244e1c5a57 | ||
|
|
3f680a93eb | ||
|
|
ed2dd3b59c | ||
|
|
fe3bfd91c1 |
@@ -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. |
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
|
||||
|`MAGIC_UNNO_GUI` | |Enable the GUI keys |
|
||||
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides (for macOS)|
|
||||
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Left Alt and Left GUI |
|
||||
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Left Alt and GUI swap |
|
||||
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
|
||||
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|
||||
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Left Control and Caps Lock |
|
||||
|
||||
@@ -5,7 +5,7 @@ If you've ever used Vim, you know what a Leader key is. If not, you're about to
|
||||
That's what `KC_LEAD` does. Here's an example:
|
||||
|
||||
1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else.
|
||||
2. Include the line `#define LEADER_TIMEOUT 300` somewhere in your keymap.c file, probably near the top. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course.
|
||||
2. Include the line `#define LEADER_TIMEOUT 300` in your config.h. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course.
|
||||
3. Within your `matrix_scan_user` function, do something like this:
|
||||
|
||||
```
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -271,6 +271,7 @@ This is a reference only. Each group of keys links to the page documenting their
|
||||
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|
||||
|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
|
||||
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|
||||
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides|
|
||||
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
|
||||
|
||||
## [Bluetooth](feature_bluetooth.md)
|
||||
|
||||
@@ -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
|
||||
@@ -19,10 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
volatile uint8_t runonce = true;
|
||||
static uint16_t my_timer;
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
my_timer = timer_read();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
if (runonce && timer_elapsed(my_timer) > 1000) {
|
||||
runonce = false;
|
||||
|
||||
45
keyboards/bigswitch/keymaps/wanleg/config.h
Normal file
45
keyboards/bigswitch/keymaps/wanleg/config.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* Copyright 2018 wanleg
|
||||
*
|
||||
* 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
|
||||
|
||||
// place overrides here
|
||||
#undef MATRIX_ROW_PINS
|
||||
#define MATRIX_ROW_PINS { B4 }
|
||||
#undef MATRIX_COL_PINS
|
||||
#define MATRIX_COL_PINS { B6 }
|
||||
//#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
|
||||
#undef DIODE_DIRECTION
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define BACKLIGHT_PIN B5
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
#define BREATHING_PERIOD 5
|
||||
|
||||
/* for Tap Dance */
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 700
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
//#define DEBOUNCING_DELAY 5
|
||||
#undef DEBOUNCING_DELAY
|
||||
#define DEBOUNCING_DELAY 2
|
||||
|
||||
// set flashing LED with QMK DFU
|
||||
#define QMK_LED B0
|
||||
27
keyboards/bigswitch/keymaps/wanleg/keymap.c
Normal file
27
keyboards/bigswitch/keymaps/wanleg/keymap.c
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Copyright 2018 wanleg
|
||||
*
|
||||
* 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
|
||||
#include "wanleg.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT( /* Base */
|
||||
TD(CAD_TD) \
|
||||
),
|
||||
};
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
|
||||
}
|
||||
7
keyboards/bigswitch/keymaps/wanleg/rules.mk
Normal file
7
keyboards/bigswitch/keymaps/wanleg/rules.mk
Normal file
@@ -0,0 +1,7 @@
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
||||
|
||||
#If using a ProMicro and it has the QMK DFU bootloader instead of Caterina,
|
||||
#run "make <keyboard>:<keymap> dfu=qmk" when compiling to ensure it is flagged properly after being flashed
|
||||
ifeq ($(strip $(dfu)), qmk)
|
||||
BOOTLOADER = qmk-dfu
|
||||
endif
|
||||
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user