Keyboard: bface update (#3702)
* add configurator support * update bface code to more modern QMK standards * update readme * update readme * Make changes thanks to noroadsleft's PR comments
This commit is contained in:
parent
9d99fd8418
commit
d0b55b59f9
|
@ -1,61 +1,44 @@
|
||||||
ps2avrGB keyboard firmware
|
# B.face
|
||||||
==========================
|
|
||||||
|
|
||||||
This is a port of the QMK firmware for boards that are based on the
|
A 60% keyboard with RGB that runs ps2avrgb natively. Please note that the B.face and B.fake have different switch matrices. Firmware on one, will not work on the other.
|
||||||
ps2avrGB firmware, like the [ps2avrGB
|
|
||||||
keyboard](https://www.keyclack.com/product/gb-ps2avrgb/) or the ones sold
|
|
||||||
by [Winkeyless](http://winkeyless.kr/product/ps2avrgb-parts/).
|
|
||||||
|
|
||||||
Note that this is a complete replacement for the firmware, so you won't be
|
Keyboard Maintainer: QMK Community
|
||||||
using Bootmapper Client to change any keyboard settings, since not all the
|
Hardware Supported: B.face PCB
|
||||||
USB report options are supported.
|
Hardware Availability: [Winkeyless](https://winkeyless.kr/product/b-face-x2-pcb/)
|
||||||
|
|
||||||
## Supported Boards
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
Only the [B.mini X2](http://winkeyless.kr/product/b-mini-x2-pcb/) has been
|
make bface:default
|
||||||
tested so far (since it's the only one I own). But other boards that use
|
|
||||||
the ps2avrGB firmware should work as well.
|
|
||||||
|
|
||||||
## Installing
|
Flashing
|
||||||
|
|
||||||
First, install the requirements. These commands are for OSX, but all you
|
ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
|
||||||
need is the AVR toolchain and `bootloadHID` for flashing:
|
|
||||||
|
|
||||||
```
|
Windows:
|
||||||
$ brew cask install crosspack-avr
|
1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
|
||||||
$ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
|
2. Place your keyboard into reset.
|
||||||
```
|
3. Press the `Find Device` button and ensure that your keyboard is found.
|
||||||
|
4. Press the `Open .hex File` button and locate the `.hex` file you created.
|
||||||
|
5. Press the `Flash Device` button and wait for the process to complete.
|
||||||
|
|
||||||
In order to use the `./program` script, which can reboot the board into
|
macOS:
|
||||||
the bootloader, you'll need Python 2 with PyUSB installed:
|
1. Install homebrew by typing the following:
|
||||||
|
```
|
||||||
|
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||||
|
```
|
||||||
|
2. Install `crosspack-avr`.
|
||||||
|
```
|
||||||
|
brew cask install crosspack-avr
|
||||||
|
```
|
||||||
|
3. Install the following packages:
|
||||||
|
```
|
||||||
|
brew install python
|
||||||
|
brew install pyusb
|
||||||
|
brew install --HEAD`https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
|
||||||
|
```
|
||||||
|
|
||||||
```
|
4. Place your keyboard into reset.
|
||||||
$ pip install pyusb
|
5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
|
||||||
```
|
|
||||||
|
|
||||||
Then, with the keyboard plugged in, simply run this command from the
|
|
||||||
`qmk_firmware` directory:
|
|
||||||
|
|
||||||
```
|
See [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.
|
||||||
$ make ps2avrGB-program
|
|
||||||
```
|
|
||||||
|
|
||||||
If you prefer, you can just build it and flash the firmware directly with
|
|
||||||
`bootloadHID` if you boot the board while holding down `L_Ctrl` to keep it
|
|
||||||
in the bootloader:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make ps2avrGB
|
|
||||||
$ bootloadHID -r ps2avrGB_default.hex
|
|
||||||
```
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
From my experience, it's really hard to brick these boards. But these
|
|
||||||
tricks have been useful when it got stuck in a weird scenario.
|
|
||||||
|
|
||||||
1. Try plugging the board in while pressing `L_Ctrl`. This will force it
|
|
||||||
to boot only the bootloader without loading the firmware. Once this is
|
|
||||||
done, just reflash the board with the original firmware.
|
|
||||||
2. Sometimes USB hubs can act weird, so try connecting the board directly
|
|
||||||
to your computer or plugging/unplugging the USB hub.
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "keycode.h"
|
#include "keycode.h"
|
||||||
#include "action.h"
|
#include "action.h"
|
||||||
|
|
||||||
#define KEYMAP( \
|
#define LAYOUT_60_ansi( \
|
||||||
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, \
|
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, \
|
||||||
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, \
|
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, \
|
||||||
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, \
|
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, \
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"keyboard_name": "b.face",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_60_ansi": {
|
||||||
|
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,19 +15,17 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "bface.h"
|
#include QMK_KEYBOARD_H
|
||||||
#include "action_layer.h"
|
|
||||||
#include "rgblight.h"
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[0] = KEYMAP(
|
[0] = LAYOUT_60_ansi(
|
||||||
KC_ESC, 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_ESC, 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_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_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_F1, 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_F1, 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_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_RALT,KC_RGUI,KC_FN0, KC_RCTL
|
KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_RALT,KC_RGUI,MO(1), KC_RCTL
|
||||||
),
|
),
|
||||||
[1] = KEYMAP(
|
[1] = LAYOUT_60_ansi(
|
||||||
KC_TRNS,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_TRNS,
|
KC_TRNS,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_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,BL_INC, BL_DEC, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,BL_INC, BL_DEC, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
@ -35,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
|
||||||
),
|
),
|
||||||
/* You can copy this layer as base for a new fn layer * /
|
/* You can copy this layer as base for a new fn layer * /
|
||||||
[n] = KEYMAP(
|
[n] = LAYOUT_60_ansi(
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
|
|
@ -45,3 +45,5 @@ SRC = matrix.c i2c.c backlight_ps2avrGB.c
|
||||||
|
|
||||||
# programming options
|
# programming options
|
||||||
PROGRAM_CMD = ./keyboards/bface/program .build/$(TARGET).hex
|
PROGRAM_CMD = ./keyboards/bface/program .build/$(TARGET).hex
|
||||||
|
|
||||||
|
LAYOUTS = 60_ansi
|
||||||
|
|
Loading…
Reference in New Issue