Permalink
Browse files

Keyboard: 5291 firmware to replace the existing soarers controller fi…

…rmware (#4483)

* compiles but is not working

* still testing 5291

* compiles but is not working

* still testing 5291

* fixed a but in the layout (reversed key order in row)

* compiles but is not working

* still testing 5291

* fixed a but in the layout (reversed key order in row)

* fixed some issues

* doumentation needed

* doumentation needed

* documentation needed

* documentation needed

* Update readme.md

documentation

* Update readme.md

i dislike markdown <_>

* merge preperation
  • Loading branch information...
listofoptions authored and drashna committed Nov 26, 2018
1 parent f3ffd6a commit 4ebd27002a344b017276dc70796435a8e718f46a
@@ -0,0 +1,42 @@
/*
Copyright 2018 listofoptions <listofoptions@gmail.com>
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 "config_common.h"
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 1
#define MANUFACTURER QMK
#define PRODUCT 5291 keyboard converter
#define DESCRIPTION 5291 keyboard converter
#define MATRIX_ROWS 24
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS {B2, B3, B4, B5, B6}
#define MATRIX_COL_PINS {B0, B1}
#define MATRIX_DATA_PIN D0
#define MATRIX_STROBE_PIN D1
#define LED_PIN D6
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 0
@@ -0,0 +1,3 @@
#include "ibm_5291.h"
#include <avr/io.h>
#include "quantum.h"
@@ -0,0 +1,69 @@
/*
Copyright 2018 listofoptions <listofoptions@gmail.com>
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"
/*
* ,-------. ,--------------------------------------------------------------------------.
* | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck |
* |-------| |--------------------------------------------------------------------------|
* | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -|
* |-------| |------------------------------------------------------|Ent|---------------|
* | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| |
* |-------| |----------------------------------------------------------------------| |
* | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift|PrS| 1| 2| 3| +|
* |-------| |----------------------------------------------------------------------| |
* | F9|F10| | Alt | Space |CapsLck| 0 | . | |
* `-------' `--------------------------------------------------------------------------'
*/
#define LAYOUT_5291( \
KEY_F1,KEY_F2, KEY_ESC, KEY_1, KEY_2,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7,KEY_8,KEY_9, KEY_0, KEY_MIN, KEY_EQU, KEY_BACK, KEY_NLOCK, KEY_SLOCK, \
KEY_F3,KEY_F4, KEY_TAB, KEY_Q, KEY_W,KEY_E,KEY_R,KEY_T,KEY_Y,KEY_U,KEY_I,KEY_O, KEY_P, KEY_LBRC,KEY_RBRC, KEY_PAD7,KEY_PAD8, KEY_PAD9,KEY_PMIN, \
KEY_F5,KEY_F6, KEY_LCTR,KEY_A, KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K,KEY_L, KEY_SEMI,KEY_QUOT,KEY_TICK, KEY_ENTR,KEY_PAD4,KEY_PAD5, KEY_PAD6, \
KEY_F7,KEY_F8, KEY_LSFS,KEY_BSLS,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_N,KEY_M,KEY_COMM,KEY_DOT, KEY_SLS,KEY_RSFS, KEY_PAST,KEY_PAD1,KEY_PAD2, KEY_PAD3,KEY_PPLS, \
KEY_F9,KEY_F10, KEY_LALT, KEY_SPACE, KEY_CLOCK, KEY_PAD0, KEY_PDOT \
) \
{ {KEY_Z, KEY_S, KEY_W, KEY_3 }\
, {KEY_X, KEY_D, KEY_E, KEY_4 }\
, {KEY_C, KEY_F, KEY_R, KEY_5 }\
, {KEY_V, KEY_G, KEY_T, KEY_6 }\
, {KEY_B, KEY_H, KEY_Y, KEY_7 }\
, {KEY_N, KEY_J, KEY_U, KEY_8 }\
, {KEY_PAD2, KEY_PAD5,KEY_PAD8,KEY_NLOCK }\
, {KEY_M, KEY_K, KEY_I, KEY_9 }\
, {KEY_COMM, KEY_L, KEY_O, KEY_0 }\
, {KEY_DOT, KEY_SEMI,KEY_P, KEY_MIN }\
, {KEY_SLS, KEY_QUOT,KEY_LBRC,KEY_EQU }\
, {KEY_SPACE, KEY_RSFS,KEY_TICK,KEY_RBRC }\
, {KEY_CLOCK, KEY_PAST,KEY_ENTR,KEY_BACK }\
, {KEY_PAD0, KEY_PAD1,KEY_PAD4,KEY_PAD7 }\
, {KEY_PPLS, KC_NO, KEY_PMIN,KEY_SLOCK }\
, {KEY_PDOT, KEY_PAD3,KEY_PAD6,KEY_PAD9 }\
, {KEY_BSLS, KEY_A, KEY_Q, KEY_2 }\
, {KEY_LALT, KC_NO, KC_NO, KEY_1 }\
, {KEY_F7, KEY_F5, KEY_F3, KEY_F1 }\
, {KEY_F8, KEY_F6, KEY_F4, KEY_F2 }\
, {KC_F10, KC_NO, KC_NO, KC_NO }\
, {KC_F9, KC_NO, KC_NO, KC_NO }\
, {KEY_LSFS, KEY_LCTR,KEY_TAB, KEY_ESC }\
, {KC_NO, KC_NO, KC_NO, KC_NO }\
}
#define LAYOUT LAYOUT_5291
@@ -0,0 +1,6 @@
{
"keyboard_name": "IBM 5291",
"keyboard_folder": "converter/5291",
"url": "https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard",
"maintainer": "listofoptions",
}
@@ -0,0 +1,233 @@
/*
Copyright 2018 listofoptions <listofoptions@gmail.com>
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
/*
enum xt_keycodes
{ XT_PAST = SAFE_RANGE // XT pad asterisk / print screen
, XT_SLCK // XT scroll lock / break
, XT_F6 // F6 / app key
, XT_F5 // F5 / gui
, XT_F9 // F9 / F11
, XT_F10 // F10 / F12
} ;
static bool shift_pressed = false ,
alt_pressed = false ,
ctrl_pressed = false ,
xt_pscr_pressed = false ,
xt_brk_pressed = false ,
xt_app_pressed = false ,
xt_gui_pressed = false ,
xt_lout_pressed = false ,
xt_f11_pressed = false ,
xt_f12_pressed = false ;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LSFT:
case KC_RSFT:
if (record->event.pressed) {
shift_pressed = true ;
} else {
shift_pressed = false ;
}
return true;
break;
case KC_LALT:
if (record->event.pressed) {
alt_pressed = true ;
} else {
alt_pressed = false ;
}
return true;
break;
case KC_LCTL:
if (record->event.pressed) {
ctrl_pressed = true ;
} else {
ctrl_pressed = false ;
}
return true;
break;
case XT_PAST:
if (record->event.pressed) {
if (shift_pressed) {
xt_pscr_pressed = true ;
register_code(KC_PSCR);
} else {
register_code(KC_PAST);
}
} else {
if (xt_pscr_pressed) {
xt_pscr_pressed = false ;
unregister_code(KC_PSCR);
} else {
unregister_code(KC_PAST);
}
}
return false;
break;
case XT_SLCK:
if (record->event.pressed) {
if (ctrl_pressed) {
xt_brk_pressed = true ;
register_code(KC_BRK);
} else {
register_code(KC_SLCK);
}
} else {
if (xt_brk_pressed) {
xt_brk_pressed = false ;
unregister_code(KC_BRK);
} else {
unregister_code(KC_SLCK);
}
}
return false;
break;
case XT_F6:
if (record->event.pressed) {
if (shift_pressed) {
xt_app_pressed = true ;
register_code(KC_APP);
} else {
register_code(KC_F6);
}
} else {
if (xt_app_pressed) {
xt_app_pressed = false ;
unregister_code(KC_APP);
} else {
unregister_code(KC_F6);
}
}
return false;
break;
case XT_F5:
if (record->event.pressed) {
if (shift_pressed) {
xt_gui_pressed = true ;
register_code(KC_LGUI);
} else if (ctrl_pressed) {
xt_lout_pressed = true ;
register_code (KC_LGUI) ;
register_code (KC_L) ;
} else {
register_code(KC_F5);
}
} else {
if (xt_gui_pressed) {
xt_gui_pressed = false ;
unregister_code(KC_LGUI);
} else if (xt_lout_pressed) {
xt_lout_pressed = false ;
unregister_code (KC_LGUI) ;
unregister_code (KC_L) ;
} else {
unregister_code(KC_F5);
}
}
return false;
break;
case XT_F9:
if (record->event.pressed) {
if (shift_pressed) {
xt_f11_pressed = true ;
register_code(KC_F11);
} else {
register_code(KC_F9);
}
} else {
if (xt_f11_pressed) {
xt_f11_pressed = false ;
unregister_code(KC_F11);
} else {
unregister_code(KC_F9);
}
}
return false;
break;
case XT_F10:
if (record->event.pressed) {
if (shift_pressed) {
xt_f12_pressed = true ;
register_code(KC_F12);
} else {
register_code(KC_F10);
}
} else {
if (xt_f12_pressed) {
xt_f12_pressed = false ;
unregister_code(KC_F12);
} else {
unregister_code(KC_F10);
}
}
return false;
break;
default:
return true;
break;
}
return true;
}
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// default layout is the standard XT layout
/*
* ,-------. ,--------------------------------------------------------------------------.
* | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck |
* |-------| |--------------------------------------------------------------------------|
* | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -|
* |-------| |------------------------------------------------------|Ent|---------------|
* | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| |
* |-------| |----------------------------------------------------------------------| |
* | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift| *| 1| 2| 3| +|
* |-------| |----------------------------------------------------------------------| |
* | F9|F10| | Alt | Space |CapsLck| 0 | . | |
* `-------' `--------------------------------------------------------------------------'
*/
/*
[0] = LAYOUT (
KC_F1,KC_F2, 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_NLCK, XT_SLCK,
KC_F3,KC_F4, 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_P7,KC_P8, KC_P9, KC_PMNS,
XT_F5,XT_F6, 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_GRV, KC_ENT, KC_P4,KC_P5, KC_P6,
KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,XT_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS,
XT_F9,XT_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT
)
*/
[0] = LAYOUT (
KC_F1,KC_F2, 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_NLCK, KC_SLCK,
KC_F3,KC_F4, 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_P7,KC_P8, KC_P9, KC_PMNS,
KC_F5,KC_F6, 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_GRV, KC_ENT, KC_P4,KC_P5, KC_P6,
KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS,
KC_F9,KC_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT
)
} ;
Binary file not shown.
Oops, something went wrong.

0 comments on commit 4ebd270

Please sign in to comment.