diff options
Diffstat (limited to 'keyboard/atomic_old')
| -rw-r--r-- | keyboard/atomic_old/Makefile | 135 | ||||
| -rw-r--r-- | keyboard/atomic_old/Makefile.pjrc | 116 | ||||
| -rw-r--r-- | keyboard/atomic_old/README 2.md | 141 | ||||
| -rw-r--r-- | keyboard/atomic_old/config.h | 70 | ||||
| -rw-r--r-- | keyboard/atomic_old/keymap_common.c | 30 | ||||
| -rw-r--r-- | keyboard/atomic_old/keymap_common.h | 87 | ||||
| -rw-r--r-- | keyboard/atomic_old/keymap_plain.c | 46 | ||||
| -rw-r--r-- | keyboard/atomic_old/keymap_ricky.c | 15 | ||||
| -rw-r--r-- | keyboard/atomic_old/keymap_vlad.c | 14 | ||||
| -rw-r--r-- | keyboard/atomic_old/led.c | 25 | ||||
| -rw-r--r-- | keyboard/atomic_old/matrix.c | 211 | 
11 files changed, 890 insertions, 0 deletions
| diff --git a/keyboard/atomic_old/Makefile b/keyboard/atomic_old/Makefile new file mode 100644 index 0000000000..c4e0cb45d7 --- /dev/null +++ b/keyboard/atomic_old/Makefile @@ -0,0 +1,135 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +#                Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +#               (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +#            have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +#             have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +#               (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +#                (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging,  +#              with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +#                   bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# Target file name (without extension). +TARGET = atomic_lufa + +# Directory common source filess exist +TOP_DIR = ../.. + +# Directory keyboard dependent files exist +TARGET_DIR = . + +# project specific files +SRC =	keymap_common.c \ +	matrix.c \ +	led.c + +ifdef KEYMAP +    SRC := keymap_$(KEYMAP).c $(SRC) +else +    SRC := keymap_vlad.c $(SRC) +endif + +CONFIG_H = config.h + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +#     This will define a symbol, F_CPU, in all source code files equal to the +#     processor frequency in Hz. You can then use this symbol in your source code to +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done +#     automatically to create a 32-bit value in your source code. +# +#     This will be an integer division of F_USB below, as it is sourced by +#     F_USB after it has run through any CPU prescalers. Note that this value +#     does not *change* the processor frequency - it should merely be updated to +#     reflect the processor speed set externally so that the code can use accurate +#     software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +#     This will define a symbol, F_USB, in all source code files equal to the +#     input clock frequency (before any prescaling is performed) in Hz. This value may +#     differ from F_CPU if prescaling is used on the latter, and is required as the +#     raw input clock is fed directly to the PLL sections of the AVR for high speed +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +#     at the end, this will be done automatically to create a 32-bit value in your +#     source code. +# +#     If no clock division is performed on the input clock inside the AVR (via the +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Teensy++ halfKay 1024 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#   USBaspLoader     2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +#   comment out to disable the options. +# +BOOTMAGIC_ENABLE = yes	# Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes	# Mouse keys(+4700) +EXTRAKEY_ENABLE = yes	# Audio control and System control(+450) +CONSOLE_ENABLE = yes	# Console for debug(+400) +COMMAND_ENABLE = yes    # Commands for debug and configuration +#SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes	# USB Nkey Rollover - not yet supported in LUFA + + +# Optimize size but this may cause error "relocation truncated to fit" +#EXTRALDFLAGS = -Wl,--relax + +# Search Path +VPATH += $(TARGET_DIR) +VPATH += $(TOP_DIR) + +include $(TOP_DIR)/protocol/lufa.mk +include $(TOP_DIR)/common.mk +include $(TOP_DIR)/rules.mk diff --git a/keyboard/atomic_old/Makefile.pjrc b/keyboard/atomic_old/Makefile.pjrc new file mode 100644 index 0000000000..9655ff65a9 --- /dev/null +++ b/keyboard/atomic_old/Makefile.pjrc @@ -0,0 +1,116 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +#                Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +#               (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +#            have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +#             have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +#               (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +#                (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging,  +#              with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +#                   bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# Target file name (without extension). +TARGET = gh60_pjrc + +# Directory common source filess exist +TOP_DIR = ../.. + +# Directory keyboard dependent files exist +TARGET_DIR = . + +# project specific files +SRC =	keymap_common.c \ +	matrix.c \ +	led.c + +ifdef KEYMAP +    SRC := keymap_$(KEYMAP).c $(SRC) +else +    SRC := keymap_poker.c $(SRC) +endif + +CONFIG_H = config.h + + +# MCU name, you MUST set this to match the board you are using +# type "make clean" after changing this, so all files will be rebuilt +MCU = atmega32u4 +#MCU = at90usb1286 + + +# Processor frequency. +#   Normally the first thing your program should do is set the clock prescaler, +#   so your program will run at the correct speed.  You should also set this +#   variable to same clock speed.  The _delay_ms() macro uses this, and many +#   examples use this variable to calculate timings.  Do not add a "UL" here. +F_CPU = 16000000 + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +#   comment out to disable the options. +# +BOOTMAGIC_ENABLE = yes	# Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes	# Mouse keys(+5000) +EXTRAKEY_ENABLE = yes	# Audio control and System control(+600) +CONSOLE_ENABLE = yes    # Console for debug +COMMAND_ENABLE = yes    # Commands for debug and configuration +SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes	# USB Nkey Rollover(+500) +#PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support + + +# Search Path +VPATH += $(TARGET_DIR) +VPATH += $(TOP_DIR) + +include $(TOP_DIR)/protocol/pjrc.mk +include $(TOP_DIR)/common.mk +include $(TOP_DIR)/rules.mk + +plain: OPT_DEFS += -DKEYMAP_PLAIN +plain: all + +poker: OPT_DEFS += -DKEYMAP_POKER +poker: all + +poker_set: OPT_DEFS += -DKEYMAP_POKER_SET +poker_set: all + +poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT +poker_bit: all diff --git a/keyboard/atomic_old/README 2.md b/keyboard/atomic_old/README 2.md new file mode 100644 index 0000000000..510cb5c8b6 --- /dev/null +++ b/keyboard/atomic_old/README 2.md @@ -0,0 +1,141 @@ +GH60 keyboard firmware +====================== +DIY compact keyboard designed and run by komar007 and Geekhack community. + +- Both Rev.A and Rev.B PCB are supported by one firmware binary(issue #64) + +## GH60 Resources +- [KOMAR's project page](http://blog.komar.be/projects/gh60-programmable-keyboard/) +- [Prototyping](http://geekhack.org/index.php?topic=34959.0) +- [Rev.A PCB test](http://geekhack.org/index.php?topic=37570.0) +- [Rev.B PCB test](http://geekhack.org/index.php?topic=50685.0) +- [Group buy](http://geekhack.org/index.php?topic=41464.0) + + +## Build +Move to this directory then just run `make` like: + +    $ make + +Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason to do so now. + + +## Keymap +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files. + +To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like: + +    $ make KEYMAP=[poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|<name>] + + +### 1  Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + +    Fn + Esc = ` +    Fn + {left, down, up, right}  = {home, pgdown, pgup, end} + +#### 1.0 Default layer +    ,-----------------------------------------------------------. +    |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp | +    |-----------------------------------------------------------| +    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| +    |-----------------------------------------------------------| +    |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  | +    |-----------------------------------------------------------| +    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     | +    |-----------------------------------------------------------| +    |Ctrl|Gui |Alt |      Space             |Fn  |Gui |App |Ctrl| +    `-----------------------------------------------------------' +#### 1.1 Poker Fn layer +    ,-----------------------------------------------------------. +    |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       | +    |-----------------------------------------------------------| +    |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|     | +    |-----------------------------------------------------------| +    |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        | +    |-----------------------------------------------------------| +    |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|   Up     | +    |-----------------------------------------------------------| +    |    |    |    |         FnS            |Fn  |Left|Down|Righ| +    `-----------------------------------------------------------' + + +### 2. Plain +Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. +See [keymap_plain.c](keymap_plain.c) for detail. + +#### 1.0 Plain Default layer +    ,-----------------------------------------------------------. +    |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp | +    |-----------------------------------------------------------| +    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| +    |-----------------------------------------------------------| +    |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  | +    |-----------------------------------------------------------| +    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     | +    |-----------------------------------------------------------| +    |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl| +    `-----------------------------------------------------------' + + +### 3. Hasu +This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. + + +### 4. SpaceFN +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). + +#### 4.0 Default layer +    ,-----------------------------------------------------------. +    |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp | +    |-----------------------------------------------------------| +    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| +    |-----------------------------------------------------------| +    |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  | +    |-----------------------------------------------------------| +    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     | +    |-----------------------------------------------------------| +    |Ctrl|Gui |Alt |      Space/Fn          |Alt |Gui |App |Ctrl| +    `-----------------------------------------------------------' +#### 4.1 SpaceFN layer +    ,-----------------------------------------------------------. +    |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | +    |-----------------------------------------------------------| +    |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  | +    |-----------------------------------------------------------| +    |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        | +    |-----------------------------------------------------------| +    |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          | +    |-----------------------------------------------------------| +    |    |    |    |            Fn          |    |    |    |    | +    `-----------------------------------------------------------' + + +### 5. HHKB +[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +#### 5.0: Default layer +    ,-----------------------------------------------------------. +    |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `| +    |-----------------------------------------------------------| +    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc | +    |-----------------------------------------------------------| +    |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  | +    |-----------------------------------------------------------| +    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn | +    |-----------------------------------------------------------| +    |    |Gui |Alt |      Space             |    |Alt |Gui |    | +    `-----------------------------------------------------------' +#### 5.1: HHKB Fn layer +    ,-----------------------------------------------------------. +    |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| +    |-----------------------------------------------------------| +    |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     | +    |-----------------------------------------------------------| +    |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   | +    |-----------------------------------------------------------| +    |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   | +    |-----------------------------------------------------------| +    |    |    |    |                        |    |    |    |    | +    `-----------------------------------------------------------' + diff --git a/keyboard/atomic_old/config.h b/keyboard/atomic_old/config.h new file mode 100644 index 0000000000..5ea953805f --- /dev/null +++ b/keyboard/atomic_old/config.h @@ -0,0 +1,70 @@ +/* +Copyright 2012 Jun Wako <wakojun@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/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x6060 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Ortholinear Keyboards +#define PRODUCT         Atomic Keyboard +#define DESCRIPTION     t.m.k. keyboard firmware for Atomic + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE    5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + + + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboard/atomic_old/keymap_common.c b/keyboard/atomic_old/keymap_common.c new file mode 100644 index 0000000000..fdb1769e1c --- /dev/null +++ b/keyboard/atomic_old/keymap_common.c @@ -0,0 +1,30 @@ +/* +Copyright 2012,2013 Jun Wako <wakojun@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 "keymap_common.h" + + +/* translates key to keycode */ +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) +{ +    return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); +} + +/* translates Fn keycode to action */ +action_t keymap_fn_to_action(uint8_t keycode) +{ +    return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; +} diff --git a/keyboard/atomic_old/keymap_common.h b/keyboard/atomic_old/keymap_common.h new file mode 100644 index 0000000000..c582c0135f --- /dev/null +++ b/keyboard/atomic_old/keymap_common.h @@ -0,0 +1,87 @@ +/* +Copyright 2012,2013 Jun Wako <wakojun@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/>. +*/ +#ifndef KEYMAP_COMMON_H +#define KEYMAP_COMMON_H + +#include <stdint.h> +#include <stdbool.h> +#include <avr/pgmspace.h> +#include "keycode.h" +#include "action.h" +#include "action_macro.h" +#include "report.h" +#include "host.h" +#include "print.h" +#include "debug.h" +#include "keymap.h" + + +extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +extern const uint16_t fn_actions[]; + +// JCK: Semi-Standard layout +#define KEYMAP_JCK( \ +    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,   K0E,    \ +    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ +    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,    K2D,   K2E, \ +    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A,    K3C,   K3D, K3E, \ +     K40,  K41,  K43,           K46,                  K4A, K4B, K4C, K4D, K4E  \ +) { \ +    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_NO,    KC_##K0E }, \ +    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E }, \ +    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO,    KC_##K2D, KC_##K2E }, \ +    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_NO,    KC_##K3C, KC_##K3D, KC_##K3E }, \ +    { KC_##K40, KC_##K41, KC_NO,    KC_##K43, KC_NO,    KC_NO,    KC_##K46, KC_NO,    KC_NO,    KC_NO,    KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E }  \ +} + +// ASK: Short Space layout +#define KEYMAP_ASK_MESSY( \ +    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,   K0E,    \ +    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ +    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,    K2D,   K2E, \ +    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A,    K3C,   K3D, K3E, \ +     K40,  K41,  K43,  K44,        K46,     K48, K49, K4A, K4B, K4C, K4D, K4E  \ +) { \ +    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_NO,    KC_##K0E }, \ +    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E }, \ +    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO,    KC_##K2D, KC_##K2E }, \ +    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_NO,    KC_##K3C, KC_##K3D, KC_##K3E }, \ +    { KC_##K40, KC_##K41, KC_NO,    KC_##K43, KC_##K44, KC_NO,    KC_##K46, KC_NO,    KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E }  \ +} + +#define KEYMAP_ASK( \ +    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,   K0E,    \ +    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ +    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,    K2C,   K2E, \ +    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A,    K3B,   K3D, K3E, \ +     K40,  K41,  K43,  K44,        K46,     K47, K48, K4A, K4B, K4C, K4D, K4E  \ +) { \ +    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_NO,    KC_##K0E }, \ +    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E }, \ +    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_NO,    KC_##K2E }, \ +    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_NO,    KC_##K3D, KC_##K3E }, \ +    { KC_##K40, KC_##K41, KC_NO,    KC_##K43, KC_##K44, KC_NO,    KC_##K46, KC_##K47, KC_##K48, KC_NO,    KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E }  \ +} + + +// MLO: Semi-Grid layout + +// KLN: Grid layout + +// PKR: Standard layout + +#endif diff --git a/keyboard/atomic_old/keymap_plain.c b/keyboard/atomic_old/keymap_plain.c new file mode 100644 index 0000000000..e7f53649f0 --- /dev/null +++ b/keyboard/atomic_old/keymap_plain.c @@ -0,0 +1,46 @@ +#include "keymap_common.h" + +// JCK: Semi-Standard layout + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +    /* 0: qwerty */ +    [0] = KEYMAP_JCK(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \ +                     TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    LBRC, RBRC, BSLS, DEL, \ +                     ESC,  A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,    ENT,     MPLY, \ +                     LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \ +                     LCTL,    LALT,  LGUI,          SPC,                         FN1,  LEFT, DOWN, UP,   RGHT), +    [1] = KEYMAP_JCK(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \ +                     TAB,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, LBRC, RBRC, BSLS, DEL, \ +                     ESC,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,    QUOT,    ENT,     MPLY, \ +                     LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \ +                     LCTL,    LALT,  LGUI,          SPC,                         FN1,  LEFT, DOWN, UP,   RGHT), +    [2] = KEYMAP_JCK(GRV,  F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,  F11,  F12,    BSPC, \ +                     TAB,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    LBRC, RBRC, BSLS, DEL, \ +                     ESC,  FN3, FN4, TRNS, TRNS, TRNS, TRNS, MINS, EQL,  LBRC, RBRC,   BSLS,    ENT,     MPLY, \ +                     LSFT, FN9,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \ +                     LCTL,    LALT,  LGUI,          SPC,                         TRNS,  MNXT, VOLD, VOLU, MPLY), +}; +const uint16_t PROGMEM fn_actions[] = { +    [1] = ACTION_LAYER_MOMENTARY(2),  // to Fn overlay +    [3] = ACTION_DEFAULT_LAYER_SET(0),  +    [4] = ACTION_DEFAULT_LAYER_SET(1),   + +    [9] = ACTION_MODS_KEY(MOD_LSFT | MOD_RSFT, KC_PAUSE), +  +    [10] = ACTION_MODS_KEY(MOD_LSFT, KC_1), +    [11] = ACTION_MODS_KEY(MOD_LSFT, KC_2), +    [12] = ACTION_MODS_KEY(MOD_LSFT, KC_3), +    [13] = ACTION_MODS_KEY(MOD_LSFT, KC_4), +    [14] = ACTION_MODS_KEY(MOD_LSFT, KC_5), +    [15] = ACTION_MODS_KEY(MOD_LSFT, KC_6), +    [16] = ACTION_MODS_KEY(MOD_LSFT, KC_7), +    [17] = ACTION_MODS_KEY(MOD_LSFT, KC_8), +    [18] = ACTION_MODS_KEY(MOD_LSFT, KC_9), +    [19] = ACTION_MODS_KEY(MOD_LSFT, KC_0), +    [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), +    [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), +    [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), +    [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), +    [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), +    [28] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), +}; diff --git a/keyboard/atomic_old/keymap_ricky.c b/keyboard/atomic_old/keymap_ricky.c new file mode 100644 index 0000000000..fcc91a1fa5 --- /dev/null +++ b/keyboard/atomic_old/keymap_ricky.c @@ -0,0 +1,15 @@ +#include "keymap_common.h" + +// JCK: Semi-Standard layout + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +    /* 0: qwerty */ +    [0] = KEYMAP_JCK(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \ +                     TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    LBRC, RBRC, BSLS, PSCR, \ +                     CAPS, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,    ENT,     INS, \ +                     LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    UP, DEL, \ +                     LCTL,    LGUI,  LALT,          SPC,                         RALT,  RCTL, LEFT, DOWN,   RGHT) +}; +const uint16_t PROGMEM fn_actions[] = { +}; + diff --git a/keyboard/atomic_old/keymap_vlad.c b/keyboard/atomic_old/keymap_vlad.c new file mode 100644 index 0000000000..e56bcf1618 --- /dev/null +++ b/keyboard/atomic_old/keymap_vlad.c @@ -0,0 +1,14 @@ +#include "keymap_common.h" + +// JCK: Semi-Standard layout + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +    /* 0: qwerty */ +    [0] = KEYMAP_ASK(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \ +                     TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    LBRC, RBRC, BSLS, DEL, \ +                     CAPS,  A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,    ENT,     VOLU, \ +                     LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    UP, VOLD, \ +                     LCTL,    LGUI,  LALT,   LGUI,     SPC,           RGUI,       RALT, RGUI, RCTL, LEFT, DOWN,   RGHT) +}; +const uint16_t PROGMEM fn_actions[] = { +};
\ No newline at end of file diff --git a/keyboard/atomic_old/led.c b/keyboard/atomic_old/led.c new file mode 100644 index 0000000000..2d52fbf1c3 --- /dev/null +++ b/keyboard/atomic_old/led.c @@ -0,0 +1,25 @@ +/* +Copyright 2012 Jun Wako <wakojun@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 <avr/io.h> +#include "stdint.h" +#include "led.h" + + +void led_set(uint8_t usb_led) +{ +} diff --git a/keyboard/atomic_old/matrix.c b/keyboard/atomic_old/matrix.c new file mode 100644 index 0000000000..98102cb694 --- /dev/null +++ b/keyboard/atomic_old/matrix.c @@ -0,0 +1,211 @@ +/* +Copyright 2012 Jun Wako <wakojun@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/>. +*/ + +/* + * scan matrix + */ +#include <stdint.h> +#include <stdbool.h> +#include <avr/io.h> +#include <util/delay.h> +#include "action_layer.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" + + +#ifndef DEBOUNCE +#   define DEBOUNCE 10 +#endif +static uint8_t debouncing = DEBOUNCE; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static matrix_row_t read_cols(void); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + + +inline +uint8_t matrix_rows(void) +{ +    return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ +    return MATRIX_COLS; +} + + +void matrix_init(void) +{ +    // initialize row and col +    unselect_rows(); +    init_cols(); + +    // initialize matrix state: all keys off +    for (uint8_t i=0; i < MATRIX_ROWS; i++) { +        matrix[i] = 0; +        matrix_debouncing[i] = 0; +    } +} + +uint8_t matrix_scan(void) +{ +    for (uint8_t i = 0; i < MATRIX_ROWS; i++) { +        select_row(i); +        _delay_us(30);  // without this wait read unstable value. +        matrix_row_t cols = read_cols(); +        if (matrix_debouncing[i] != cols) { +            matrix_debouncing[i] = cols; +            if (debouncing) { +                debug("bounce!: "); debug_hex(debouncing); debug("\n"); +            } +            debouncing = DEBOUNCE; +        } +        unselect_rows(); +    } + +    if (debouncing) { +        if (--debouncing) { +            _delay_ms(1); +        } else { +            for (uint8_t i = 0; i < MATRIX_ROWS; i++) { +                matrix[i] = matrix_debouncing[i]; +            } +        } +    } + + +    return 1; +} + +bool matrix_is_modified(void) +{ +    if (debouncing) return false; +    return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ +    return (matrix[row] & ((matrix_row_t)1<<col)); +} + +inline +matrix_row_t matrix_get_row(uint8_t row) +{ +    return matrix[row]; +} + +void matrix_print(void) +{ +    print("\nr/c 0123456789ABCDEF\n"); +    for (uint8_t row = 0; row < MATRIX_ROWS; row++) { +        phex(row); print(": "); +        pbin_reverse16(matrix_get_row(row)); +        print("\n"); +    } +} + +uint8_t matrix_key_count(void) +{ +    uint8_t count = 0; +    for (uint8_t i = 0; i < MATRIX_ROWS; i++) { +        count += bitpop16(matrix[i]); +    } +    return count; +} + +/* Column pin configuration + * col: 0  1  2  3  4  5  6  7  8  9  10 11 + * pin: F0 F1 F4 F5 F6 F7 B6 B5 B4 D7 D5 D4 + */ + +static void init_cols(void) +{ +    DDRC  &= ~(1<<6 | 1<<7); +    PORTC |=  (1<<6 | 1<<7); +    DDRD  &= ~(1<<4 | 1<<5 | 1<<6 | 1<<7); +    PORTD |=  (1<<4 | 1<<5 | 1<<6 | 1<<7); +    DDRB  &= ~(1<<4 | 1<<5 | 1<<6); +    PORTB |=  (1<<4 | 1<<5 | 1<<6); +    DDRF  &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7); +    PORTF |=  (1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7); +} + +static matrix_row_t read_cols(void) +{ +    return (PINC&(1<<6) ? 0 : (1<< 0)) | +           (PINC&(1<<7) ? 0 : (1<< 1)) | +           (PIND&(1<<5) ? 0 : (1<< 2)) | +           (PIND&(1<<4) ? 0 : (1<< 3)) | +           (PIND&(1<<6) ? 0 : (1<< 4)) | +           (PIND&(1<<7) ? 0 : (1<< 5)) | +           (PINB&(1<<4) ? 0 : (1<< 6)) | +           (PINB&(1<<5) ? 0 : (1<< 7)) | +           (PINB&(1<<6) ? 0 : (1<< 8)) | +           (PINF&(1<<7) ? 0 : (1<< 9)) | +           (PINF&(1<<6) ? 0 : (1<<10)) | +           (PINF&(1<<5) ? 0 : (1<<11)) | +           (PINF&(1<<4) ? 0 : (1<<12)) | +           (PINF&(1<<1) ? 0 : (1<<13)) | +           (PINF&(1<<0) ? 0 : (1<<14)); +} + +/* Row pin configuration + * row: 0  1  2  3 + * pin: B0 B1 B2 B3 + */ +static void unselect_rows(void) +{ +    // Hi-Z(DDR:0, PORT:0) to unselect +    DDRB  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7); +    PORTB |=  (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7); +} + +static void select_row(uint8_t row) +{ +    switch (row) { +        case 0: +            DDRB  |= (1<<0); +            PORTB &= ~(1<<0); +            break; +        case 1: +            DDRB  |= (1<<1); +            PORTB &= ~(1<<1); +            break; +        case 2: +            DDRB  |= (1<<2); +            PORTB &= ~(1<<2); +            break; +        case 3: +            DDRB  |= (1<<3); +            PORTB &= ~(1<<3); +            break; +        case 4: +            DDRB  |= (1<<7); +            PORTB &= ~(1<<7); +            break; +    } +} | 
