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:
		
				
					committed by
					
						
						Drashna Jaelre
					
				
			
			
				
	
			
			
			
						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
 | 
			
		||||
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/).
 | 
			
		||||
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. 
 | 
			
		||||
 | 
			
		||||
Note that this is a complete replacement for the firmware, so you won't be
 | 
			
		||||
using Bootmapper Client to change any keyboard settings, since not all the
 | 
			
		||||
USB report options are supported.
 | 
			
		||||
Keyboard Maintainer: QMK Community  
 | 
			
		||||
Hardware Supported: B.face PCB   
 | 
			
		||||
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
 | 
			
		||||
tested so far (since it's the only one I own). But other boards that use
 | 
			
		||||
the ps2avrGB firmware should work as well.
 | 
			
		||||
    make bface:default
 | 
			
		||||
 | 
			
		||||
## Installing
 | 
			
		||||
Flashing
 | 
			
		||||
 | 
			
		||||
First, install the requirements. These commands are for OSX, but all you
 | 
			
		||||
need is the AVR toolchain and `bootloadHID` for flashing:
 | 
			
		||||
ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods. 
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ brew cask install crosspack-avr
 | 
			
		||||
$ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
 | 
			
		||||
```
 | 
			
		||||
Windows: 
 | 
			
		||||
1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
 | 
			
		||||
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
 | 
			
		||||
the bootloader, you'll need Python 2 with PyUSB installed:
 | 
			
		||||
macOS:
 | 
			
		||||
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
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ pip install pyusb
 | 
			
		||||
```
 | 
			
		||||
4. Place your keyboard into reset. 
 | 
			
		||||
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:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ 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.
 | 
			
		||||
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.
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#include "keycode.h"
 | 
			
		||||
#include "action.h"
 | 
			
		||||
 | 
			
		||||
#define KEYMAP( \
 | 
			
		||||
#define LAYOUT_60_ansi( \
 | 
			
		||||
  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, \
 | 
			
		||||
  K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2,      KD2, \
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								keyboards/bface/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								keyboards/bface/info.json
									
									
									
									
									
										Normal file
									
								
							@@ -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/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include "bface.h"
 | 
			
		||||
#include "action_layer.h"
 | 
			
		||||
#include "rgblight.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
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_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_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_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,
 | 
			
		||||
@@ -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
 | 
			
		||||
    ),
 | 
			
		||||
    /* 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,
 | 
			
		||||
 
 | 
			
		||||
@@ -45,3 +45,5 @@ SRC = matrix.c i2c.c backlight_ps2avrGB.c
 | 
			
		||||
 | 
			
		||||
# programming options
 | 
			
		||||
PROGRAM_CMD = ./keyboards/bface/program .build/$(TARGET).hex
 | 
			
		||||
 | 
			
		||||
LAYOUTS = 60_ansi
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user