aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/pearl/README.md85
-rw-r--r--keyboards/pearl/keymaps/rask/.editorconfig5
-rw-r--r--keyboards/pearl/keymaps/rask/README.md23
-rw-r--r--keyboards/pearl/keymaps/rask/keymap.c87
4 files changed, 200 insertions, 0 deletions
diff --git a/keyboards/pearl/README.md b/keyboards/pearl/README.md
new file mode 100644
index 000000000..ec54ba80f
--- /dev/null
+++ b/keyboards/pearl/README.md
@@ -0,0 +1,85 @@
1# Pearl 40%
2
3Pearl 40% is a keyboard designed by Koobaczech. It uses an Atmel
4ATMEGA32A MCU.
5
6## Compiling and flashing
7
8These instructions are for building and flashing your Pearl 40% without
9Bootmapper Client.
10
11### Requirements
12
13#### Windows
14
15(to be written, help needed)
16
17#### Mac
18
19Apart from regular QMK and AVR dependencies you need to install
20`bootloadHID`. You can install it with `homebrew` as follows:
21
22 $ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
23
24If you don't use `homebrew` you can try following the compiling
25instructions defined below in the Linux section.
26
27#### Linux
28
29For Linux you require all regular QMK dependencies, but make sure you're
30using `gcc-avr` version 4.9 or higher. 4.8 and lower do not contain the
31proper definitions for ATMEGA32A MCUs and QMK will fail while attempting
32to compile a HEX for Pearl 40%.
33
34E.g. you cannot compile Pearl 40% HEX on a regular Ubuntu 14.04 as
35`gcc-avr` version is maxed to 4.8 on it.
36
37Additionally you need an operational `bootloadHID` binary.
38
39You can install `bootloadHID` by taking the following steps:
40
41 $ git clone https://github.com/robertgzr/bootloadHID ~/tmp/bootloadHIDsrc
42 $ cd ~/tmp/bootloadHIDsrc/commandline
43 $ make VENDORID=0x16c0 PRODUCTID=0x05DF # vid and pid for atmega32a
44 $ chmod +x bootloadHID && cp bootloadHID /usr/bin/bootloadHID
45
46Running `which bootloadHID` should return `/usr/bin/bootloadHID`.
47
48### Compiling
49
50Enter the QMK root directory and compile a keymap with the following
51command:
52
53 $ make pearl:<keymap>
54
55where `<keymap>` is a layout directory under the `pearl` directory.
56
57QMK should compile a HEX (called `pearl_<keymap>.hex`) for you, which
58you can flash using `bootloadHID`.
59
60### Flashing
61
62To enable Pearl 40% bootloading mode, unplug the keyboard, then plug it
63in while holding `Esc` at the same time (the top-leftmost switch on the
64PCB, next to the USB connector). Once the board is in bootload mode,
65issue the following command (you might require `sudo` to perform the
66command):
67
68 # assuming we're still in the QMK root dir where you compiled a HEX into
69 $ bootloadHID -r ./pearl_<keymap>.hex
70
71You should see something similar to
72
73 > Page size = <value>
74 > Device size = <value>; <value> remaining
75 > Uploading <value> bytes starting at 0 (0x0)
76 > <value> ... <current value>
77
78where `<current value>` should be slowly increasing as the HEX is being
79flashed to the board. If there is some warning about `resource busy` it
80should still work OK.
81
82Once done the board underglow should turn red and the new firmware has
83been flashed. If you can't type on the board try plugging it in again
84(without holding any keys to prevent accidentally setting it into
85bootload mode again).
diff --git a/keyboards/pearl/keymaps/rask/.editorconfig b/keyboards/pearl/keymaps/rask/.editorconfig
new file mode 100644
index 000000000..866353dcd
--- /dev/null
+++ b/keyboards/pearl/keymaps/rask/.editorconfig
@@ -0,0 +1,5 @@
1root = true
2
3[*.c]
4indent_size = 4
5indent_style = space
diff --git a/keyboards/pearl/keymaps/rask/README.md b/keyboards/pearl/keymaps/rask/README.md
new file mode 100644
index 000000000..79465ffd9
--- /dev/null
+++ b/keyboards/pearl/keymaps/rask/README.md
@@ -0,0 +1,23 @@
1# rask's Pearl 40%
2
3## Layout
4
5The firmware offers five layers:
6
71. Base layer
82. Base with numbers and symbols (Fn1)
93. Base with F-row and arrows (Fn2)
104. Base with media and RGB controls (Fn3)
115. More nav and utils (Fn2+Fn3, aka NavFn)
12
13![rask's Pearl 40% layout](https://i.imgur.com/gKVQapZ.png)
14
15Base for this firmware copied from jetpacktuxedo's QMK firmware.
16
17---
18
19## Compiling and flashing
20
21To compile a HEX follow the Pearl 40% instructions.
22
23Flashing instructions also available at Pearl 40% instructions.
diff --git a/keyboards/pearl/keymaps/rask/keymap.c b/keyboards/pearl/keymaps/rask/keymap.c
new file mode 100644
index 000000000..b9f135093
--- /dev/null
+++ b/keyboards/pearl/keymaps/rask/keymap.c
@@ -0,0 +1,87 @@
1#include "pearl.h"
2
3#define ____ KC_TRNS
4
5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6 // BASE LAYER
7 [0] = KEYMAP(
8 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,
9 MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
10 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(3),
11 KC_LCTL, KC_LALT, KC_BSPC, MO(1), MO(1), KC_SPC, KC_RALT, KC_LGUI
12 ),
13 // BASE LAYER TWO (Fn1)
14 [1] = KEYMAP(
15 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,
16 ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_QUOT, KC_BSLS,
17 ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_RSFT,
18 ____, ____, ____, ____, ____, ____, ____, ____
19 ),
20 // FROW LAYER AND ARROWS (Fn2)
21 [2] = KEYMAP(
22 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,
23 ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_UP, ____, ____,
24 ____, ____, ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN,KC_RGHT, MO(4),
25 ____, ____, ____, ____, ____, ____, ____, ____
26 ),
27 // MEDIA AND RGB (Fn3)
28 [3] = KEYMAP(
29 ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_MPRV,KC_MPLY, KC_MNXT, KC_DEL,
30 ____, ____, ____, RGB_HUI, RGB_SAI,RGB_VAI,____, ____, ____, ____, ____, ____,
31 ____, RGB_MOD, RGB_TOG, RGB_HUD, RGB_SAD,RGB_VAD,____, ____, ____, ____, ____, ____,
32 ____, ____, ____, ____, ____, ____, ____, ____
33 ),
34 // UTIL (Fn1+Fn3)
35 [4] = KEYMAP(
36 ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PSCR, ____,
37 ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PGUP,____, ____,
38 ____, ____, ____, ____, ____, ____, ____, ____, KC_HOME, KC_PGDN,KC_END, ____,
39 RESET, ____, ____, ____, ____, ____, ____, ____
40 ),
41};
42
43/**
44 * Status LED layer indicators courtesy of jetpacktuxedo's firmware
45 */
46uint32_t layer_state_set_kb(uint32_t state)
47{
48 // if we are on layer 1
49 if (state & (1<<1)){
50 // light num lock led
51 PORTD |= (1 << PD0);
52 } else{
53 PORTD &= ~(1 << PD0);
54 }
55
56 // if we are on layer 2
57 if (state & (1<<2)){
58 // light caps lock led
59 PORTD |= (1 << PD1);
60 } else{
61 PORTD &= ~(1 << PD1);
62 }
63
64 // if we are on layer 3
65 if (state & (1<<3)){
66 // light scroll lock led
67 PORTD |= (1 << PD6);
68 } else{
69 PORTD &= ~(1 << PD6);
70 }
71
72 /*
73 // if we are on layer 4
74 if (state & (1<<4)){
75 // light all leds
76 PORTD |= (1 << PD0);
77 PORTD |= (1 << PD1);
78 PORTD |= (1 << PD6);
79 } else{
80 PORTD &= ~(1 << PD0);
81 PORTD &= ~(1 << PD1);
82 PORTD &= ~(1 << PD6);
83 }
84 */
85
86 return state;
87}