diff options
| -rw-r--r-- | keyboards/pearl/README.md | 85 | ||||
| -rw-r--r-- | keyboards/pearl/keymaps/rask/.editorconfig | 5 | ||||
| -rw-r--r-- | keyboards/pearl/keymaps/rask/README.md | 23 | ||||
| -rw-r--r-- | keyboards/pearl/keymaps/rask/keymap.c | 87 |
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 | |||
| 3 | Pearl 40% is a keyboard designed by Koobaczech. It uses an Atmel | ||
| 4 | ATMEGA32A MCU. | ||
| 5 | |||
| 6 | ## Compiling and flashing | ||
| 7 | |||
| 8 | These instructions are for building and flashing your Pearl 40% without | ||
| 9 | Bootmapper Client. | ||
| 10 | |||
| 11 | ### Requirements | ||
| 12 | |||
| 13 | #### Windows | ||
| 14 | |||
| 15 | (to be written, help needed) | ||
| 16 | |||
| 17 | #### Mac | ||
| 18 | |||
| 19 | Apart 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 | |||
| 24 | If you don't use `homebrew` you can try following the compiling | ||
| 25 | instructions defined below in the Linux section. | ||
| 26 | |||
| 27 | #### Linux | ||
| 28 | |||
| 29 | For Linux you require all regular QMK dependencies, but make sure you're | ||
| 30 | using `gcc-avr` version 4.9 or higher. 4.8 and lower do not contain the | ||
| 31 | proper definitions for ATMEGA32A MCUs and QMK will fail while attempting | ||
| 32 | to compile a HEX for Pearl 40%. | ||
| 33 | |||
| 34 | E.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 | |||
| 37 | Additionally you need an operational `bootloadHID` binary. | ||
| 38 | |||
| 39 | You 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 | |||
| 46 | Running `which bootloadHID` should return `/usr/bin/bootloadHID`. | ||
| 47 | |||
| 48 | ### Compiling | ||
| 49 | |||
| 50 | Enter the QMK root directory and compile a keymap with the following | ||
| 51 | command: | ||
| 52 | |||
| 53 | $ make pearl:<keymap> | ||
| 54 | |||
| 55 | where `<keymap>` is a layout directory under the `pearl` directory. | ||
| 56 | |||
| 57 | QMK should compile a HEX (called `pearl_<keymap>.hex`) for you, which | ||
| 58 | you can flash using `bootloadHID`. | ||
| 59 | |||
| 60 | ### Flashing | ||
| 61 | |||
| 62 | To enable Pearl 40% bootloading mode, unplug the keyboard, then plug it | ||
| 63 | in while holding `Esc` at the same time (the top-leftmost switch on the | ||
| 64 | PCB, next to the USB connector). Once the board is in bootload mode, | ||
| 65 | issue the following command (you might require `sudo` to perform the | ||
| 66 | command): | ||
| 67 | |||
| 68 | # assuming we're still in the QMK root dir where you compiled a HEX into | ||
| 69 | $ bootloadHID -r ./pearl_<keymap>.hex | ||
| 70 | |||
| 71 | You 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 | |||
| 78 | where `<current value>` should be slowly increasing as the HEX is being | ||
| 79 | flashed to the board. If there is some warning about `resource busy` it | ||
| 80 | should still work OK. | ||
| 81 | |||
| 82 | Once done the board underglow should turn red and the new firmware has | ||
| 83 | been 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 | ||
| 85 | bootload 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 @@ | |||
| 1 | root = true | ||
| 2 | |||
| 3 | [*.c] | ||
| 4 | indent_size = 4 | ||
| 5 | indent_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 | |||
| 5 | The firmware offers five layers: | ||
| 6 | |||
| 7 | 1. Base layer | ||
| 8 | 2. Base with numbers and symbols (Fn1) | ||
| 9 | 3. Base with F-row and arrows (Fn2) | ||
| 10 | 4. Base with media and RGB controls (Fn3) | ||
| 11 | 5. More nav and utils (Fn2+Fn3, aka NavFn) | ||
| 12 | |||
| 13 |  | ||
| 14 | |||
| 15 | Base for this firmware copied from jetpacktuxedo's QMK firmware. | ||
| 16 | |||
| 17 | --- | ||
| 18 | |||
| 19 | ## Compiling and flashing | ||
| 20 | |||
| 21 | To compile a HEX follow the Pearl 40% instructions. | ||
| 22 | |||
| 23 | Flashing 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 | |||
| 5 | const 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 | */ | ||
| 46 | uint32_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 | } | ||
