forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Keyboard: Add Handwired 108 Key with Trackpoint (qmk#4448)
* Include both base keyboards * Merge the keymap * Merge the configs * Add wiring diagram for clarity of documentation * Merge rules * Merge keyboard sources * Change names to compile * Update documentation to suit * Add qwerty layout to 108keyTrackpoint * Separate the dvorak standard layout from a media focused one * Update documentation to reflect new keymaps * [style] Add empty lines at ends of files * [style] Meet current QMK style guide * Bring READEME closer to the QMK template * [style] Change all "108keyTrackpoint" to "108key_trackpoint" * [style] Use "LAYOUT" instead of "KEYMAP" QMK terminology has changed Co-Authored-By: mkem114 <[email protected]> * Add two spaces after maintainer in README This is required to render properly Co-Authored-By: mkem114 <[email protected]> * Remove redundant line "PREVENT_STUCK_MODIFIERS" is default on for QMK Co-Authored-By: mkem114 <[email protected]> * Change include of keymaps to use QMK_KEYBOARD_H This includes automatically * Update make rules to match template * Change from KC_MENU to KC_APP The button functionality actually wanted is the context menu key * [style] Change "dvorakMedia" to "dvorak_media" * Update README to reflect minor changes
- Loading branch information
Showing
8 changed files
with
244 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
#include "108key_trackpoint.h" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#pragma once | ||
|
||
#include "quantum.h" | ||
|
||
#define LAYOUT( \ | ||
K000, K002, K003, K004, K005, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K019, K020, K021, K022, \ | ||
\ | ||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K219, K220, K221, K222, \ | ||
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K319, K320, K321, \ | ||
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K419, K420, K421, K422, \ | ||
K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K513, K516, K519, K520, K521, \ | ||
K600, K601, K603, K606, K610, K611, K613, K614, K615, K616, K617, K619, K621, K622, \ | ||
K705, K706, K707 \ | ||
) { \ | ||
{ K000, KC_NO, K002, K003, K004, K005, KC_NO, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, KC_NO, K019, K020, K021, K022 }, \ | ||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ | ||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215, K216, K217, KC_NO, K219, K220, K221, K222 }, \ | ||
{ K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, KC_NO, K319, K320, K321, KC_NO }, \ | ||
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K419, K420, K421, K422 }, \ | ||
{ KC_NO, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, KC_NO, K513, KC_NO, KC_NO, K516, KC_NO, KC_NO, K519, K520, K521, KC_NO }, \ | ||
{ K600, K601, KC_NO, K603, KC_NO, KC_NO, K606, KC_NO, KC_NO, KC_NO, K610, K611, KC_NO, K613, K614, K615, K616, K617, KC_NO, K619, KC_NO, K621, K622 }, \ | ||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K705, K706, K707, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# 108 Key with TrackPoint | ||
|
||
![wiring](https://raw.githubusercontent.com/qmk/qmk.fm/gh-pages/keyboards/handwired/108key_trackpoint/wiring.JPG) | ||
|
||
This is based off the handwired/trackpoint keyboard and generated code from [Keyboard Firmware Builder](https://kbfirmware.com/). | ||
|
||
Keyboard Maintainer: [mkem114](https://github.com/mkem114) | ||
Hardware Supported (tested): Teensy++ 2.0 | ||
|
||
Make example for this keyboard (after setting up your build environment): | ||
|
||
make handwired/108keyTrackpoint: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). | ||
|
||
You may have to modify the source code to suit 104 keys, RGB back-lights, different micro-controllers, or big ass enter. | ||
|
||
There are three keymaps: | ||
* qwerty with the four extra keys being: mute, media prev, media next, and media play | ||
* dvorak with the four extra keys being: mute, media prev, media next, and media play | ||
* dvorak_media with the caps lock being media play and the four extra keys being: mute, volume down, volume up, and media next | ||
|
||
To figure out how to wire your specific TrackPoint have a look out: [How to integrate a trackpoint in a mechanical keyboard](https://github.com/alonswartz/trackpoint). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#pragma once | ||
|
||
#include "config_common.h" | ||
|
||
#define VENDOR_ID 0x1234 | ||
#define PRODUCT_ID 0x5678 | ||
#define DEVICE_VER 0x0001 | ||
#define MANUFACTURER QMK | ||
#define PRODUCT 108Key-Trackpoint | ||
#define DESCRIPTION A 108 key ANSI keyboard with a trackpoint and three mouse buttons | ||
|
||
#define MATRIX_ROWS 8 | ||
#define MATRIX_COLS 23 | ||
|
||
#ifdef PS2_USE_USART | ||
#define PS2_CLOCK_PORT PORTD | ||
#define PS2_CLOCK_PIN PIND | ||
#define PS2_CLOCK_DDR DDRD | ||
#define PS2_CLOCK_BIT 5 | ||
#define PS2_DATA_PORT PORTD | ||
#define PS2_DATA_PIN PIND | ||
#define PS2_DATA_DDR DDRD | ||
#define PS2_DATA_BIT 2 | ||
|
||
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ | ||
/* set DDR of CLOCK as input to be slave */ | ||
#define PS2_USART_INIT() do { \ | ||
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \ | ||
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \ | ||
UCSR1C = ((1 << UMSEL10) | \ | ||
(3 << UPM10) | \ | ||
(0 << USBS1) | \ | ||
(3 << UCSZ10) | \ | ||
(0 << UCPOL1)); \ | ||
UCSR1A = 0; \ | ||
UBRR1H = 0; \ | ||
UBRR1L = 0; \ | ||
} while (0) | ||
#define PS2_USART_RX_INT_ON() do { \ | ||
UCSR1B = ((1 << RXCIE1) | \ | ||
(1 << RXEN1)); \ | ||
} while (0) | ||
#define PS2_USART_RX_POLL_ON() do { \ | ||
UCSR1B = (1 << RXEN1); \ | ||
} while (0) | ||
#define PS2_USART_OFF() do { \ | ||
UCSR1C = 0; \ | ||
UCSR1B &= ~((1 << RXEN1) | \ | ||
(1 << TXEN1)); \ | ||
} while (0) | ||
#define PS2_USART_RX_READY (UCSR1A & (1<<RXC1)) | ||
#define PS2_USART_RX_DATA UDR1 | ||
#define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1))) | ||
#define PS2_USART_RX_VECT USART1_RX_vect | ||
#endif | ||
|
||
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 } | ||
#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5, C6, C7, D0, D1, F0, D3, D4, F1, D6, D7, E0, E1, E2, E3, E4, E5, E6 } | ||
#define UNUSED_PINS | ||
|
||
/* COL2ROW or ROW2COL */ | ||
#define DIODE_DIRECTION COL2ROW | ||
|
||
#define DEBOUNCING_DELAY 5 | ||
|
||
#define LOCKING_SUPPORT_ENABLE | ||
#define LOCKING_RESYNC_ENABLE | ||
|
||
/* key combination for commkand */ | ||
#define IS_COMMAND() ( \ | ||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||
) | ||
|
14 changes: 14 additions & 0 deletions
14
keyboards/handwired/108key_trackpoint/keymaps/default/keymap.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#include QMK_KEYBOARD_H | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[0] = LAYOUT ( | ||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, | ||
|
||
KC_GRV, 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_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, 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_PGDN, KC_P7, KC_P8, KC_P9, | ||
KC_CAPS, 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_P4, KC_P5, KC_P6, KC_PPLS, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, | ||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_APP, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, | ||
KC_BTN1, KC_BTN3, KC_BTN2 | ||
) | ||
}; |
14 changes: 14 additions & 0 deletions
14
keyboards/handwired/108key_trackpoint/keymaps/dvorak/keymap.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#include QMK_KEYBOARD_H | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[0] = LAYOUT ( | ||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, | ||
|
||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, | ||
KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, | ||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, | ||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_APP, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, | ||
KC_BTN1, KC_BTN3, KC_BTN2 | ||
) | ||
}; |
14 changes: 14 additions & 0 deletions
14
keyboards/handwired/108key_trackpoint/keymaps/dvorak_media/keymap.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#include QMK_KEYBOARD_H | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[0] = LAYOUT ( | ||
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, | ||
|
||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, | ||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, | ||
KC_MPLY, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, | ||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, | ||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_APP, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, | ||
KC_BTN1, KC_BTN3, KC_BTN2 | ||
) | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# MCU name | ||
MCU = at90usb1286 | ||
#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 selection | ||
# Teensy halfkay | ||
# Pro Micro caterina | ||
# Atmel DFU atmel-dfu | ||
# LUFA DFU lufa-dfu | ||
# QMK DFU qmk-dfu | ||
# atmega32a bootloadHID | ||
BOOTLOADER = halfkay | ||
|
||
|
||
# If you don't know the bootloader type, then you can specify the | ||
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line | ||
# Teensy halfKay 512 | ||
# Teensy++ halfKay 1024 | ||
# Atmel DFU loader 4096 | ||
# LUFA bootloader 4096 | ||
# USBaspLoader 2048 | ||
# OPT_DEFS += -DBOOTLOADER_SIZE=4096 | ||
|
||
# Build Options | ||
# change yes to no to disable | ||
# | ||
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 = yes # Commands for debug and configuration | ||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | ||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | ||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
NKRO_ENABLE = yes # USB Nkey Rollover | ||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default | ||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow | ||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) | ||
UNICODE_ENABLE = no # Unicode | ||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | ||
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) | ||
PS2_MOUSE_ENABLE = yes | ||
PS2_USE_USART = yes |