fc660c: Add unimap
This commit is contained in:
parent
2ed3abb6da
commit
4befc879f6
7 changed files with 1422 additions and 106 deletions
|
@ -73,9 +73,9 @@ EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug
|
CONSOLE_ENABLE ?= yes # Console for debug
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
||||||
#UNIMAP_ENABLE ?= yes # Universal keymap
|
#ACTIONMAP_ENABLE ?= yes # Use 16bit actionmap instead of 8bit keymap
|
||||||
ACTIONMAP_ENABLE ?= yes # Use 16bit actionmap instead of 8bit keymap
|
UNIMAP_ENABLE ?= yes # Universal keymap
|
||||||
#KEYMAP_SECTION_ENABLE ?= yes # fixed address keymap for keymap editor
|
KEYMAP_SECTION_ENABLE ?= yes # fixed address keymap for keymap editor
|
||||||
|
|
||||||
#OPT_DEFS += -DNO_ACTION_TAPPING
|
#OPT_DEFS += -DNO_ACTION_TAPPING
|
||||||
#OPT_DEFS += -DNO_ACTION_LAYER
|
#OPT_DEFS += -DNO_ACTION_LAYER
|
||||||
|
@ -87,6 +87,7 @@ ACTIONMAP_ENABLE ?= yes # Use 16bit actionmap instead of 8bit keymap
|
||||||
#
|
#
|
||||||
ifeq (yes,$(strip $(UNIMAP_ENABLE)))
|
ifeq (yes,$(strip $(UNIMAP_ENABLE)))
|
||||||
KEYMAP_FILE = unimap
|
KEYMAP_FILE = unimap
|
||||||
|
TARGET := $(TARGET)_unimap
|
||||||
else
|
else
|
||||||
ifeq (yes,$(strip $(ACTIONMAP_ENABLE)))
|
ifeq (yes,$(strip $(ACTIONMAP_ENABLE)))
|
||||||
KEYMAP_FILE = actionmap
|
KEYMAP_FILE = actionmap
|
||||||
|
|
|
@ -65,7 +65,7 @@ Row5-7 have no key, you can omit scaning on those lines. Topre original controll
|
||||||
| 7| | | | | | | | | | | | | | | | |
|
| 7| | | | | | | | | | | | | | | | |
|
||||||
|
|
||||||
Logic analyzer pics:
|
Logic analyzer pics:
|
||||||
- https://i.imgur.com/9SZUzYo.jpg
|
- http://i.imgur.com/9XoNTev.png
|
||||||
- https://i.imgur.com/5FCP1Ay.png
|
- https://i.imgur.com/5FCP1Ay.png
|
||||||
|
|
||||||
This code emuluates what original cotnroller does for matrix scan.
|
This code emuluates what original cotnroller does for matrix scan.
|
||||||
|
@ -129,11 +129,15 @@ Datasheets
|
||||||
|
|
||||||
3.3V power supply
|
3.3V power supply
|
||||||
-----------------
|
-----------------
|
||||||
LV07A and LVC138A are 5V-tolerant and can be powered with 5V, the keyboard will work only with 5V power supply.
|
LV07A and LVC138A are 5V-tolerant and can be powered with 5V, the keyboard will work only with 5V power supply. It may not be completely safe to operate LV138A with 5V Vcc, its datasheet says:
|
||||||
It may not be completely safe to operate LV138A with 5V Vcc, its datasheet says:
|
|
||||||
|
|
||||||
> Exposure to absolute-maximum-rated conditions for extended periods may affect device reliability.
|
> Exposure to absolute-maximum-rated conditions for extended periods may affect device reliability.
|
||||||
|
|
||||||
|
Digipot AD5258
|
||||||
|
--------------
|
||||||
|
Controller can operate AD5258 via I2C to change actuation point of keys. This may make keyboard unusable accidentally and it will be difficult to recovery in some situation. For safety firmware doesn't support it at this point, though.
|
||||||
|
|
||||||
|
Lower value of RDAC register causes shallower actuation point.
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
#include "action.h"
|
|
||||||
#include "actionmap.h"
|
|
||||||
#include "hook.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define AMAP( \
|
|
||||||
K13, K10, K11, K12, K14, K16, K17, K15, K1B, K18, K19, K1A, K1C, K1E, K1F, \
|
|
||||||
K03, K00, K01, K02, K04, K06, K07, K05, K0B, K08, K09, K0A, K0C, K0E, K0F, \
|
|
||||||
K43, K40, K41, K42, K44, K46, K47, K45, K4B, K48, K49, K4A, K4E, \
|
|
||||||
K33, K31, K32, K34, K36, K37, K35, K3B, K38, K39, K3A, K3C, K3D, \
|
|
||||||
K23, K21, K22, K27, K28, K2A, K2C, K2E, K2D, K2F \
|
|
||||||
) { \
|
|
||||||
{ AC_##K00, AC_##K01, AC_##K02, AC_##K03, AC_##K04, AC_##K05, AC_##K06, AC_##K07, \
|
|
||||||
AC_##K08, AC_##K09, AC_##K0A, AC_##K0B, AC_##K0C, AC_NO, AC_##K0E, AC_##K0F }, \
|
|
||||||
{ AC_##K10, AC_##K11, AC_##K12, AC_##K13, AC_##K14, AC_##K15, AC_##K16, AC_##K17, \
|
|
||||||
AC_##K18, AC_##K19, AC_##K1A, AC_##K1B, AC_##K1C, AC_NO, AC_##K1E, AC_##K1F }, \
|
|
||||||
{ AC_NO, AC_##K21, AC_##K22, AC_##K23, AC_NO, AC_NO, AC_NO, AC_##K27, \
|
|
||||||
AC_##K28, AC_NO, AC_##K2A, AC_NO, AC_##K2C, AC_##K2D, AC_##K2E, AC_##K2F }, \
|
|
||||||
{ AC_NO, AC_##K31, AC_##K32, AC_##K33, AC_##K34, AC_##K35, AC_##K36, AC_##K37, \
|
|
||||||
AC_##K38, AC_##K39, AC_##K3A, AC_##K3B, AC_##K3C, AC_##K3D, AC_NO, AC_NO }, \
|
|
||||||
{ AC_##K40, AC_##K41, AC_##K42, AC_##K43, AC_##K44, AC_##K45, AC_##K46, AC_##K47, \
|
|
||||||
AC_##K48, AC_##K49, AC_##K4A, AC_##K4B, AC_NO, AC_NO, AC_##K4E, AC_NO }, \
|
|
||||||
{ AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, \
|
|
||||||
AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO }, \
|
|
||||||
{ AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, \
|
|
||||||
AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO }, \
|
|
||||||
{ AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, \
|
|
||||||
AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#define AC_L3 ACTION_LAYER_MOMENTARY(3)
|
|
||||||
#define AC_L4 ACTION_LAYER_MOMENTARY(4)
|
|
||||||
#define AC_LS_2 ACTION_LAYER_MODS(2, MOD_LSFT)
|
|
||||||
#define AC_RS_2 ACTION_LAYER_MODS(2, MOD_RSFT)
|
|
||||||
#define AC_TGL1 ACTION_LAYER_TOGGLE(1)
|
|
||||||
|
|
||||||
// emulates FC660C default keymap
|
|
||||||
const action_t actionmaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
|
|
||||||
[0] = AMAP( \
|
|
||||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, \
|
|
||||||
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, \
|
|
||||||
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
|
|
||||||
LS_2,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RS_2,UP, \
|
|
||||||
LCTL,LGUI,LALT, SPC, RALT,RCTL,L3, LEFT,DOWN,RGHT \
|
|
||||||
),
|
|
||||||
[1] = AMAP( \
|
|
||||||
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, \
|
|
||||||
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, \
|
|
||||||
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
|
|
||||||
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,UP, \
|
|
||||||
LCTL,LGUI,LALT, SPC, RALT,RCTL,L4, LEFT,DOWN,RGHT \
|
|
||||||
),
|
|
||||||
[2] = AMAP( \
|
|
||||||
GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, \
|
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS \
|
|
||||||
),
|
|
||||||
[3] = AMAP( \
|
|
||||||
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \
|
|
||||||
CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS, TRNS,PGUP, \
|
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,APP, L3, HOME,PGDN,END \
|
|
||||||
),
|
|
||||||
[4] = AMAP( \
|
|
||||||
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \
|
|
||||||
CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS, TRNS, \
|
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS, TRNS,PGUP, \
|
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,APP, L4, HOME,PGDN,END \
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void hook_layer_change(uint32_t layer_state)
|
|
||||||
{
|
|
||||||
// lights LED on Insert when layer 1 is enabled
|
|
||||||
if (layer_state & (1L<<1)) {
|
|
||||||
PORTB &= ~(1<<5);
|
|
||||||
} else {
|
|
||||||
PORTB |= (1<<5);
|
|
||||||
}
|
|
||||||
}
|
|
1272
keyboard/fc660c/binary/fc660c_unimap.hex
Normal file
1272
keyboard/fc660c/binary/fc660c_unimap.hex
Normal file
File diff suppressed because it is too large
Load diff
|
@ -26,9 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
#include "matrix.h"
|
#include "matrix.h"
|
||||||
#include <avr/wdt.h>
|
|
||||||
#include "suspend.h"
|
|
||||||
#include "lufa.h"
|
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
#include "fc660c.h"
|
#include "fc660c.h"
|
||||||
|
|
||||||
|
@ -137,3 +134,28 @@ void led_set(uint8_t usb_led)
|
||||||
PORTB |= (1<<6);
|
PORTB |= (1<<6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef UNIMAP_ENABLE
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#include "unimap.h"
|
||||||
|
|
||||||
|
const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
{ UNIMAP_Q, UNIMAP_W, UNIMAP_E, UNIMAP_TAB, UNIMAP_R, UNIMAP_U, UNIMAP_T, UNIMAP_Y,
|
||||||
|
UNIMAP_O, UNIMAP_P, UNIMAP_LBRC, UNIMAP_I, UNIMAP_RBRC, UNIMAP_NO, UNIMAP_BSLS, UNIMAP_DEL },
|
||||||
|
{ UNIMAP_1, UNIMAP_2, UNIMAP_3, UNIMAP_GRV, UNIMAP_4, UNIMAP_7, UNIMAP_5, UNIMAP_6,
|
||||||
|
UNIMAP_9, UNIMAP_0, UNIMAP_MINS, UNIMAP_8, UNIMAP_EQL, UNIMAP_NO, UNIMAP_BSPC, UNIMAP_INS },
|
||||||
|
{ UNIMAP_NO, UNIMAP_LGUI, UNIMAP_LALT, UNIMAP_LCTL, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_SPC,
|
||||||
|
UNIMAP_RALT, UNIMAP_NO, UNIMAP_RCTL, UNIMAP_NO, UNIMAP_RGUI, UNIMAP_DOWN, UNIMAP_LEFT, UNIMAP_RGHT },
|
||||||
|
{ UNIMAP_NO, UNIMAP_Z, UNIMAP_X, UNIMAP_LSFT, UNIMAP_C, UNIMAP_N, UNIMAP_V, UNIMAP_B,
|
||||||
|
UNIMAP_COMM, UNIMAP_DOT, UNIMAP_SLSH, UNIMAP_M, UNIMAP_RSFT, UNIMAP_UP, UNIMAP_NO, UNIMAP_NO },
|
||||||
|
{ UNIMAP_A, UNIMAP_S, UNIMAP_D, UNIMAP_CAPS, UNIMAP_F, UNIMAP_J, UNIMAP_G, UNIMAP_H,
|
||||||
|
UNIMAP_L, UNIMAP_SCLN, UNIMAP_QUOT, UNIMAP_K, UNIMAP_NO, UNIMAP_NO, UNIMAP_ENT, UNIMAP_NO },
|
||||||
|
{ UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO,
|
||||||
|
UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO },
|
||||||
|
{ UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO,
|
||||||
|
UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO },
|
||||||
|
{ UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO,
|
||||||
|
UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO, UNIMAP_NO }
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include <avr/io.h>
|
#include <avr/io.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
|
#include "timer.h"
|
||||||
|
#include "unimap.h"
|
||||||
|
|
||||||
|
|
||||||
// Timer resolution check
|
// Timer resolution check
|
||||||
|
@ -14,17 +16,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HHKB Matrix I/O
|
|
||||||
*
|
|
||||||
* row: HC4051[A,B,C] selects scan row0-7
|
|
||||||
* row-ext: [En0,En1] row extention for JP
|
|
||||||
* col: LS145[A,B,C,D] selects scan col0-7 and enable(D)
|
|
||||||
* key: on: 0/off: 1
|
|
||||||
* prev: hysteresis control: assert(1) when previous key state is on
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pin configuration for ATMega32U4
|
* Pin configuration for ATMega32U4
|
||||||
*
|
*
|
||||||
|
@ -67,4 +58,50 @@ static inline void SET_COL(uint8_t COL)
|
||||||
PORTB = (PORTB & 0xE0) | ((COL & 0x08) ? 1<<4 : 1<<3) | (COL & 0x07);
|
PORTB = (PORTB & 0xE0) | ((COL & 0x08) ? 1<<4 : 1<<3) | (COL & 0x07);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef UNIMAP_ENABLE
|
||||||
|
/* unimap */
|
||||||
|
#define KMAP( \
|
||||||
|
K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K2A, K49, \
|
||||||
|
K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,K31, K4C, \
|
||||||
|
K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K28, \
|
||||||
|
K79,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K7D,K52, \
|
||||||
|
K78,K7B,K7A, K2C, K7E,K7C,K7F,K50,K51,K4F \
|
||||||
|
) UNIMAP( \
|
||||||
|
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
|
||||||
|
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
|
||||||
|
K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,NO, K2A, K49,NO, NO, NO, NO, NO, NO, \
|
||||||
|
K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, K4C,NO, NO, NO, NO, NO, NO, \
|
||||||
|
K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, NO, K28, NO, NO, NO, NO, \
|
||||||
|
K79,NO, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, NO, K7D, K52, NO, NO, NO, NO, \
|
||||||
|
K78,K7B,K7A,NO, K2C, NO, NO, K7E,K7F,NO, K7C, K50,K51,K4F, NO, NO, NO \
|
||||||
|
)
|
||||||
|
#else
|
||||||
|
/* actionmap */
|
||||||
|
#define KMAP( \
|
||||||
|
K13, K10, K11, K12, K14, K16, K17, K15, K1B, K18, K19, K1A, K1C, K1E, K1F, \
|
||||||
|
K03, K00, K01, K02, K04, K06, K07, K05, K0B, K08, K09, K0A, K0C, K0E, K0F, \
|
||||||
|
K43, K40, K41, K42, K44, K46, K47, K45, K4B, K48, K49, K4A, K4E, \
|
||||||
|
K33, K31, K32, K34, K36, K37, K35, K3B, K38, K39, K3A, K3C, K3D, \
|
||||||
|
K23, K21, K22, K27, K28, K2A, K2C, K2E, K2D, K2F \
|
||||||
|
) { \
|
||||||
|
{ AC_##K00, AC_##K01, AC_##K02, AC_##K03, AC_##K04, AC_##K05, AC_##K06, AC_##K07, \
|
||||||
|
AC_##K08, AC_##K09, AC_##K0A, AC_##K0B, AC_##K0C, AC_NO, AC_##K0E, AC_##K0F }, \
|
||||||
|
{ AC_##K10, AC_##K11, AC_##K12, AC_##K13, AC_##K14, AC_##K15, AC_##K16, AC_##K17, \
|
||||||
|
AC_##K18, AC_##K19, AC_##K1A, AC_##K1B, AC_##K1C, AC_NO, AC_##K1E, AC_##K1F }, \
|
||||||
|
{ AC_NO, AC_##K21, AC_##K22, AC_##K23, AC_NO, AC_NO, AC_NO, AC_##K27, \
|
||||||
|
AC_##K28, AC_NO, AC_##K2A, AC_NO, AC_##K2C, AC_##K2D, AC_##K2E, AC_##K2F }, \
|
||||||
|
{ AC_NO, AC_##K31, AC_##K32, AC_##K33, AC_##K34, AC_##K35, AC_##K36, AC_##K37, \
|
||||||
|
AC_##K38, AC_##K39, AC_##K3A, AC_##K3B, AC_##K3C, AC_##K3D, AC_NO, AC_NO }, \
|
||||||
|
{ AC_##K40, AC_##K41, AC_##K42, AC_##K43, AC_##K44, AC_##K45, AC_##K46, AC_##K47, \
|
||||||
|
AC_##K48, AC_##K49, AC_##K4A, AC_##K4B, AC_NO, AC_NO, AC_##K4E, AC_NO }, \
|
||||||
|
{ AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, \
|
||||||
|
AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO }, \
|
||||||
|
{ AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, \
|
||||||
|
AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO }, \
|
||||||
|
{ AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, \
|
||||||
|
AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO, AC_NO } \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
66
keyboard/fc660c/unimap.c
Normal file
66
keyboard/fc660c/unimap.c
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
#include "action.h"
|
||||||
|
#include "actionmap.h"
|
||||||
|
#include "hook.h"
|
||||||
|
#include "fc660c.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define AC_L3 ACTION_LAYER_MOMENTARY(3)
|
||||||
|
#define AC_L4 ACTION_LAYER_MOMENTARY(4)
|
||||||
|
#define AC_LS_2 ACTION_LAYER_MODS(2, MOD_LSFT)
|
||||||
|
#define AC_RS_2 ACTION_LAYER_MODS(2, MOD_RSFT)
|
||||||
|
#define AC_TGL1 ACTION_LAYER_TOGGLE(1)
|
||||||
|
|
||||||
|
// emulates FC660C default keymap
|
||||||
|
#ifdef KEYMAP_SECTION_ENABLE
|
||||||
|
const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
|
||||||
|
#else
|
||||||
|
const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = {
|
||||||
|
#endif
|
||||||
|
[0] = KMAP( \
|
||||||
|
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, \
|
||||||
|
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, \
|
||||||
|
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
|
||||||
|
LS_2,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RS_2,UP, \
|
||||||
|
LCTL,LGUI,LALT, SPC, RALT,RCTL,L3, LEFT,DOWN,RGHT \
|
||||||
|
),
|
||||||
|
[1] = KMAP( \
|
||||||
|
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, \
|
||||||
|
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, \
|
||||||
|
LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \
|
||||||
|
LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,UP, \
|
||||||
|
LCTL,LGUI,LALT, SPC, RALT,RCTL,L4, LEFT,DOWN,RGHT \
|
||||||
|
),
|
||||||
|
[2] = KMAP( \
|
||||||
|
GRV, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS, \
|
||||||
|
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS \
|
||||||
|
),
|
||||||
|
[3] = KMAP( \
|
||||||
|
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \
|
||||||
|
CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS, TRNS,PGUP, \
|
||||||
|
TRNS,TRNS,TRNS, TRNS, TRNS,APP, L3, HOME,PGDN,END \
|
||||||
|
),
|
||||||
|
[4] = KMAP( \
|
||||||
|
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \
|
||||||
|
CAPS,TGL1,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,TRNS,TRNS,HOME,PGUP,TRNS,TRNS, TRNS, \
|
||||||
|
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,END, PGDN,TRNS, TRNS,PGUP, \
|
||||||
|
TRNS,TRNS,TRNS, TRNS, TRNS,APP, L4, HOME,PGDN,END \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void hook_layer_change(uint32_t layer_state)
|
||||||
|
{
|
||||||
|
// lights LED on Insert when layer 1 is enabled
|
||||||
|
if (layer_state & (1L<<1)) {
|
||||||
|
PORTB &= ~(1<<5);
|
||||||
|
} else {
|
||||||
|
PORTB |= (1<<5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Reference in a new issue