Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 852d94f4e6 | |||
| 1c87b97dd6 | |||
| d9ef323f8a | |||
| 57b21c037c | |||
| fd3c1aa909 | |||
| 3d50a2867b | |||
| 0836e47e33 |
@@ -16,6 +16,7 @@ include common.mk
|
||||
KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
|
||||
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
|
||||
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
|
||||
STM32_PATH := quantum/stm32
|
||||
|
||||
# Force expansion
|
||||
TARGET := $(TARGET)
|
||||
@@ -68,6 +69,7 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
|
||||
KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
|
||||
endif
|
||||
|
||||
|
||||
# Pull in rules.mk files from all our subfolders
|
||||
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
|
||||
include $(KEYBOARD_PATH_5)/rules.mk
|
||||
@@ -85,6 +87,19 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
|
||||
include $(KEYBOARD_PATH_1)/rules.mk
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(PROTON)), yes)
|
||||
OPT_DEFS += -DPROTON_CONVERSION
|
||||
include $(STM32_PATH)/proton_c.mk
|
||||
endif
|
||||
|
||||
include quantum/mcu_selection.mk
|
||||
|
||||
ifdef MCU_FAMILY
|
||||
OPT_DEFS += -DQMK_STM32
|
||||
KEYBOARD_PATHS += $(STM32_PATH)
|
||||
endif
|
||||
|
||||
|
||||
# Find all the C source files to be compiled in subfolders.
|
||||
KEYBOARD_SRC :=
|
||||
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_f
|
||||
|
||||
There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JIS. North America primarily uses ANSI, Europe and Africa primarily use ISO, and Japan uses JIS. Regions not mentioned typically use either ANSI or ISO. The keycodes corresponding to these layouts are shown here:
|
||||
|
||||
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
|
||||

|
||||
<!-- Source for this image: http://www.keyboard-layout-editor.com/#/gists/070a530eedaed36a2d77f3f6fd455677 -->
|
||||

|
||||
|
||||
## Some Of My Keys Are Swapped Or Not Working
|
||||
|
||||
|
||||
@@ -63,6 +63,8 @@ Changing the **Value** sets the overall brightness.
|
||||
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|
||||
|
||||
?> For backwards compatibility, `RGB_SMOD` is another alias of `RGB_MOD`.
|
||||
|
||||
## Configuration
|
||||
|
||||
Your RGB lighting can be configured by placing these `#define`s in your `config.h`:
|
||||
|
||||
@@ -209,8 +209,6 @@ KC_WWW_FORWARD KC_WFWD
|
||||
KC_WWW_STOP KC_WSTP
|
||||
KC_WWW_REFRESH KC_WREF
|
||||
KC_WWW_FAVORITES KC_WFAV
|
||||
KC_BRIGHTNESS_UP KC_BRIU
|
||||
KC_BRIGHTNESS_DOWN KC_BRID
|
||||
/* Mousekey */
|
||||
KC_MS_UP KC_MS_U Mouse Cursor Up
|
||||
KC_MS_DOWN KC_MS_D Mouse Cursor Down
|
||||
|
||||
+12
-15
@@ -203,24 +203,21 @@ This is a reference only. Each group of keys links to the page documenting their
|
||||
|`KC_WWW_FAVORITES` |`KC_WFAV` |Browser Favorites (Windows) |
|
||||
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |Next Track (macOS) |
|
||||
|`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track (macOS) |
|
||||
|`KC_BRIGHTNESS_UP` |`KC_BRIU` |Brightness Up |
|
||||
|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |Brightness Down |
|
||||
|
||||
## [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|---------------|-----------|---------------------------------------------------------------------|
|
||||
|`RESET` | |Put the keyboard into DFU mode for flashing |
|
||||
|`DEBUG` | |Toggle debug mode |
|
||||
|`EEPROM_RESET` |`EEP_RST` |Resets EEPROM state by reinitializing it |
|
||||
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>`</code> when pressed with Shift or GUI|
|
||||
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|
||||
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|
||||
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|
||||
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|
||||
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|
||||
|`M(n)` | |Call macro `n` |
|
||||
|`MACROTAP(n)` | |Macro-tap `n` idk FIXME |
|
||||
|Key |Aliases |Description |
|
||||
|-------------|-----------|---------------------------------------------------------------------|
|
||||
|`RESET` | |Put the keyboard into DFU mode for flashing |
|
||||
|`DEBUG` | |Toggle debug mode |
|
||||
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>`</code> when pressed with Shift or GUI|
|
||||
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|
||||
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|
||||
|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
|
||||
|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
|
||||
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|
||||
|`M(n)` | |Call macro `n` |
|
||||
|`MACROTAP(n)`| |Macro-tap `n` idk FIXME |
|
||||
|
||||
## [Audio Keys](feature_audio.md)
|
||||
|
||||
|
||||
@@ -219,8 +219,6 @@ Windows and macOS use different keycodes for "next track" and "previous track".
|
||||
|`KC_WWW_FAVORITES` |`KC_WFAV`|Browser Favorites (Windows) |
|
||||
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD`|Next Track (macOS) |
|
||||
|`KC_MEDIA_REWIND` |`KC_MRWD`|Previous Track (macOS) |
|
||||
|`KC_BRIGHTNESS_UP` |`KC_BRIU`|Brightness Up |
|
||||
|`KC_BRIGHTNESS_DOWN` |`KC_BRID`|Brightness Down |
|
||||
|
||||
## Number Pad
|
||||
|
||||
|
||||
@@ -28,6 +28,6 @@ Sometimes it's useful to print debug messages from within your [custom code](cus
|
||||
After that you can use a few different print functions:
|
||||
|
||||
* `print("string")`: Print a simple string.
|
||||
* `uprintf("%s string", var)`: Print a formatted string
|
||||
* `sprintf("%s string", var)`: Print a formatted string
|
||||
* `dprint("string")` Print a simple string, but only when debug mode is enabled
|
||||
* `dprintf("%s string", var)`: Print a formatted string, but only when debug mode is enabled
|
||||
|
||||
+2
-2
@@ -18,14 +18,14 @@
|
||||
#define _BOARD_H_
|
||||
|
||||
/*
|
||||
* Setup for Clueboard 60% Keyboard
|
||||
* Setup for Generic STM32_F303 Board
|
||||
*/
|
||||
|
||||
/*
|
||||
* Board identifier.
|
||||
*/
|
||||
#define BOARD_GENERIC_STM32_F303XC
|
||||
#define BOARD_NAME "Planck PCB"
|
||||
#define BOARD_NAME "STM32_F303"
|
||||
|
||||
/*
|
||||
* Board oscillators-related settings.
|
||||
@@ -56,16 +56,3 @@
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K2d, K2e, K2f }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c, K3d, K3e, K3f } \
|
||||
}
|
||||
|
||||
#define LAYOUT_kc_ortho_4x12( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b \
|
||||
) \
|
||||
{ \
|
||||
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0a, KC_##K0b, ___, ___, ___, ___}, \
|
||||
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1a, KC_##K1b, ___, ___, ___, ___}, \
|
||||
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2a, KC_##K2b, ___, ___, ___, ___}, \
|
||||
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3a, KC_##K3b, ___, ___, ___, ___} \
|
||||
}
|
||||
|
||||
@@ -76,4 +76,5 @@ AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||
|
||||
LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12 ortho_4x16
|
||||
#FIXME: Community keymap build are currently failing due to missing functionality
|
||||
#LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12 ortho_4x16
|
||||
|
||||
@@ -77,4 +77,5 @@ AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||
|
||||
LAYOUTS = ortho_5x5 ortho_5x10 ortho_5x15
|
||||
#FIXME: Community keymap build are currently failing due to missing functionality
|
||||
#LAYOUTS = ortho_5x5 ortho_5x10 ortho_5x15
|
||||
|
||||
@@ -17,5 +17,3 @@
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
@@ -15,62 +15,19 @@
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum foobar_layers {
|
||||
QWERTY,
|
||||
FN1,
|
||||
FN2,
|
||||
FN3,
|
||||
FN4,
|
||||
FN5
|
||||
};
|
||||
|
||||
#define FN1_SPC LT(FN1, KC_SPC)
|
||||
#define FN2_BSC LT(FN2, KC_BSPC)
|
||||
#define FN3_C LT(FN3, KC_C)
|
||||
#define FN4_V LT(FN4, KC_V)
|
||||
#define FN5_B LT(FN5, KC_B)
|
||||
#define RALT_N RALT_T(KC_N)
|
||||
#define LALT_X LALT_T(KC_X)
|
||||
#define LCTL_Z LCTL_T(KC_Z)
|
||||
#define RCTL_M RCTL_T(KC_M)
|
||||
#define LSFT_ENT LSFT_T(KC_ENT)
|
||||
#define RGUI_ESC RGUI_T(KC_ESC)
|
||||
#define FN1_Q LT(1, KC_Q)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[QWERTY] = LAYOUT_split(
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGUI_ESC,
|
||||
LCTL_Z, LALT_X, FN3_C, FN4_V, FN2_BSC, FN1_SPC, FN5_B, RALT_N, RCTL_M, LSFT_ENT
|
||||
[0] = LAYOUT_split(
|
||||
FN1_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_BSPC, KC_SPC, KC_B, KC_N, KC_M, KC_ENT
|
||||
),
|
||||
|
||||
[FN1] = LAYOUT_split(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
_______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[FN2] = LAYOUT_split(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
||||
KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, KC_GRV,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[FN3] = LAYOUT_split(
|
||||
_______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_TAB, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
|
||||
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
[FN4] = LAYOUT_split(
|
||||
_______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_TAB, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[FN5] = LAYOUT_split(
|
||||
[1] = LAYOUT_split(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, RESET, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, RESET, _______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,BL_INC, BL_DEC, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,RGB_MOD,KC_TRNS,BL_ON, BL_OFF, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,RGB_SMOD,KC_TRNS,BL_ON, BL_OFF, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
|
||||
),
|
||||
/* You can copy this layer as base for a new fn layer * /
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
SRC += ws2812.c
|
||||
|
||||
# MCU name
|
||||
#MCU = at90usb1286
|
||||
MCU = atmega32u4
|
||||
@@ -52,7 +54,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
|
||||
@@ -26,13 +26,13 @@ F_CPU = 12000000
|
||||
|
||||
# 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
|
||||
# different sizes, comment this out, and the correct address will be loaded
|
||||
# automatically (+60). See bootloader.mk for all options.
|
||||
BOOTLOADER = bootloadHID
|
||||
|
||||
# build options
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
COMMAND_ENABLE = yes
|
||||
|
||||
@@ -26,13 +26,13 @@ F_CPU = 12000000
|
||||
|
||||
# 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
|
||||
# different sizes, comment this out, and the correct address will be loaded
|
||||
# automatically (+60). See bootloader.mk for all options.
|
||||
BOOTLOADER = bootloadHID
|
||||
|
||||
# build options
|
||||
BOOTMAGIC_ENABLE = full
|
||||
MOUSEKEY_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
COMMAND_ENABLE = yes
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
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 5291 keyboard converter
|
||||
#define DESCRIPTION 5291 keyboard converter
|
||||
|
||||
#define MATRIX_ROWS 24
|
||||
#define MATRIX_COLS 4
|
||||
|
||||
#define MATRIX_ROW_PINS {B2, B3, B4, B5, B6}
|
||||
#define MATRIX_COL_PINS {B0, B1}
|
||||
#define MATRIX_DATA_PIN D0
|
||||
#define MATRIX_STROBE_PIN D1
|
||||
#define LED_PIN D6
|
||||
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCING_DELAY 0
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
#include "ibm_5291.h"
|
||||
#include <avr/io.h>
|
||||
#include "quantum.h"
|
||||
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
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"
|
||||
|
||||
/*
|
||||
* ,-------. ,--------------------------------------------------------------------------.
|
||||
* | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck |
|
||||
* |-------| |--------------------------------------------------------------------------|
|
||||
* | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -|
|
||||
* |-------| |------------------------------------------------------|Ent|---------------|
|
||||
* | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| |
|
||||
* |-------| |----------------------------------------------------------------------| |
|
||||
* | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift|PrS| 1| 2| 3| +|
|
||||
* |-------| |----------------------------------------------------------------------| |
|
||||
* | F9|F10| | Alt | Space |CapsLck| 0 | . | |
|
||||
* `-------' `--------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
#define LAYOUT_5291( \
|
||||
KEY_F1,KEY_F2, KEY_ESC, KEY_1, KEY_2,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7,KEY_8,KEY_9, KEY_0, KEY_MIN, KEY_EQU, KEY_BACK, KEY_NLOCK, KEY_SLOCK, \
|
||||
KEY_F3,KEY_F4, KEY_TAB, KEY_Q, KEY_W,KEY_E,KEY_R,KEY_T,KEY_Y,KEY_U,KEY_I,KEY_O, KEY_P, KEY_LBRC,KEY_RBRC, KEY_PAD7,KEY_PAD8, KEY_PAD9,KEY_PMIN, \
|
||||
KEY_F5,KEY_F6, KEY_LCTR,KEY_A, KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K,KEY_L, KEY_SEMI,KEY_QUOT,KEY_TICK, KEY_ENTR,KEY_PAD4,KEY_PAD5, KEY_PAD6, \
|
||||
KEY_F7,KEY_F8, KEY_LSFS,KEY_BSLS,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_N,KEY_M,KEY_COMM,KEY_DOT, KEY_SLS,KEY_RSFS, KEY_PAST,KEY_PAD1,KEY_PAD2, KEY_PAD3,KEY_PPLS, \
|
||||
KEY_F9,KEY_F10, KEY_LALT, KEY_SPACE, KEY_CLOCK, KEY_PAD0, KEY_PDOT \
|
||||
) \
|
||||
{ {KEY_Z, KEY_S, KEY_W, KEY_3 }\
|
||||
, {KEY_X, KEY_D, KEY_E, KEY_4 }\
|
||||
, {KEY_C, KEY_F, KEY_R, KEY_5 }\
|
||||
, {KEY_V, KEY_G, KEY_T, KEY_6 }\
|
||||
, {KEY_B, KEY_H, KEY_Y, KEY_7 }\
|
||||
, {KEY_N, KEY_J, KEY_U, KEY_8 }\
|
||||
, {KEY_PAD2, KEY_PAD5,KEY_PAD8,KEY_NLOCK }\
|
||||
, {KEY_M, KEY_K, KEY_I, KEY_9 }\
|
||||
, {KEY_COMM, KEY_L, KEY_O, KEY_0 }\
|
||||
, {KEY_DOT, KEY_SEMI,KEY_P, KEY_MIN }\
|
||||
, {KEY_SLS, KEY_QUOT,KEY_LBRC,KEY_EQU }\
|
||||
, {KEY_SPACE, KEY_RSFS,KEY_TICK,KEY_RBRC }\
|
||||
, {KEY_CLOCK, KEY_PAST,KEY_ENTR,KEY_BACK }\
|
||||
, {KEY_PAD0, KEY_PAD1,KEY_PAD4,KEY_PAD7 }\
|
||||
, {KEY_PPLS, KC_NO, KEY_PMIN,KEY_SLOCK }\
|
||||
, {KEY_PDOT, KEY_PAD3,KEY_PAD6,KEY_PAD9 }\
|
||||
, {KEY_BSLS, KEY_A, KEY_Q, KEY_2 }\
|
||||
, {KEY_LALT, KC_NO, KC_NO, KEY_1 }\
|
||||
, {KEY_F7, KEY_F5, KEY_F3, KEY_F1 }\
|
||||
, {KEY_F8, KEY_F6, KEY_F4, KEY_F2 }\
|
||||
, {KC_F10, KC_NO, KC_NO, KC_NO }\
|
||||
, {KC_F9, KC_NO, KC_NO, KC_NO }\
|
||||
, {KEY_LSFS, KEY_LCTR,KEY_TAB, KEY_ESC }\
|
||||
, {KC_NO, KC_NO, KC_NO, KC_NO }\
|
||||
}
|
||||
|
||||
#define LAYOUT LAYOUT_5291
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "IBM 5291",
|
||||
"keyboard_folder": "converter/5291",
|
||||
"url": "https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard",
|
||||
"maintainer": "listofoptions",
|
||||
}
|
||||
@@ -1,233 +0,0 @@
|
||||
/*
|
||||
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
|
||||
/*
|
||||
enum xt_keycodes
|
||||
{ XT_PAST = SAFE_RANGE // XT pad asterisk / print screen
|
||||
, XT_SLCK // XT scroll lock / break
|
||||
, XT_F6 // F6 / app key
|
||||
, XT_F5 // F5 / gui
|
||||
, XT_F9 // F9 / F11
|
||||
, XT_F10 // F10 / F12
|
||||
} ;
|
||||
|
||||
static bool shift_pressed = false ,
|
||||
alt_pressed = false ,
|
||||
ctrl_pressed = false ,
|
||||
xt_pscr_pressed = false ,
|
||||
xt_brk_pressed = false ,
|
||||
xt_app_pressed = false ,
|
||||
xt_gui_pressed = false ,
|
||||
xt_lout_pressed = false ,
|
||||
xt_f11_pressed = false ,
|
||||
xt_f12_pressed = false ;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_LSFT:
|
||||
case KC_RSFT:
|
||||
if (record->event.pressed) {
|
||||
shift_pressed = true ;
|
||||
} else {
|
||||
shift_pressed = false ;
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
|
||||
case KC_LALT:
|
||||
if (record->event.pressed) {
|
||||
alt_pressed = true ;
|
||||
} else {
|
||||
alt_pressed = false ;
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
|
||||
case KC_LCTL:
|
||||
if (record->event.pressed) {
|
||||
ctrl_pressed = true ;
|
||||
} else {
|
||||
ctrl_pressed = false ;
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
|
||||
case XT_PAST:
|
||||
if (record->event.pressed) {
|
||||
if (shift_pressed) {
|
||||
xt_pscr_pressed = true ;
|
||||
register_code(KC_PSCR);
|
||||
} else {
|
||||
register_code(KC_PAST);
|
||||
}
|
||||
} else {
|
||||
if (xt_pscr_pressed) {
|
||||
xt_pscr_pressed = false ;
|
||||
unregister_code(KC_PSCR);
|
||||
} else {
|
||||
unregister_code(KC_PAST);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case XT_SLCK:
|
||||
if (record->event.pressed) {
|
||||
if (ctrl_pressed) {
|
||||
xt_brk_pressed = true ;
|
||||
register_code(KC_BRK);
|
||||
} else {
|
||||
register_code(KC_SLCK);
|
||||
}
|
||||
} else {
|
||||
if (xt_brk_pressed) {
|
||||
xt_brk_pressed = false ;
|
||||
unregister_code(KC_BRK);
|
||||
} else {
|
||||
unregister_code(KC_SLCK);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case XT_F6:
|
||||
if (record->event.pressed) {
|
||||
if (shift_pressed) {
|
||||
xt_app_pressed = true ;
|
||||
register_code(KC_APP);
|
||||
} else {
|
||||
register_code(KC_F6);
|
||||
}
|
||||
} else {
|
||||
if (xt_app_pressed) {
|
||||
xt_app_pressed = false ;
|
||||
unregister_code(KC_APP);
|
||||
} else {
|
||||
unregister_code(KC_F6);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case XT_F5:
|
||||
if (record->event.pressed) {
|
||||
if (shift_pressed) {
|
||||
xt_gui_pressed = true ;
|
||||
register_code(KC_LGUI);
|
||||
} else if (ctrl_pressed) {
|
||||
xt_lout_pressed = true ;
|
||||
register_code (KC_LGUI) ;
|
||||
register_code (KC_L) ;
|
||||
} else {
|
||||
register_code(KC_F5);
|
||||
}
|
||||
} else {
|
||||
if (xt_gui_pressed) {
|
||||
xt_gui_pressed = false ;
|
||||
unregister_code(KC_LGUI);
|
||||
} else if (xt_lout_pressed) {
|
||||
xt_lout_pressed = false ;
|
||||
unregister_code (KC_LGUI) ;
|
||||
unregister_code (KC_L) ;
|
||||
} else {
|
||||
unregister_code(KC_F5);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case XT_F9:
|
||||
if (record->event.pressed) {
|
||||
if (shift_pressed) {
|
||||
xt_f11_pressed = true ;
|
||||
register_code(KC_F11);
|
||||
} else {
|
||||
register_code(KC_F9);
|
||||
}
|
||||
} else {
|
||||
if (xt_f11_pressed) {
|
||||
xt_f11_pressed = false ;
|
||||
unregister_code(KC_F11);
|
||||
} else {
|
||||
unregister_code(KC_F9);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case XT_F10:
|
||||
if (record->event.pressed) {
|
||||
if (shift_pressed) {
|
||||
xt_f12_pressed = true ;
|
||||
register_code(KC_F12);
|
||||
} else {
|
||||
register_code(KC_F10);
|
||||
}
|
||||
} else {
|
||||
if (xt_f12_pressed) {
|
||||
xt_f12_pressed = false ;
|
||||
unregister_code(KC_F12);
|
||||
} else {
|
||||
unregister_code(KC_F10);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
default:
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// default layout is the standard XT layout
|
||||
/*
|
||||
* ,-------. ,--------------------------------------------------------------------------.
|
||||
* | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck |
|
||||
* |-------| |--------------------------------------------------------------------------|
|
||||
* | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -|
|
||||
* |-------| |------------------------------------------------------|Ent|---------------|
|
||||
* | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| |
|
||||
* |-------| |----------------------------------------------------------------------| |
|
||||
* | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift| *| 1| 2| 3| +|
|
||||
* |-------| |----------------------------------------------------------------------| |
|
||||
* | F9|F10| | Alt | Space |CapsLck| 0 | . | |
|
||||
* `-------' `--------------------------------------------------------------------------'
|
||||
*/
|
||||
/*
|
||||
[0] = LAYOUT (
|
||||
KC_F1,KC_F2, KC_ESC, KC_1, KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, XT_SLCK,
|
||||
KC_F3,KC_F4, 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_P7,KC_P8, KC_P9, KC_PMNS,
|
||||
XT_F5,XT_F6, 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_GRV, KC_ENT, KC_P4,KC_P5, KC_P6,
|
||||
KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,XT_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS,
|
||||
XT_F9,XT_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT
|
||||
)
|
||||
*/
|
||||
[0] = LAYOUT (
|
||||
KC_F1,KC_F2, KC_ESC, KC_1, KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, KC_SLCK,
|
||||
KC_F3,KC_F4, 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_P7,KC_P8, KC_P9, KC_PMNS,
|
||||
KC_F5,KC_F6, 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_GRV, KC_ENT, KC_P4,KC_P5, KC_P6,
|
||||
KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS,
|
||||
KC_F9,KC_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT
|
||||
)
|
||||
} ;
|
||||
|
||||
Binary file not shown.
@@ -1,284 +0,0 @@
|
||||
/*
|
||||
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 "config.h"
|
||||
|
||||
|
||||
#ifndef DEBOUNCING_DELAY
|
||||
# define DEBOUNCING_DELAY 5
|
||||
#endif
|
||||
|
||||
#define print_matrix_header() print("\nr/c 01234567\n")
|
||||
#define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
|
||||
#define matrix_bitpop(i) bitpop(matrix[i])
|
||||
#define ROW_SHIFTER ((uint8_t)1)
|
||||
#define check_bit(var,pos) ((var) & (1<<(pos)))
|
||||
|
||||
#define NUM_ROW_PINS 5
|
||||
#define NUM_COL_PINS 2
|
||||
|
||||
static const uint8_t row_pins [NUM_ROW_PINS] = MATRIX_ROW_PINS ;
|
||||
static const uint8_t col_pins [NUM_ROW_PINS] = MATRIX_COL_PINS ;
|
||||
|
||||
#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 [MATRIX_ROWS] = {0};
|
||||
#endif
|
||||
|
||||
static
|
||||
inline
|
||||
void toggle_led(void) {
|
||||
uint8_t pin = LED_PIN ;
|
||||
_SFR_IO8((pin >> 4) + 2) ^= _BV(pin & 0xF);
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void init_led(void) {
|
||||
uint8_t pin = LED_PIN ;
|
||||
_SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
|
||||
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void init_data(void) {
|
||||
uint8_t pin = MATRIX_DATA_PIN ;
|
||||
_SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
|
||||
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // LO
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void init_strobe(void) {
|
||||
uint8_t pin = MATRIX_STROBE_PIN ;
|
||||
_SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
|
||||
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void init_rows(void) {
|
||||
for ( uint8_t i = 0 ; i < NUM_ROW_PINS; ++i ) {
|
||||
uint8_t pin = row_pins[i];
|
||||
_SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
|
||||
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void init_cols(void) {
|
||||
for ( uint8_t i = 0 ; i < NUM_COL_PINS; ++i ) {
|
||||
uint8_t pin = col_pins[i];
|
||||
_SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
|
||||
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void select_row(uint8_t current_row) {
|
||||
for ( uint8_t i = 0 ; i < NUM_ROW_PINS; ++i ) {
|
||||
uint8_t pin = row_pins[i] ;
|
||||
if ( check_bit( current_row, i ) ) {
|
||||
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
|
||||
} else {
|
||||
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
|
||||
}
|
||||
}
|
||||
wait_us(30) ;
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
void select_col(uint8_t current_col) {
|
||||
for ( uint8_t i = 0 ; i < NUM_COL_PINS; ++i ) {
|
||||
uint8_t pin = col_pins[i] ;
|
||||
if ( check_bit( current_col, i ) ) {
|
||||
_SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
|
||||
} else {
|
||||
_SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
|
||||
}
|
||||
}
|
||||
wait_us(30) ;
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
uint8_t matrix_strobe(uint8_t col_index) {
|
||||
uint8_t strobe_pin = MATRIX_STROBE_PIN ;
|
||||
uint8_t data_pin = MATRIX_DATA_PIN ;
|
||||
|
||||
// set strobe pin low
|
||||
_SFR_IO8((strobe_pin >> 4) + 2) &= ~_BV(strobe_pin & 0xF);
|
||||
|
||||
wait_us(30) ;
|
||||
|
||||
// read data
|
||||
uint8_t data = (_SFR_IO8(data_pin >> 4) & _BV(data_pin & 0xF)) ;
|
||||
|
||||
// set strobe pin hi
|
||||
_SFR_IO8((strobe_pin >> 4) + 2) |= _BV(strobe_pin & 0xF);
|
||||
|
||||
uint8_t out = data ? (1 << col_index) : 0 ;
|
||||
return out ;
|
||||
}
|
||||
|
||||
static
|
||||
bool matrix_read(uint8_t current_matrix[], uint8_t current_row) {
|
||||
// Store last value of row prior to reading
|
||||
uint8_t last_row_value = current_matrix[current_row];
|
||||
|
||||
// Clear data in matrix row
|
||||
current_matrix[current_row] = 0;
|
||||
|
||||
select_row(current_row);
|
||||
|
||||
// For each col...
|
||||
for(uint8_t col_index = 0; col_index < MATRIX_COLS; ++col_index) {
|
||||
|
||||
select_col(col_index) ;
|
||||
|
||||
// strobe the matrix
|
||||
// Populate the matrix row with the state of the data pin
|
||||
current_matrix[current_row] |= matrix_strobe(col_index) ;
|
||||
}
|
||||
|
||||
bool test = last_row_value != current_matrix[current_row] ;
|
||||
return test ;
|
||||
}
|
||||
|
||||
__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) {
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_rows(void) {
|
||||
return MATRIX_ROWS;
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_cols(void) {
|
||||
return MATRIX_COLS;
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_get_row(uint8_t row) {
|
||||
return matrix[row];
|
||||
}
|
||||
|
||||
void matrix_init(void) {
|
||||
init_led() ;
|
||||
init_rows() ;
|
||||
init_cols() ;
|
||||
init_data() ;
|
||||
init_strobe() ;
|
||||
|
||||
// initialize matrix state: all keys off
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
matrix[i] = 0;
|
||||
# if (DEBOUNCING_DELAY > 0)
|
||||
matrix_debounce [i] = 0;
|
||||
# endif
|
||||
}
|
||||
|
||||
matrix_init_quantum() ;
|
||||
}
|
||||
|
||||
uint8_t matrix_scan(void) {
|
||||
for ( uint8_t current_row = 0; current_row < MATRIX_ROWS; ++current_row ) {
|
||||
# if (DEBOUNCING_DELAY > 0)
|
||||
bool matrix_changed = matrix_read(matrix_debounce, current_row);
|
||||
|
||||
if (matrix_changed) {
|
||||
debouncing = true ;
|
||||
debouncing_time = timer_read();
|
||||
}
|
||||
|
||||
# else
|
||||
matrix_read(matrix, current_row);
|
||||
# endif
|
||||
}
|
||||
|
||||
# if (DEBOUNCING_DELAY > 0)
|
||||
if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
matrix[i] = matrix_debounce[i];
|
||||
}
|
||||
debouncing = false;
|
||||
}
|
||||
# endif
|
||||
|
||||
matrix_scan_quantum();
|
||||
return 1;
|
||||
}
|
||||
|
||||
void matrix_print(void) {
|
||||
print_matrix_header();
|
||||
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||
phex(row); print(": ");
|
||||
print_matrix_row(row);
|
||||
print("\n");
|
||||
}
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
0,Z
|
||||
1,S
|
||||
2,W
|
||||
3,3
|
||||
4,X
|
||||
5,D
|
||||
6,E
|
||||
7,4
|
||||
8,C
|
||||
9,F
|
||||
10,R
|
||||
11,5
|
||||
12,V
|
||||
13,G
|
||||
14,T
|
||||
15,6
|
||||
16,B
|
||||
17,H
|
||||
18,Y
|
||||
19,7
|
||||
20,N
|
||||
21,J
|
||||
22,U
|
||||
23,8
|
||||
24,PAD_2
|
||||
25,PAD_5
|
||||
26,PAD_8
|
||||
27,NUM_LOCK
|
||||
28,M
|
||||
29,K
|
||||
30,I
|
||||
31,9
|
||||
32,COMMA
|
||||
33,L
|
||||
34,O
|
||||
35,0
|
||||
36,PERIOD
|
||||
37,SEMICOLON
|
||||
38,P
|
||||
39,MINUS
|
||||
40,SLASH
|
||||
41,QUOTE
|
||||
42,LEFT_BRACE
|
||||
43,EQUAL
|
||||
44,SPACE
|
||||
45,RSHIFT
|
||||
46,BACK_QUOTE
|
||||
47,RIGHT_BRACE
|
||||
48,CAPS_LOCK
|
||||
49,PAD_ASTERIX
|
||||
50,ENTER
|
||||
51,BACKSPACE
|
||||
52,PAD_0
|
||||
53,PAD_1
|
||||
54,PAD_4
|
||||
55,PAD_7
|
||||
56,PAD_PLUS
|
||||
57,UNASSIGNED
|
||||
58,PAD_MINUS
|
||||
59,SCROLL_LOCK
|
||||
60,PAD_PERIOD
|
||||
61,PAD_3
|
||||
62,PAD_6
|
||||
63,PAD_9
|
||||
64,BACKSLASH
|
||||
65,A
|
||||
66,Q
|
||||
67,2
|
||||
68,LALT
|
||||
69,UNASSIGNED
|
||||
70,UNASSIGNED
|
||||
71,1
|
||||
72,F7
|
||||
73,F5
|
||||
74,F3
|
||||
75,F1
|
||||
76,F8
|
||||
77,F6
|
||||
78,F4
|
||||
79,F2
|
||||
80,F10
|
||||
81,UNASSIGNED
|
||||
82,UNASSIGNED
|
||||
83,UNASSIGNED
|
||||
84,F9
|
||||
85,UNASSIGNED
|
||||
86,UNASSIGNED
|
||||
87,UNASSIGNED
|
||||
88,LSHIFT
|
||||
89,LCTRL
|
||||
90,TAB
|
||||
91,ESC
|
||||
92,UNASSIGNED
|
||||
93,UNASSIGNED
|
||||
94,UNASSIGNED
|
||||
95,UNASSIGNED
|
||||
|
@@ -1,70 +0,0 @@
|
||||
# IBM 5291 keyboard converter
|
||||
|
||||

|
||||
|
||||
A converter for the eponymous keyboard.
|
||||
|
||||
Keyboard Maintainer: [Listofoptions](https://github.com/listofoptions)
|
||||
Hardware Supported: IBM 5291, Teensy 2.0
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make converter/ibm_5291: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).
|
||||
|
||||
|
||||
the pinout is as follows:
|
||||
|
||||
IBM−5291−Cable to Pinhead−14
|
||||
|
||||
| pin | description
|
||||
----|------------------------
|
||||
1 | GND
|
||||
2 | NC
|
||||
3 | GND
|
||||
4 | GN)
|
||||
5 | +5V
|
||||
6 | D0
|
||||
7 | D1
|
||||
8 | D2
|
||||
9 | D3
|
||||
10| D4
|
||||
11| D5
|
||||
12| D6
|
||||
13| Strobe
|
||||
14| Out
|
||||
|
||||
the pins on this connector are organized 
|
||||
|
||||
IBM−5291−2 Cable with DB15M connector
|
||||
|
||||
| pin | description
|
||||
----|-------------
|
||||
|1,2,3 | GND
|
||||
|4 | +5V
|
||||
|5 | D0
|
||||
|6 | D1
|
||||
|7 | D2
|
||||
|8 | D3
|
||||
|9 | D4
|
||||
|10 | D5
|
||||
|11 | D6
|
||||
|12 | Strobe
|
||||
|13 | Out
|
||||
|14 | PE
|
||||
|15 | NC
|
||||
|
||||
the above connector is actually numbered so it should be easier to determine
|
||||
where the needed connections are.
|
||||
|
||||
to connect to the teensy, the following are pins are needed (if you should choose not set your own):
|
||||
* PB0 -> PB6 are connected to D0 -> D6
|
||||
* +5V is connected to the corresponding teensy pin
|
||||
* gnd is as well, only one of the gnd pins needs to be connected though.
|
||||
* strobe is connected to pin PD1
|
||||
* data is connected to PD0
|
||||
* PE does not need to be connected to anything, but it could also be connected to gnd
|
||||
|
||||
sources:
|
||||
http://www.retrocomputing.eu/documents/5291_MaintenanceLibrary.pdf
|
||||
@@ -1,72 +0,0 @@
|
||||
# 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 = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # 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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user