From e1e86cb1fb97afe3c2d8331dde4e0f1d61d67e37 Mon Sep 17 00:00:00 2001 From: Purdea Andrei Date: Fri, 30 Sep 2022 09:02:24 +0300 Subject: [PATCH] Add Unicomp PC122 keyboard (#18326) --- keyboards/unicomp/pc122/info.json | 16 +++++ .../unicomp/pc122/keymaps/default/keymap.c | 34 ++++++++++ .../unicomp/pc122/keymaps/default/readme.md | 3 + .../unicomp/pc122/keymaps/pc3270/keymap.c | 34 ++++++++++ .../unicomp/pc122/keymaps/pc3270/readme.md | 6 ++ .../unicomp/pc122/keymaps/ps2_5250/keymap.c | 34 ++++++++++ .../unicomp/pc122/keymaps/ps2_5250/readme.md | 6 ++ .../unicomp/pc122/keymaps/usb_5250/keymap.c | 34 ++++++++++ .../unicomp/pc122/keymaps/usb_5250/readme.md | 6 ++ .../unicomp/pc122/overnumpad_1xb/config.h | 68 +++++++++++++++++++ .../pc122/overnumpad_1xb/overnumpad_1xb.c | 24 +++++++ .../pc122/overnumpad_1xb/overnumpad_1xb.h | 49 +++++++++++++ .../unicomp/pc122/overnumpad_1xb/readme.md | 40 +++++++++++ .../unicomp/pc122/overnumpad_1xb/rules.mk | 23 +++++++ 14 files changed, 377 insertions(+) create mode 100644 keyboards/unicomp/pc122/info.json create mode 100644 keyboards/unicomp/pc122/keymaps/default/keymap.c create mode 100644 keyboards/unicomp/pc122/keymaps/default/readme.md create mode 100644 keyboards/unicomp/pc122/keymaps/pc3270/keymap.c create mode 100644 keyboards/unicomp/pc122/keymaps/pc3270/readme.md create mode 100644 keyboards/unicomp/pc122/keymaps/ps2_5250/keymap.c create mode 100644 keyboards/unicomp/pc122/keymaps/ps2_5250/readme.md create mode 100644 keyboards/unicomp/pc122/keymaps/usb_5250/keymap.c create mode 100644 keyboards/unicomp/pc122/keymaps/usb_5250/readme.md create mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/config.h create mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c create mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/readme.md create mode 100644 keyboards/unicomp/pc122/overnumpad_1xb/rules.mk diff --git a/keyboards/unicomp/pc122/info.json b/keyboards/unicomp/pc122/info.json new file mode 100644 index 0000000000..d991b81f4a --- /dev/null +++ b/keyboards/unicomp/pc122/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Unicomp PC122", + "manufacturer": "Unicomp/Purdea Andrei", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "usb": { + "vid": "0x16C0", + "pid": "0x27DB", + "device_version": "0.0.1" + }, + "layouts": { + "LAYOUT_all": { + "layout": [{"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":13.25, "y":1}, {"x":14.25, "y":1}, {"x":0, "y":2.5}, {"x":1, "y":2.5}, {"x":2.25, "y":2.5}, {"x":3.25, "y":2.5}, {"x":4.25, "y":2.5}, {"x":5.25, "y":2.5}, {"x":6.25, "y":2.5}, {"x":7.25, "y":2.5}, {"x":8.25, "y":2.5}, {"x":9.25, "y":2.5}, {"x":10.25, "y":2.5}, {"x":11.25, "y":2.5}, {"x":12.25, "y":2.5}, {"x":13.25, "y":2.5}, {"x":14.25, "y":2.5}, {"x":15.25, "y":2.5, "w":2}, {"x":17.75, "y":2.5}, {"x":18.75, "y":2.5}, {"x":19.75, "y":2.5}, {"x":21.25, "y":2.5}, {"x":22.25, "y":2.5}, {"x":23.25, "y":2.5}, {"x":24.25, "y":2.5}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2.25, "y":3.5, "w":1.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5}, {"x":14.75, "y":3.5}, {"x":15.75, "y":3.5, "w":1.5}, {"x":17.75, "y":3.5}, {"x":18.75, "y":3.5}, {"x":19.75, "y":3.5}, {"x":21.25, "y":3.5}, {"x":22.25, "y":3.5}, {"x":23.25, "y":3.5}, {"x":24.25, "y":3.5}, {"x":0, "y":4.5}, {"x":1, "y":4.5}, {"x":2.25, "y":4.5, "w":1.75}, {"x":4, "y":4.5}, {"x":5, "y":4.5}, {"x":6, "y":4.5}, {"x":7, "y":4.5}, {"x":8, "y":4.5}, {"x":9, "y":4.5}, {"x":10, "y":4.5}, {"x":11, "y":4.5}, {"x":12, "y":4.5}, {"x":13, "y":4.5}, {"x":14, "y":4.5}, {"x":15, "y":4.5}, {"x":16, "y":4.5, "w":1.25}, {"x":18.75, "y":4.5}, {"x":21.25, "y":4.5}, {"x":22.25, "y":4.5}, {"x":23.25, "y":4.5}, {"x":24.25, "y":4.5}, {"x":0, "y":5.5}, {"x":1, "y":5.5}, {"x":2.25, "y":5.5, "w":1.25}, {"x":3.5, "y":5.5}, {"x":4.5, "y":5.5}, {"x":5.5, "y":5.5}, {"x":6.5, "y":5.5}, {"x":7.5, "y":5.5}, {"x":8.5, "y":5.5}, {"x":9.5, "y":5.5}, {"x":10.5, "y":5.5}, {"x":11.5, "y":5.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5}, {"x":14.5, "y":5.5, "w":2.75}, {"x":17.75, "y":5.5}, {"x":18.75, "y":5.5}, {"x":19.75, "y":5.5}, {"x":21.25, "y":5.5}, {"x":22.25, "y":5.5}, {"x":23.25, "y":5.5}, {"x":24.25, "y":5.5, "h":2}, {"x":0, "y":6.5}, {"x":1, "y":6.5}, {"x":2.25, "y":6.5, "w":1.5}, {"x":4.75, "y":6.5, "w":1.5}, {"x":6.25, "y":6.5, "w":7}, {"x":13.25, "y":6.5, "w":1.5}, {"x":15.75, "y":6.5, "w":1.5}, {"x":18.75, "y":6.5}, {"x":21.25, "y":6.5, "w":2}, {"x":23.25, "y":6.5}] + } + } +} diff --git a/keyboards/unicomp/pc122/keymaps/default/keymap.c b/keyboards/unicomp/pc122/keymaps/default/keymap.c new file mode 100644 index 0000000000..8df8de9529 --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + 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_ESC, KC_SLCK, 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, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_PSCR, KC_PAUS, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_PSCR, KC_F1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_RGUI, KC_MPLY, KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_ENT, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LGUI, KC_APP, KC_LCTRL, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_DOWN, KC_P0, KC_PDOT + ) +}; diff --git a/keyboards/unicomp/pc122/keymaps/default/readme.md b/keyboards/unicomp/pc122/keymaps/default/readme.md new file mode 100644 index 0000000000..36841bb572 --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for unicomp/pc122/$(CONTROLLER) + +This keymap is designed for those who prefer modern 10X-key layouts, and want to start out from there customizing their keyboard. diff --git a/keyboards/unicomp/pc122/keymaps/pc3270/keymap.c b/keyboards/unicomp/pc122/keymaps/pc3270/keymap.c new file mode 100644 index 0000000000..706249ca1d --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/pc3270/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + S(KC_F1), S(KC_F2), S(KC_F3), S(KC_F4), S(KC_F5), S(KC_F6), S(KC_F7), S(KC_F8), S(KC_F9), S(KC_F10), S(KC_F11), S(KC_F12), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + S(KC_ESC), C(KC_F9), 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, KC_BSPC, C(KC_F8), KC_PGUP, KC_PGDN, KC_ESC, KC_NLCK, KC_PAST, KC_PSLS, + C(KC_F1), KC_PAUS, 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_END, KC_INS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + C(KC_F2), C(KC_F5), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, + KC_PSCR, C(KC_F6), KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_HOME, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_SLCK, C(KC_F7), KC_LCTRL, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_DOWN, KC_P0, KC_PDOT + ) +}; diff --git a/keyboards/unicomp/pc122/keymaps/pc3270/readme.md b/keyboards/unicomp/pc122/keymaps/pc3270/readme.md new file mode 100644 index 0000000000..7bd5ce90f2 --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/pc3270/readme.md @@ -0,0 +1,6 @@ +# The "PC122/3270 Keyboard (USB and PS/2)" keymap for unicomp/pc122/$(CONTROLLER) + +This keymap is designed to match the following official keymap from Unicomp: +https://support.pckeyboard.com/knowledgebase.php?article=58 +https://support.pckeyboard.com/download_attachment.php?kb_att=56 + diff --git a/keyboards/unicomp/pc122/keymaps/ps2_5250/keymap.c b/keyboards/unicomp/pc122/keymaps/ps2_5250/keymap.c new file mode 100644 index 0000000000..f1ff9ea18a --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/ps2_5250/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + S(KC_F1), S(KC_F2), S(KC_F3), S(KC_F4), S(KC_F5), S(KC_F6), S(KC_F7), S(KC_F8), S(KC_F9), S(KC_F10), S(KC_F11), S(KC_F12), + 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_ESC, KC_SLCK, 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, KC_BSPC, S(KC_TAB), KC_INS, KC_PGUP, KC_END, KC_NLCK, KC_PSLS, KC_PAST, + KC_PSCR, KC_PAUS, 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, S(KC_RCTRL), KC_DEL, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + C(KC_PAUS), A(KC_F1), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS, + S(C(KC_4)), S(C(KC_3)), KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_HOME, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LGUI, KC_APP, KC_LCTRL, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_DOWN, KC_P0, KC_PDOT + ) +}; diff --git a/keyboards/unicomp/pc122/keymaps/ps2_5250/readme.md b/keyboards/unicomp/pc122/keymaps/ps2_5250/readme.md new file mode 100644 index 0000000000..7ab1b84810 --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/ps2_5250/readme.md @@ -0,0 +1,6 @@ +# The "PS2 PC5250" keymap for unicomp/pc122/$(CONTROLLER) + +This keymap is designed to match the following official keymap from Unicomp: +https://support.pckeyboard.com/knowledgebase.php?article=70 +https://support.pckeyboard.com/download_attachment.php?kb_att=83 + diff --git a/keyboards/unicomp/pc122/keymaps/usb_5250/keymap.c b/keyboards/unicomp/pc122/keymaps/usb_5250/keymap.c new file mode 100644 index 0000000000..34ac826f6c --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/usb_5250/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + S(KC_F1), S(KC_F2), S(KC_F3), S(KC_F4), S(KC_F5), S(KC_F6), S(KC_F7), S(KC_F8), S(KC_F9), S(KC_F10), S(KC_F11), S(KC_F12), + 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_ESC, KC_SLCK, 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, KC_BSPC, S(KC_TAB), KC_INS, KC_PGUP, KC_END, KC_NLCK, KC_PSLS, KC_PAST, + KC_PSCR, KC_PAUS, 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, C(KC_F6), KC_DEL, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + C(KC_F3), C(KC_F1), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS, + C(KC_F5), C(KC_F2), KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_HOME, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LGUI, KC_APP, KC_LCTRL, KC_LALT, KC_SPC, KC_RALT, KC_RCTRL, KC_DOWN, KC_P0, KC_PDOT + ) +}; diff --git a/keyboards/unicomp/pc122/keymaps/usb_5250/readme.md b/keyboards/unicomp/pc122/keymaps/usb_5250/readme.md new file mode 100644 index 0000000000..30c3808f74 --- /dev/null +++ b/keyboards/unicomp/pc122/keymaps/usb_5250/readme.md @@ -0,0 +1,6 @@ +# The "USB/5250" keymap for unicomp/pc122/$(CONTROLLER) + +This keymap is designed to match the following official keymap from Unicomp: +https://support.pckeyboard.com/knowledgebase.php?article=69 +https://support.pckeyboard.com/download_attachment.php?kb_att=82 + diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/config.h b/keyboards/unicomp/pc122/overnumpad_1xb/config.h new file mode 100644 index 0000000000..ad7668bdea --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/config.h @@ -0,0 +1,68 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ +#pragma once + +#include "config_common.h" + +#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ + +// All pins in order from left-to-right, as seen on the keyboard: +// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, +// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. + +// On this keyboard the right-most pin is not used, so that is A10. +// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. + +#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } +#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +#define MATRIX_HAS_GHOST + +#define STM32_HSECLK 16000000 + +#define SOLENOID_PIN B5 +#define HAPTIC_ENABLE_PIN C13 +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +#define HAPTIC_OFF_IN_LOW_POWER 1 +#define NO_HAPTIC_MOD + +#define LED_NUM_LOCK_PIN C12 +#define LED_CAPS_LOCK_PIN C11 +#define LED_SCROLL_LOCK_PIN C10 +#define LED_ON_STATE 1 diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c new file mode 100644 index 0000000000..cb5ec3dc12 --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ + +#include "overnumpad_1xb.h" + +void keyboard_post_init_kb(void) +{ + //debug_enable=true; + //debug_matrix=true; +} + diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h new file mode 100644 index 0000000000..e0dc0d8f33 --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/overnumpad_1xb.h @@ -0,0 +1,49 @@ +/* Copyright 2020 Purdea Andrei + * + * 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 . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + k_f13, k_f14, k_f15, k_f16, k_f17, k_f18, k_f19, k_f20, k_f21, k_f22, k_f23, k_f24, \ + k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, \ +k_lb1, k_lb2, k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ +k_lb3, k_lb4, k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ +k_lb5, k_lb6, k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, k_up, kp_4, kp_5, kp_6, kp_plus_hidden, \ +k_lb7, k_lb8, k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_left, k_navmid, k_right, kp_1, kp_2, kp_3, kp_enter, \ +k_lb9, k_lb10, k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_down, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_lb1, k_lb4, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_lb3, k_right, k_lb2, k_lb6 }, \ + /* 1 */ { k_tab, k_f21, k_del, k_pgdn, k_f22, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_f23, k_f14, k_caps }, \ + /* 2 */ { k_1, k_f19, kp_nl, k_pgup, k_f17, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lb9, k_f16 }, \ + /* 3 */ { k_q, k_rshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, k_f24, k_f13, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_f20, k_f15, k_lb10 }, \ + /* 5 */ { k_z, k_lshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, k_navmid, kp_plus_hidden, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_ralt, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, k_lb7, KC_NO }, \ + /* 7 */ { k_tild, k_f18, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_lb8, k_space, kp_enter, k_lb5 } \ +} diff --git a/keyboards/unicomp/pc122/overnumpad_1xb/readme.md b/keyboards/unicomp/pc122/overnumpad_1xb/readme.md new file mode 100644 index 0000000000..3253a54531 --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/readme.md @@ -0,0 +1,40 @@ +# unicomp/pc122/overnumpad_1xb + +![unicomp/pc122/overnumpad_1xb](https://sharktastica.co.uk/resources/images/model_ms/shark_UB40T56_unicomp.jpg) + +Will support the Unicomp PC122 keyboard + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: OverNumpad controller v1.Xb +* Hardware Availability: + * [controller](https://github.com/purdeaandrei/overnumpad_controller_1xb) + * [keyboard](https://www.pckeyboard.com/) + +To place the keyboard into bootloader mode in order to flash it, hold the top-left key of the +left-side block of the keyboard, while plugging the board in. It's possible to accidentally +brick this feature, if the wrong firmware is flashed onto the keyboard. If that happens, +open up the keyboard, and press the RST&PROG button to enter bootloader mode. + +Note: LAYOUT_all is incomplete, because certain pairs of possible key positions are mapped to the same matrix position: +* The hidden key position under the numeric keypad 2-unit vertical enter key overlaps with the key in the 1st column, 4th row of the left-side block (the one that usually comes with "Record" or "Print/Ident" printed on it by default) +* The hidden key position under the numeric keypad 2-unit horizontal 0 key overlaps with the key position that is normally hidden by a 2u vertical keypad plus key. (This key position is usually exposed as a Field + key, or as a keypad - key) +* The hidden key position under the 2-unit backspace key overlaps with F19. +* The hidden key position under the right-shift key overlaps with F20. +As such it's not possible to make a LAYOUT_all macro that shows all key position. +The user may still make use of these normally hidden key positions, by hiding the other key they overlap to (or by leaving them accessible but the other key must have the same keycode): +* To make use of the hidden key under the 2-unit vertical enter key, a 2-unit horizontal key could be used on the 4th row of the left-side block. +* To make use of the hidden key under the 2-unit horizontal keypad 0 key, a 2-unit vertical + key could be used. +* To make use of the hidden key under the backspace key, a 2-unit horizontal key could be used over what is normally F19 and F20. +* To make use of the hidden key under the right-shift key, a 2-unit horizontal key could be used over what is normally F20 and F21. +As such, mathematically there are 2 * 2 * 3 = 12 possible LAYOUT_all combinations, and we have chosen to only provide the default LAYOUT_all layout. If the user chooses to implement one or more of the above mods, +they can still make this firmware work with the single default LAYOUT_all, using the above information, by assigning keycodes to their conventional key position. + +Make example for this keyboard (after setting up your build environment): + + make unicomp/pc122/overnumpad_1xb:default + +Flashing example for this keyboard: + + make unicomp/pc122/overnumpad_1xb:default:flash + +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/unicomp/pc122/overnumpad_1xb/rules.mk b/keyboards/unicomp/pc122/overnumpad_1xb/rules.mk new file mode 100644 index 0000000000..8acd50a10f --- /dev/null +++ b/keyboards/unicomp/pc122/overnumpad_1xb/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F446 # STM32F446RET6 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +ENCODER_ENABLE = no # Enable rotary encoder support +AUDIO_ENABLE = no # Audio output +KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra + +HAPTIC_ENABLE = yes +HAPTIC_DRIVER = SOLENOID