aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/the_ruler/config.h167
-rw-r--r--keyboards/the_ruler/keymaps/default/config.h8
-rw-r--r--keyboards/the_ruler/keymaps/default/keymap.c70
-rw-r--r--keyboards/the_ruler/keymaps/default/readme.md1
-rw-r--r--keyboards/the_ruler/keymaps/default/rules.mk21
-rw-r--r--keyboards/the_ruler/readme.md14
-rw-r--r--keyboards/the_ruler/rules.mk68
-rw-r--r--keyboards/the_ruler/the_ruler.c22
-rw-r--r--keyboards/the_ruler/the_ruler.h11
9 files changed, 382 insertions, 0 deletions
diff --git a/keyboards/the_ruler/config.h b/keyboards/the_ruler/config.h
new file mode 100644
index 000000000..16135bbd1
--- /dev/null
+++ b/keyboards/the_ruler/config.h
@@ -0,0 +1,167 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
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#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0x1337
25#define PRODUCT_ID 0x6007
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Maple Computing
28#define PRODUCT The PCB Ruler
29#define DESCRIPTION A custom keyboard PCB ruler, can also function as a macro pad
30
31/* key matrix size */
32#define MATRIX_ROWS 1
33#define MATRIX_COLS 6
34
35/*
36 * Keyboard Matrix Assignments
37 *
38 * Change this to how you wired your keyboard
39 * COLS: AVR pins used for columns, left to right
40 * ROWS: AVR pins used for rows, top to bottom
41 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
42 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
43 *
44*/
45#define MATRIX_ROW_PINS { C7 }
46#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, C6}
47#define UNUSED_PINS
48
49/* COL2ROW or ROW2COL */
50#define DIODE_DIRECTION COL2ROW
51
52
53/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
54#define DEBOUNCING_DELAY 5
55
56/* define if matrix has ghost (lacks anti-ghosting diodes) */
57//#define MATRIX_HAS_GHOST
58
59/* number of backlight levels */
60
61/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
62#define LOCKING_SUPPORT_ENABLE
63/* Locking resynchronize hack */
64#define LOCKING_RESYNC_ENABLE
65
66/*
67 * Force NKRO
68 *
69 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
70 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
71 * makefile for this to work.)
72 *
73 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
74 * until the next keyboard reset.
75 *
76 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
77 * fully operational during normal computer usage.
78 *
79 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
80 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
81 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
82 * power-up.
83 *
84 */
85//#define FORCE_NKRO
86
87/*
88 * Magic Key Options
89 *
90 * Magic keys are hotkey commands that allow control over firmware functions of
91 * the keyboard. They are best used in combination with the HID Listen program,
92 * found here: https://www.pjrc.com/teensy/hid_listen.html
93 *
94 * The options below allow the magic key functionality to be changed. This is
95 * useful if your keyboard/keypad is missing keys and you want magic key support.
96 *
97 */
98
99/* key combination for magic key command */
100#define IS_COMMAND() ( \
101 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
102)
103
104/* control how magic key switches layers */
105//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
106//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
107//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
108
109/* override magic key keymap */
110//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
111//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
112//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
113//#define MAGIC_KEY_HELP1 H
114//#define MAGIC_KEY_HELP2 SLASH
115//#define MAGIC_KEY_DEBUG D
116//#define MAGIC_KEY_DEBUG_MATRIX X
117//#define MAGIC_KEY_DEBUG_KBD K
118//#define MAGIC_KEY_DEBUG_MOUSE M
119//#define MAGIC_KEY_VERSION V
120//#define MAGIC_KEY_STATUS S
121//#define MAGIC_KEY_CONSOLE C
122//#define MAGIC_KEY_LAYER0_ALT1 ESC
123//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
124//#define MAGIC_KEY_LAYER0 0
125//#define MAGIC_KEY_LAYER1 1
126//#define MAGIC_KEY_LAYER2 2
127//#define MAGIC_KEY_LAYER3 3
128//#define MAGIC_KEY_LAYER4 4
129//#define MAGIC_KEY_LAYER5 5
130//#define MAGIC_KEY_LAYER6 6
131//#define MAGIC_KEY_LAYER7 7
132//#define MAGIC_KEY_LAYER8 8
133//#define MAGIC_KEY_LAYER9 9
134//#define MAGIC_KEY_BOOTLOADER PAUSE
135//#define MAGIC_KEY_LOCK CAPS
136//#define MAGIC_KEY_EEPROM E
137//#define MAGIC_KEY_NKRO N
138//#define MAGIC_KEY_SLEEP_LED Z
139
140/*
141 * Feature disable options
142 * These options are also useful to firmware size reduction.
143 */
144
145/* disable debug print */
146//#define NO_DEBUG
147
148/* disable print */
149//#define NO_PRINT
150
151/* disable action features */
152//#define NO_ACTION_LAYER
153//#define NO_ACTION_TAPPING
154//#define NO_ACTION_ONESHOT
155//#define NO_ACTION_MACRO
156//#define NO_ACTION_FUNCTION
157
158#define RGBLIGHT_TIMER
159#define RGB_DI_PIN E6 // The pin your RGB strip is wired to
160#define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio)
161#define RGBLED_NUM 1 // Number of LEDs
162#define RGBLIGHT_ANIMATIONS
163#define RGBLIGHT_HUE_STEP 10
164#define RGBLIGHT_SAT_STEP 17
165#define RGBLIGHT_VAL_STEP 17
166
167#endif
diff --git a/keyboards/the_ruler/keymaps/default/config.h b/keyboards/the_ruler/keymaps/default/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/the_ruler/keymaps/default/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/the_ruler/keymaps/default/keymap.c b/keyboards/the_ruler/keymaps/default/keymap.c
new file mode 100644
index 000000000..78a785534
--- /dev/null
+++ b/keyboards/the_ruler/keymaps/default/keymap.c
@@ -0,0 +1,70 @@
1#include "the_ruler.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4
5extern keymap_config_t keymap_config;
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _DEFAULT 0
12#define _FN_1 1
13#define _FN_2 2
14
15enum custom_keycodes {
16 DEFAULT = SAFE_RANGE,
17 FN_1,
18 FN_2
19};
20
21// Fillers to make layering more clear
22#define _______ KC_TRNS
23#define XXXXXXX KC_NO
24
25// Defines for task manager and such
26#define CALTDEL LCTL(LALT(KC_DEL))
27#define TSKMGR LCTL(LSFT(KC_ESC))
28
29const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30
31/* Default Layer
32 * ,-----------------------------------------------.
33 * | FN_2 | 2 |TSKMGR |CALTDEL| ESC | FN_1 |
34 * `-----------------------------------------------'
35 */
36[_DEFAULT] = KEYMAP( \
37 MO(_FN_2), KC_2, TSKMGR, CALTDEL, KC_ESC, MO(_FN_1)
38),
39
40/* FN 1 Layer
41 * ,-----------------------------------------------.
42 * |RGB_TOG|RGB_HUD|RGB_HUI|RGB_SAD|RGB_SAI| FN_1 |
43 * `-----------------------------------------------'
44 */
45[_FN_1] = KEYMAP( \
46 RGB_TOG, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______
47),
48
49/* FN 2 Layer
50 * ,-----------------------------------------------.
51 * | FN_2 |RGB_VAD|RGB_VAI|RGB_MOD|TSKMGR | RESET |
52 * `-----------------------------------------------'
53 */
54[_FN_2] = KEYMAP( \
55 _______, RGB_VAD, RGB_VAI, RGB_MOD, TSKMGR, RESET
56)
57
58};
59
60void persistant_default_layer_set(uint16_t default_layer) {
61 eeconfig_update_default_layer(default_layer);
62 default_layer_set(default_layer);
63}
64
65bool process_record_user(uint16_t keycode, keyrecord_t *record) {
66 switch (keycode) {
67 // NONE
68 }
69 return true;
70} \ No newline at end of file
diff --git a/keyboards/the_ruler/keymaps/default/readme.md b/keyboards/the_ruler/keymaps/default/readme.md
new file mode 100644
index 000000000..b515c1d48
--- /dev/null
+++ b/keyboards/the_ruler/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for the ruler \ No newline at end of file
diff --git a/keyboards/the_ruler/keymaps/default/rules.mk b/keyboards/the_ruler/keymaps/default/rules.mk
new file mode 100644
index 000000000..fac9327db
--- /dev/null
+++ b/keyboards/the_ruler/keymaps/default/rules.mk
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/the_ruler/readme.md b/keyboards/the_ruler/readme.md
new file mode 100644
index 000000000..cc1f817de
--- /dev/null
+++ b/keyboards/the_ruler/readme.md
@@ -0,0 +1,14 @@
1The Ruler PCB
2=======
3
4A custom keyboard PCB ruler, that can also function as a macro pad
5
6Keyboard Maintainer: Maple Computing
7Hardware Supported: PCB Ruler V1 by That-Canadian and Bishop Keyboards
8Hardware Availability: https://www.maple-computing.com/products/pcb-ruler-v1-1
9
10Make example for this keyboard (after setting up your build environment):
11
12 make the_ruler:default
13
14See [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.
diff --git a/keyboards/the_ruler/rules.mk b/keyboards/the_ruler/rules.mk
new file mode 100644
index 000000000..30d76a3c9
--- /dev/null
+++ b/keyboards/the_ruler/rules.mk
@@ -0,0 +1,68 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49
50
51# Build Options
52# change yes to no to disable
53#
54BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
57CONSOLE_ENABLE = yes # Console for debug(+400)
58COMMAND_ENABLE = yes # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
62NKRO_ENABLE = no # USB Nkey Rollover
63BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
64MIDI_ENABLE = no # MIDI controls
65UNICODE_ENABLE = no # Unicode
66BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
67AUDIO_ENABLE = no # Audio output on port C6
68RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
diff --git a/keyboards/the_ruler/the_ruler.c b/keyboards/the_ruler/the_ruler.c
new file mode 100644
index 000000000..9686379eb
--- /dev/null
+++ b/keyboards/the_ruler/the_ruler.c
@@ -0,0 +1,22 @@
1#include "the_ruler.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22} \ No newline at end of file
diff --git a/keyboards/the_ruler/the_ruler.h b/keyboards/the_ruler/the_ruler.h
new file mode 100644
index 000000000..6f38034c3
--- /dev/null
+++ b/keyboards/the_ruler/the_ruler.h
@@ -0,0 +1,11 @@
1#ifndef THERULER_H
2#define THERULER_H
3
4#include "quantum.h"
5
6#define KEYMAP( \
7 K00, K01, K02, K03, K04, K05 ) { \
8 { K00, K01, K02, K03, K04, K05 } \
9}
10
11#endif