aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Nosachev <quartz64@gmail.com>2019-12-17 08:42:03 +0300
committerJames Young <18669334+noroadsleft@users.noreply.github.com>2019-12-16 21:42:03 -0800
commit4ebecc424e7f4beeb6985faf0ed9199823fa648f (patch)
treee2a4085c2dd80194e95bec1488a430596e7f65aa
parenta860da891497afc536d6248fad35dff5fb782472 (diff)
downloadqmk_firmware-4ebecc424e7f4beeb6985faf0ed9199823fa648f.tar.gz
qmk_firmware-4ebecc424e7f4beeb6985faf0ed9199823fa648f.zip
[Keyboard] Magnavox Videowriter conversion with Pro Micro (#7634)
* Magnavox Videowriter convertion * Magnavox Videowriter: readme, images * Update keyboards/handwired/videowriter/info.json * Update keyboards/handwired/videowriter/README.md * Update keyboards/handwired/videowriter/README.md * Update keyboards/handwired/videowriter/info.json * Update keyboards/handwired/videowriter/info.json * Update keyboards/handwired/videowriter/info.json * Update keyboards/handwired/videowriter/info.json * Update keyboards/handwired/videowriter/info.json * suggested changes * suggested changes * fix comment symbol * Update keyboards/handwired/videowriter/rules.mk * Update keyboards/handwired/videowriter/rules.mk * Update keyboards/handwired/videowriter/rules.mk
-rw-r--r--keyboards/handwired/videowriter/README.md61
-rw-r--r--keyboards/handwired/videowriter/config.h140
-rw-r--r--keyboards/handwired/videowriter/info.json20
-rw-r--r--keyboards/handwired/videowriter/keymaps/default/keymap.c107
-rw-r--r--keyboards/handwired/videowriter/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/videowriter/keymaps/oleg/config.h20
-rw-r--r--keyboards/handwired/videowriter/keymaps/oleg/keymap.c108
-rw-r--r--keyboards/handwired/videowriter/keymaps/oleg/rules.mk4
-rw-r--r--keyboards/handwired/videowriter/rules.mk32
-rw-r--r--keyboards/handwired/videowriter/videowriter.c17
-rw-r--r--keyboards/handwired/videowriter/videowriter.h59
11 files changed, 569 insertions, 0 deletions
diff --git a/keyboards/handwired/videowriter/README.md b/keyboards/handwired/videowriter/README.md
new file mode 100644
index 000000000..ef8471aa9
--- /dev/null
+++ b/keyboards/handwired/videowriter/README.md
@@ -0,0 +1,61 @@
1# QMK-based firmware for Magnavox Videowriter keyboard
2Matrix layout is based on info from this [article](https://deskthority.net/workshop-f7/magnavox-videowriter-keyboard-cleanup-and-conversion-t19687.html).
3
4![Videowriter](https://i.imgur.com/zNTHmZa.jpg)
5
6Magnavox Videowriter keyboard conversion project: direct connection of Pro Micro to the matrix.
7
8* Keyboard Maintainer: [DmNosachev](https://github.com/DmNosachev)
9* Hardware Supported: Alps-based [Magnavox Videowriter keyboard](https://deskthority.net/wiki/Magnavox_VideoWriter), Pro Micro 16MHz 5V MCU board (you can use any MCU which is supported by QMK and has 18 or more IO).
10
11Make example for this keyboard (after setting up your build environment):
12
13 make handwired/videowriter:default
14
15See 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).
16
17# Modding
18
19## Matrix
20
21Videowriter has 8x10 matrix:
22
23| col/row | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
24|---------|----------|-----------|-----------|-----------|----------|-----------|-----------|---------|
25| 0 | | | | | | | 51 LShift | 39 Caps |
26| 1 | 08 Copy | 07 Find | 06 Split | 05 Center | 04 Page | 03 Spell | 02 Print | 01 Menu |
27| 2 | 16 5 | 15 4 | 14 3 | 13 2 | 12 1 | 11 Delete | 10 GoTo | 09 Move |
28| 3 | 24 BkSpc | 23 Equals | 22 Minus | 21 0 | 20 9 | 19 8 | 18 7 | 17 6 |
29| 4 | 32 U | 31 Y | 30 T | 29 R | 28 E | 27 W | 26 Q | 25 Tab |
30| 5 | 41 S | 40 A | 38 Return | 37 ] | 36 [ | 35 P | 34 O | 33 I |
31| 6 | 49 ; | 48 L | 47 K | 46 J | 45 H | 44 G | 43 F | 42 D |
32| 7 | 58 M | 57 N | 56 B | 55 V | 54 C | 53 X | 52 Z | 50 " |
33| 8 | 67 Left | 66 Up | 65 Insert | 64 Space | 63 Style | 61 / | 60 . | 59 , |
34| 9 | | | 62 RShift | 72 Undo | 71 Help | 70 Do | 69 Right | 68 Down |
35
36## Separating Shift keys
37Initially left and right Shift keys are connected in parrallel. You need to cut the traces from right Shift (switch 62) and wire it to column 2 (switch 65, right pin) and row 9 (switch 71, bottom pin).
38
39![Right shift](https://i.imgur.com/ttdTVtC.jpg)
40
41## Stock components removal
42SN74LS145N IC (BCD-to-decimal decoder, drives matrix rows), NEC D8049HC IC (MCU, drives matrix columns) and resistor array need to be desoldered from the PCB. You need to shorten the 4 diodes (D2–D5) in the bottom right corner of the PCB (solder a wire between their pins).
43I've also removed two electrolytic capacitors and some ceramic capacitors just to free an additional space.
44
45Optional: add diodes between each switch and corresponding row for NKRO. If you choose not to add them, create `config.h` file in your personal keymap folder and add `#define MATRIX_HAS_GHOST` to it.
46
47## Pro Micro
48Suggested mount position for the Pro Micro:
49
50![PCB bottom side](https://i.imgur.com/bb7zZD0.jpg)
51
521. Solder two 8-pin headers to the Pro Micro (pin D1-B5 on the left side and pins F4-B6 on the right side).
532. Solder the Pro Micro to the Videowriter's PCB.
543. Solder 6 wire bridges (pink color on the photo).
554. By this point rows 0-4 and all columns will be already in place.
565. Connect rows 5-9 (see right side of the PCB) to the corresponding pins of the Pro Micro using additional wires.
576. Optional: connect a push button between Reset and Ground pins.
58
59![PCB top side](https://i.imgur.com/PVEXIxj.jpg)
60
61Compile and flash the firmware. Use matrix [debug mode](https://docs.qmk.fm/#/feature_command) if something is wrong.
diff --git a/keyboards/handwired/videowriter/config.h b/keyboards/handwired/videowriter/config.h
new file mode 100644
index 000000000..d392564eb
--- /dev/null
+++ b/keyboards/handwired/videowriter/config.h
@@ -0,0 +1,140 @@
1/*
2Copyright 2019 DmNosachev
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x0000
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Magnavox
27#define PRODUCT Videowriter
28#define DESCRIPTION Keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 10
32#define MATRIX_COLS 8
33
34/*
35 * Keyboard Matrix Assignments
36 *
37 * Change this to how you wired your keyboard
38 * COLS: AVR pins used for columns, left to right
39 * ROWS: AVR pins used for rows, top to bottom
40 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
41 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
42 *
43 */
44#define MATRIX_ROW_PINS { D7, C6, D1, D0, D4, D2, D3, E6, B4, B5 }
45#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
46#define UNUSED_PINS
47
48/* COL2ROW, ROW2COL*/
49#define DIODE_DIRECTION COL2ROW
50
51/* Uncomment this if you didn't install diodes */
52//#define MATRIX_HAS_GHOST
53
54/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
55#define DEBOUNCE 5
56
57/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
58#define LOCKING_SUPPORT_ENABLE
59/* Locking resynchronize hack */
60#define LOCKING_RESYNC_ENABLE
61
62
63/*
64 * Magic Key Options
65 *
66 * Magic keys are hotkey commands that allow control over firmware functions of
67 * the keyboard. They are best used in combination with the HID Listen program,
68 * found here: https://www.pjrc.com/teensy/hid_listen.html
69 *
70 * The options below allow the magic key functionality to be changed. This is
71 * useful if your keyboard/keypad is missing keys and you want magic key support.
72 *
73 */
74
75/* key combination for magic key command */
76/* defined by default; to change, uncomment and set to the combination you want */
77//#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
78
79/* control how magic key switches layers */
80//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
81//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
82//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
83
84/* override magic key keymap */
85//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
86//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
87//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
88//#define MAGIC_KEY_HELP H
89//#define MAGIC_KEY_HELP_ALT SLASH
90//#define MAGIC_KEY_DEBUG D
91//#define MAGIC_KEY_DEBUG_MATRIX X
92//#define MAGIC_KEY_DEBUG_KBD K
93//#define MAGIC_KEY_DEBUG_MOUSE M
94//#define MAGIC_KEY_VERSION V
95//#define MAGIC_KEY_STATUS S
96//#define MAGIC_KEY_CONSOLE C
97//#define MAGIC_KEY_LAYER0 0
98//#define MAGIC_KEY_LAYER0_ALT GRAVE
99//#define MAGIC_KEY_LAYER1 1
100//#define MAGIC_KEY_LAYER2 2
101//#define MAGIC_KEY_LAYER3 3
102//#define MAGIC_KEY_LAYER4 4
103//#define MAGIC_KEY_LAYER5 5
104//#define MAGIC_KEY_LAYER6 6
105//#define MAGIC_KEY_LAYER7 7
106//#define MAGIC_KEY_LAYER8 8
107//#define MAGIC_KEY_LAYER9 9
108//#define MAGIC_KEY_BOOTLOADER B
109//#define MAGIC_KEY_BOOTLOADER_ALT ESC
110//#define MAGIC_KEY_LOCK CAPS
111//#define MAGIC_KEY_EEPROM E
112//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
113//#define MAGIC_KEY_NKRO N
114//#define MAGIC_KEY_SLEEP_LED Z
115
116/*
117 * Feature disable options
118 * These options are also useful to firmware size reduction.
119 */
120
121/* disable debug print */
122//#define NO_DEBUG
123
124/* disable print */
125//#define NO_PRINT
126
127/* disable action features */
128//#define NO_ACTION_LAYER
129//#define NO_ACTION_TAPPING
130//#define NO_ACTION_ONESHOT
131
132/* disable these deprecated features by default */
133#ifndef LINK_TIME_OPTIMIZATION_ENABLE
134 #define NO_ACTION_MACRO
135 #define NO_ACTION_FUNCTION
136#endif
137
138/* Bootmagic Lite key configuration */
139// #define BOOTMAGIC_LITE_ROW 0
140// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/videowriter/info.json b/keyboards/handwired/videowriter/info.json
new file mode 100644
index 000000000..194b558be
--- /dev/null
+++ b/keyboards/handwired/videowriter/info.json
@@ -0,0 +1,20 @@
1{
2 "keyboard_name": "videowriter",
3 "url": "https://deskthority.net/viewtopic.php?f=7&t=20210",
4 "maintainer": "DmNosachev",
5 "width": 16,
6 "height": 7.5,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label":"menu", "x":1, "y":1, "h":0.75}, {"label":"print", "x":2, "y":1, "h":0.75}, {"label":"spell", "x":3, "y":1, "h":0.75}, {"label":"page", "x":4.5, "y":1, "h":0.75}, {"label":"center", "x":5.5, "y":1, "h":0.75}, {"label":"split", "x":6.5, "y":1, "h":0.75}, {"label":"find", "x":7.5, "y":1, "h":0.75}, {"label":"copy", "x":9, "y":1, "h":0.75}, {"label":"move", "x":10, "y":1, "h":0.75}, {"label":"go to", "x":11, "y":1, "h":0.75},
11 {"label":"left", "x":13, "y":0.5}, {"label":"down", "x":14, "y":1}, {"label":"up", "x":14, "y":0}, {"label":"right", "x":15, "y":0.5},
12 {"label":"del", "x":0, "y":2.5}, {"label":"1", "x":1, "y":2.5}, {"label":"2", "x":2, "y":2.5}, {"label":"3", "x":3, "y":2.5}, {"label":"4", "x":4, "y":2.5}, {"label":"5", "x":5, "y":2.5}, {"label":"6", "x":6, "y":2.5}, {"label":"7", "x":7, "y":2.5}, {"label":"8", "x":8, "y":2.5}, {"label":"9", "x":9, "y":2.5}, {"label":"0", "x":10, "y":2.5}, {"label":"-", "x":11, "y":2.5}, {"label":"=", "x":12, "y":2.5}, {"label":"backspace", "x":13, "y":2.5, "w":1.5}, {"label":"do", "x":15, "y":2.5, "h":1.33},
13 {"label":"tab", "x":0, "y":3.5, "w":1.5}, {"label":"Q", "x":1.5, "y":3.5}, {"label":"W", "x":2.5, "y":3.5}, {"label":"E", "x":3.5, "y":3.5}, {"label":"R", "x":4.5, "y":3.5}, {"label":"T", "x":5.5, "y":3.5}, {"label":"Y", "x":6.5, "y":3.5}, {"label":"U", "x":7.5, "y":3.5}, {"label":"I", "x":8.5, "y":3.5}, {"label":"O", "x":9.5, "y":3.5}, {"label":"P", "x":10.5, "y":3.5}, {"label":"[", "x":11.5, "y":3.5}, {"label":"]", "x":12.5, "y":3.5}, {"label":"help", "x":15, "y":3.833, "h":1.33},
14 {"label":"caps lock", "x":0, "y":4.5, "w":1.75}, {"label":"A", "x":1.75, "y":4.5}, {"label":"S", "x":2.75, "y":4.5}, {"label":"D", "x":3.75, "y":4.5}, {"label":"F", "x":4.75, "y":4.5}, {"label":"G", "x":5.75, "y":4.5}, {"label":"H", "x":6.75, "y":4.5}, {"label":"J", "x":7.75, "y":4.5}, {"label":"K", "x":8.75, "y":4.5}, {"label":"L", "x":9.75, "y":4.5}, {"label":";", "x":10.75, "y":4.5}, {"label":"'", "x":11.75, "y":4.5}, {"label":"return", "x":12.75, "y":4.5, "w":1.75}, {"label":"undo", "x":15, "y":5.167, "h":1.33},
15 {"label":"shift", "x":0, "y":5.5, "w":2.25}, {"label":"Z", "x":2.25, "y":5.5}, {"label":"X", "x":3.25, "y":5.5}, {"label":"C", "x":4.25, "y":5.5}, {"label":"V", "x":5.25, "y":5.5}, {"label":"B", "x":6.25, "y":5.5}, {"label":"N", "x":7.25, "y":5.5}, {"label":"M", "x":8.25, "y":5.5}, {"label":"<", "x":9.25, "y":5.5}, {"label":">", "x":10.25, "y":5.5}, {"label":"?", "x":11.25, "y":5.5}, {"label":"shift", "x":12.25, "y":5.5, "w":2.25},
16 {"label":"style", "x":1.25, "y":6.5, "w":1.5}, {"label":"space", "x":2.75, "y":6.5, "w":9}, {"label":"insert", "x":11.75, "y":6.5, "w":1.5}
17 ]
18 }
19 }
20}
diff --git a/keyboards/handwired/videowriter/keymaps/default/keymap.c b/keyboards/handwired/videowriter/keymaps/default/keymap.c
new file mode 100644
index 000000000..527ee6fff
--- /dev/null
+++ b/keyboards/handwired/videowriter/keymaps/default/keymap.c
@@ -0,0 +1,107 @@
1/* Copyright 2019 DmNosachev
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN1
22};
23
24// Example of custom keycodes used by macros in process_record_user
25/*
26enum custom_keycodes {
27 QMKBEST = SAFE_RANGE,
28 QMKURL
29};
30 */
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33/*
34 * ,---------------------------------------------------------------------------------------.
35 * | ,----------------. ,-----------------------. ,--------------. | up | |
36 * | |vol- |vol+| mute| | prev| play| stop| next| |prsc|scrlk|ins| |left|down|right|
37 * |---------------------------------------------------------------------------------------|
38 * | ~`| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSp| fn1 |
39 * |---------------------------------------------------------------------------------------|
40 * |Tab/fn1| Q | W | E | R | T | Y | U | I | O | P | [ | ] | | menu|
41 * |---------------------------------------------------------------------------------------|
42 * |Ctrl | A | S | D | F | G | H | J | K | L | ; | " | enter ||\ctrl|
43 * |---------------------------------------------------------------------------------------'
44 * | Shift | Z | X | C | V | B | N | M | < | > | ? | Shift |
45 * `---------------------------------------------------------------------------------'
46 * | Alt | Space | Caps |
47 * `------------------------------------------------------------------'
48 */
49 [_BASE] = LAYOUT(
50 KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_PSCR, KC_SLCK, KC_INS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
51 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_PGUP,
52 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_PGDN,
53 KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, RCTL_T(KC_BSLS),
54 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
55 KC_LGUI, KC_SPC, KC_RALT),
56/*
57 *
58 * ,---------------------------------------------------------------------------------------.
59 * | ,----------------. ,-----------------------. ,--------------. |pgup| |
60 * | | | | | | | | |sect| | |reset|pause| |home|pgdn| end |
61 * |---------------------------------------------------------------------------------------|
62 * |Esc| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | del | |
63 * |---------------------------------------------------------------------------------------|
64 * | | mlb | mup | mrb | ms+ | | | | up | | | | | | gui |
65 * |---------------------------------------------------------------------------------------|
66 * | | ml | mdn | mr | ms- | | | left| down|right| | | | |
67 * |---------------------------------------------------------------------------------------'
68 * | | | | | | | | | | | | |
69 * `---------------------------------------------------------------------------------'
70 * | | | |
71 * `------------------------------------------------------------------'
72 */
73 [_FN1] = LAYOUT(
74 _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______,
75 _______, 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_DEL, KC_HOME,
76 _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
77 _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
78 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
79 _______, _______, _______
80 )
81};
82
83/* macros template (example)
84bool process_record_user(uint16_t keycode, keyrecord_t *record) {
85 switch (keycode) {
86 case QMKBEST:
87 if (record->event.pressed) {
88 // when keycode QMKBEST is pressed
89 SEND_STRING("QMK is the best thing ever!");
90 } else {
91 // when keycode QMKBEST is released
92 }
93 break;
94 case QMKURL:
95 if (record->event.pressed) {
96 // when keycode QMKURL is pressed
97 SEND_STRING("https://qmk.fm/\n");
98 } else {
99 // when keycode QMKURL is released
100 }
101 break;
102 }
103 return true;
104}
105
106*/
107
diff --git a/keyboards/handwired/videowriter/keymaps/default/readme.md b/keyboards/handwired/videowriter/keymaps/default/readme.md
new file mode 100644
index 000000000..05b0f039f
--- /dev/null
+++ b/keyboards/handwired/videowriter/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for videowriter
diff --git a/keyboards/handwired/videowriter/keymaps/oleg/config.h b/keyboards/handwired/videowriter/keymaps/oleg/config.h
new file mode 100644
index 000000000..3f2896a66
--- /dev/null
+++ b/keyboards/handwired/videowriter/keymaps/oleg/config.h
@@ -0,0 +1,20 @@
1/* Copyright 2019 DmNosachev
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19// Have't added any diodes in this particular convertion project
20#define MATRIX_HAS_GHOST
diff --git a/keyboards/handwired/videowriter/keymaps/oleg/keymap.c b/keyboards/handwired/videowriter/keymaps/oleg/keymap.c
new file mode 100644
index 000000000..76587f6f7
--- /dev/null
+++ b/keyboards/handwired/videowriter/keymaps/oleg/keymap.c
@@ -0,0 +1,108 @@
1/* Copyright 2019 DmNosachev
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN1
22};
23
24// Example of custom keycodes used by macros in process_record_user
25/*
26enum custom_keycodes {
27 QMKBEST = SAFE_RANGE,
28 QMKURL
29};
30 */
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33
34/*
35 * ,---------------------------------------------------------------------------------------.
36 * | ,----------------. ,-----------------------. ,--------------. | up | |
37 * | |vol- |vol+| mute| | prev| play| stop| next| |prsc|scrlk|ins| |left|down|right|
38 * |---------------------------------------------------------------------------------------|
39 * | ~`| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSp| fn1 |
40 * |---------------------------------------------------------------------------------------|
41 * |Tab/fn1| Q | W | E | R | T | Y | U | I | O | P | [ | ] | | menu|
42 * |---------------------------------------------------------------------------------------|
43 * |Ctrl | A | S | D | F | G | H | J | K | L | ; | " | enter ||\ctrl|
44 * |---------------------------------------------------------------------------------------'
45 * | Shift | Z | X | C | V | B | N | M | < | > | ? | Shift |
46 * `---------------------------------------------------------------------------------'
47 * | Alt | Space | Caps |
48 * `------------------------------------------------------------------'
49 */
50
51 [_BASE] = LAYOUT(
52 KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_PSCR, KC_SLCK, KC_INS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
53 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, MO(_FN1),
54 LT(_FN1, 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_APP,
55 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, RCTL_T(KC_BSLS),
56 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
57 KC_LALT, KC_SPC, KC_CAPS
58 ),
59
60/*
61 * sect = section sign, Unicode 0x00A7
62 * ,---------------------------------------------------------------------------------------.
63 * | ,----------------. ,-----------------------. ,--------------. |pgup| |
64 * | | | | | | | | |sect| | |reset|pause| |home|pgdn| end |
65 * |---------------------------------------------------------------------------------------|
66 * |Esc| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | del | |
67 * |---------------------------------------------------------------------------------------|
68 * | | mlb | mup | mrb | ms+ | | | | up | | | | | | gui |
69 * |---------------------------------------------------------------------------------------|
70 * | | ml | mdn | mr | ms- | | | left| down|right| | | | |
71 * |---------------------------------------------------------------------------------------'
72 * | | | | | | | | | | | | |
73 * `---------------------------------------------------------------------------------'
74 * | | | |
75 * `------------------------------------------------------------------'
76 */
77
78 [_FN1] = LAYOUT(
79 _______, _______, _______, _______, _______, _______, UC(0x00A7), _______, RESET, KC_PAUS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
80 _______, 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_DEL, _______,
81 _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U ,_______, _______, _______, KC_UP, _______, _______, _______, _______, KC_RGUI,
82 _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
83 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
84 _______, _______, _______
85 )
86};
87
88/* macros template (example)
89bool process_record_user(uint16_t keycode, keyrecord_t *record) {
90 switch (keycode) {
91 case USECT:
92 if (record->event.pressed) {
93 // when keycode USECT is pressed
94 SEND_STRING("QMK is the best thing ever!");
95 } else {
96 // when keycode USECT is released
97 }
98 break;
99 }
100 return true;
101}
102*/
103
104
105void matrix_init_user(void) {
106 set_unicode_input_mode(UC_WIN);
107}
108
diff --git a/keyboards/handwired/videowriter/keymaps/oleg/rules.mk b/keyboards/handwired/videowriter/keymaps/oleg/rules.mk
new file mode 100644
index 000000000..0065be986
--- /dev/null
+++ b/keyboards/handwired/videowriter/keymaps/oleg/rules.mk
@@ -0,0 +1,4 @@
1# this particular convertion project uses Pro Micro with DFU bootloader instead of Caterina
2BOOTLOADER = lufa-dfu
3
4UNICODE_ENABLE = yes
diff --git a/keyboards/handwired/videowriter/rules.mk b/keyboards/handwired/videowriter/rules.mk
new file mode 100644
index 000000000..7b326cc31
--- /dev/null
+++ b/keyboards/handwired/videowriter/rules.mk
@@ -0,0 +1,32 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = caterina
13
14# Build Options
15# change yes to no to disable
16#
17BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = yes # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = yes # Console for debug
21COMMAND_ENABLE = yes # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = no # USB Nkey Rollover
26BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
27RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
28MIDI_ENABLE = no # MIDI support
29BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
30AUDIO_ENABLE = no # Audio output on port C6
31FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
32HD44780_ENABLE = no # Enable support for HD44780 based LCDs
diff --git a/keyboards/handwired/videowriter/videowriter.c b/keyboards/handwired/videowriter/videowriter.c
new file mode 100644
index 000000000..5f0f3d712
--- /dev/null
+++ b/keyboards/handwired/videowriter/videowriter.c
@@ -0,0 +1,17 @@
1/* Copyright 2019 DmNosachev
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "videowriter.h"
diff --git a/keyboards/handwired/videowriter/videowriter.h b/keyboards/handwired/videowriter/videowriter.h
new file mode 100644
index 000000000..f06a5d50a
--- /dev/null
+++ b/keyboards/handwired/videowriter/videowriter.h
@@ -0,0 +1,59 @@
1/* Copyright 2019 DmNosachev
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#define XXX KC_NO
22
23/*
24 * ,---------------------------------------------------------------------------------------.
25 * | ,----------------. ,-----------------------. ,--------------. | up | |
26 * | |menu|print|spell| |page|center|split|find | |copy|move|goto| |left|down|right|
27 * |---------------------------------------------------------------------------------------|
28 * |del| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSp| do |
29 * |---------------------------------------------------------------------------------------|
30 * |Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | help|
31 * |-----------------------------------------------------------------------------' |-----|
32 * |Caps | A | S | D | F | G | H | J | K | L | ; | " | return | undo|
33 * |---------------------------------------------------------------------------------------|
34 * | Shift | Z | X | C | V | B | N | M | < | > | ? | Shift | |
35 * '---------------------------------------------------------------------------------------'
36 * | style| Space | insert|
37 * '------------------------------------------------------------------'
38 */
39
40#define LAYOUT( \
41 K17, K16, K15, K14, K13, K12, K11, K10, K27, K26, K80, K97, K81, K96, \
42 K25, K24, K23, K22, K21, K20, K37, K36, K35, K34, K33, K32, K31, K30, K95, \
43 K47, K46, K45, K44, K43, K42, K41, K40, K57, K56, K55, K54, K53, K94, \
44 K07, K51, K50, K67, K66, K65, K64, K63, K62, K61, K60, K77, K52, K93, \
45 K06, K76, K75, K74, K73, K72, K71, K70, K87, K86, K85, K92, \
46 K84, K83, K82 \
47) \
48{ \
49 { XXX, XXX, XXX, XXX, XXX, XXX, K06, K07 }, \
50 { K10, K11, K12, K13, K14, K15, K16, K17 }, \
51 { K20, K21, K22, K23, K24, K25, K26, K27 }, \
52 { K30, K31, K32, K33, K34, K35, K36, K37 }, \
53 { K40, K41, K42, K43, K44, K45, K46, K47 }, \
54 { K50, K51, K52, K53, K54, K55, K56, K57 }, \
55 { K60, K61, K62, K63, K64, K65, K66, K67 }, \
56 { K70, K71, K72, K73, K74, K75, K76, K77 }, \
57 { K80, K81, K82, K83, K84, K85, K86, K87 }, \
58 { XXX, XXX, K92, K93, K94, K95, K96, K97 } \
59}