diff options
Diffstat (limited to 'keyboards/winkeyless/bface')
-rw-r--r-- | keyboards/winkeyless/bface/bface.c | 17 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/bface.h | 39 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/info.json | 16 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/keymaps/kpeatt/readme.md | 10 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/keymaps/p3lim/README.md | 21 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/keymaps/p3lim/keymap.c | 188 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/keymaps/p3lim/rules.mk | 1 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/keymaps/via/config.h | 1 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/keymaps/via/rules.mk | 2 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/readme.md | 19 | ||||
-rw-r--r-- | keyboards/winkeyless/bface/rules.mk | 17 |
11 files changed, 0 insertions, 331 deletions
diff --git a/keyboards/winkeyless/bface/bface.c b/keyboards/winkeyless/bface/bface.c deleted file mode 100644 index c1fcbe53b2..0000000000 --- a/keyboards/winkeyless/bface/bface.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2019 MechMerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * 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" diff --git a/keyboards/winkeyless/bface/bface.h b/keyboards/winkeyless/bface/bface.h deleted file mode 100644 index bca0c24c1a..0000000000 --- a/keyboards/winkeyless/bface/bface.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com> -Copyright 2017 Sebastian Kaim <sebb@sebb767.de> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include "quantum.h" - -#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, \ - K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, \ - K00, K10, K20, K56, K57, KA0, KB0, KC0 \ -){ \ - { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KA0, KB0, KC0, KC_NO, KC_NO }, \ - { K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC_NO, KC_NO, KC_NO }, \ - { K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC_NO, KD2, KC_NO }, \ - { K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KD3, KC_NO }, \ - { K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB6, KC6, KD6, KE6 }, \ - { KC_NO, K17, K27, K37, K47, K57, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB7, KC7, KD7, KE7 } \ -} - diff --git a/keyboards/winkeyless/bface/info.json b/keyboards/winkeyless/bface/info.json deleted file mode 100644 index b375c5121e..0000000000 --- a/keyboards/winkeyless/bface/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "keyboard_name": "B.face", - "manufacturer": "Winkeyless", - "url": "", - "maintainer": "qmk", - "usb": { - "vid": "0x20A0", - "pid": "0x4246", - "device_version": "2.0.0" - }, - "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}] - } - } -} diff --git a/keyboards/winkeyless/bface/keymaps/kpeatt/readme.md b/keyboards/winkeyless/bface/keymaps/kpeatt/readme.md deleted file mode 100644 index a7eef1e5fc..0000000000 --- a/keyboards/winkeyless/bface/keymaps/kpeatt/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -kpeatt's bface layout -====================== - -## Keyboard Notes -- This is for a clone bface PCB that is no longer for sale as far as I can tell. [Used to be sold on KBDFans](https://www.aliexpress.com/item/bface-60-RGB-underground-copy-pcb-from-china-gh60-pcb-Customize-keyboard-PCB/32731084597.html). -- To put in reset mode hold `left ctrl` while inserting the USB cable -- Use flashing instructions in the main `bface` directory - -### Build -To build this keymap, run `make bface:kpeatt` from the qmk_firmware directory. diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/README.md b/keyboards/winkeyless/bface/keymaps/p3lim/README.md deleted file mode 100644 index 94e84e7f22..0000000000 --- a/keyboards/winkeyless/bface/keymaps/p3lim/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# p3lim's b.face layout - -![](https://user-images.githubusercontent.com/26496/61170794-bf8a2c80-a56e-11e9-893f-f1766e7a9a04.png) - -My layout using the winkeyless b.face X2 PCB. - -### Building & Flashing - -- Set up QMK - - `pip install --user qmk` - - `qmk setup` -- Add udev rules if on Linux - - Follow the docs: <https://docs.qmk.fm/#/faq_build?id=linux-udev-rules> -- Build and flash - - `qmk flash -kb winkeyless/bface -km p3lim` -- Hold bottom-left key while connecting to put in flashing mode - -### Layout notes - -The keys indicated with a gray color in the image above was not supported by the layout so a custom matrix was made. -The two additional keys were on pins 22+41 and 22+42, C3+B1 and C3+B2, which is mapped to col 10 row 1 and col 10 row 2 in the matrix. diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c b/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c deleted file mode 100644 index f702810f9c..0000000000 --- a/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c +++ /dev/null @@ -1,188 +0,0 @@ -/* -Copyright 2019-2021 Adrian L Lange <legal@p3lim.net> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -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 QMK_KEYBOARD_H - -#define LAYOUT_p3lim(\ - 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, \ - K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KC2, KD2, \ - K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, KC1, \ - K00, K10, K20, K56, K57, KB0, KC0 \ -){ \ - { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB0, KC0, KC_NO, KC_NO }, \ - { K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC1, KC_NO, KC_NO }, \ - { K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC2, KD2, KC_NO }, \ - { K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KC_NO, KC_NO }, \ - { K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \ - { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB6, KC6, KD6, KE6 }, \ - { KC_NO, K17, K27, K37, K47, K57, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB7, KC7, KD7, KE7 } \ -} - -enum my_keycodes { - C_ESC0 = SAFE_RANGE, // layer 0 esc - C_ESC1, // layer 1 esc - C_NO1, // æ, requires RCTL to be a compose key in software - C_NO2, // ø, requires RCTL to be a compose key in software - C_NO3 // å, requires RCTL to be a compose key in software -}; - -// use compiler macros for simpler stuff -#define C_KVM1 LCA(KC_1) -#define C_KVM2 LCA(KC_2) -#define C_KVM3 LCA(KC_3) -#define C_KVM4 LCA(KC_4) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* QWERTY - * ,-----------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | - * |-----------------------------------------------------------------------------------------+ - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | - * |---------------------------------------------------------------------------------| Enter | - * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | \ | | - * |-----------------------------------------------------------------------------------------+ - * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Del | - * |-----------------------------------------------------------------------------------------+ - * | FN1 | Alt | GUI | Space | FN2 | Alt | Ctrl | - * `-----------------------------------------------------------------------------------------' - */ - [0] = LAYOUT_p3lim( - C_ESC0, 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_DEL, - MO(1), KC_LALT, KC_LGUI, KC_SPC, MO(2), KC_RGUI, KC_RCTL - ), - - /* FN1 - * ,-----------------------------------------------------------------------------------------. - * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | - * |-----------------------------------------------------------------------------------------+ - * | Caps | Home| Up | End | PgUp| | | | | | | | | | - * |---------------------------------------------------------------------------------| | - * | | Left| Down|Right| PgDn|PrtSc| | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | KVM1| KVM2| KVM3| KVM4| | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | - * `-----------------------------------------------------------------------------------------' - */ - [1] = LAYOUT_p3lim( - C_ESC1, 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_CAPS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, - _______, C_KVM1, C_KVM2, C_KVM3, C_KVM4, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_NO, _______, _______ - ), - - /* FN2 - * ,-----------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | | | Å | | | - * |---------------------------------------------------------------------------------| | - * | | | | | | | | | | | Ø | Æ | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | - * `-----------------------------------------------------------------------------------------' - */ - [2] = LAYOUT_p3lim( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_NO3, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_NO2, C_NO1, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_NO, _______, _______, _______, _______, _______, _______ - ), - /* - [n] = LAYOUT_p3lim( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - ), - */ -}; - -static bool grave_esc_shifted = false; - -bool process_record_user(uint16_t keycode, keyrecord_t *record){ - const uint8_t mods = get_mods(); - uint8_t shifted = mods & MOD_MASK_SHIFT; - - switch(keycode){ - case C_ESC0: // layer 0 - if(record->event.pressed){ - grave_esc_shifted = shifted; - register_code(shifted ? KC_GRAVE : KC_ESCAPE); - } else - unregister_code(grave_esc_shifted ? KC_GRAVE : KC_ESCAPE); - return false; - case C_ESC1: // layer 1 - if(record->event.pressed){ - grave_esc_shifted = shifted; - register_code(shifted ? KC_ESCAPE : KC_GRAVE); - } else - unregister_code(grave_esc_shifted ? KC_ESCAPE : KC_GRAVE); - return false; - case C_NO1: // æ - if(record->event.pressed){ - // we use shift for A and E to make it capitalized, no need to handle it here - tap_code(KC_RCTL); - tap_code(KC_A); - tap_code(KC_E); - } - return false; - case C_NO2: // ø - // the "/" symbol can't be shifted, so we have to deal with that - if(record->event.pressed){ - if(shifted){ - unregister_code(KC_LSFT); // reset the shift state, I always use LSFT personally - tap_code(KC_RCTL); - tap_code(KC_SLSH); - tap_code16(S(KC_O)); - register_code(KC_LSFT); // enable the shift state again to keep state consistent - } else { - tap_code(KC_RCTL); - tap_code(KC_SLSH); - tap_code(KC_O); - } - } - return false; - case C_NO3: // å - // the "o" symbol can't be shifted, so we have to deal with that - if(record->event.pressed){ - if(shifted){ - unregister_code(KC_LSFT); // reset the shift state, I always use LSFT personally - tap_code(KC_RCTL); - tap_code(KC_O); - tap_code16(S(KC_A)); - register_code(KC_LSFT); // enable the shift state again to keep state consistent - } else { - tap_code(KC_RCTL); - tap_code(KC_O); - tap_code(KC_A); - } - } - return false; - } - return true; -} diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/rules.mk b/keyboards/winkeyless/bface/keymaps/p3lim/rules.mk deleted file mode 100644 index e0ed6f0c2d..0000000000 --- a/keyboards/winkeyless/bface/keymaps/p3lim/rules.mk +++ /dev/null @@ -1 +0,0 @@ -RGBLIGHT_ENABLE = no diff --git a/keyboards/winkeyless/bface/keymaps/via/config.h b/keyboards/winkeyless/bface/keymaps/via/config.h deleted file mode 100644 index 0865e45208..0000000000 --- a/keyboards/winkeyless/bface/keymaps/via/config.h +++ /dev/null @@ -1 +0,0 @@ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/winkeyless/bface/keymaps/via/rules.mk b/keyboards/winkeyless/bface/keymaps/via/rules.mk deleted file mode 100644 index 36b7ba9cbc..0000000000 --- a/keyboards/winkeyless/bface/keymaps/via/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -VIA_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/winkeyless/bface/readme.md b/keyboards/winkeyless/bface/readme.md deleted file mode 100644 index ab39a97db0..0000000000 --- a/keyboards/winkeyless/bface/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# B.face - -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. - -* Keyboard Maintainer: QMK Community -* Hardware Supported: B.face PCB -* Hardware Availability: [Winkeyless](https://winkeyless.kr/product/b-face-x2-pcb/) - -Make example for this keyboard (after setting up your build environment): - - make winkeyless/bface:default - -Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) - - make winkeyless/bface:default:flash - -**Reset Key**: Hold down the key located at *K00*, commonly programmed as *left control* while plugging in the keyboard. - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/winkeyless/bface/rules.mk b/keyboards/winkeyless/bface/rules.mk deleted file mode 100644 index 4dcdfe886a..0000000000 --- a/keyboards/winkeyless/bface/rules.mk +++ /dev/null @@ -1,17 +0,0 @@ -# MCU name -MCU = atmega32a - -# Bootloader selection -BOOTLOADER = bootloadhid - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = yes -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = yes -WS2812_DRIVER = i2c |