commit
						2e0fd30185
					
				
					 10 changed files with 347 additions and 246 deletions
				
			
		| 
						 | 
				
			
			@ -17,7 +17,7 @@ SRC =	matrix.c \
 | 
			
		|||
ifdef KEYMAP
 | 
			
		||||
    SRC += keymap_$(KEYMAP).c
 | 
			
		||||
else
 | 
			
		||||
    SRC += keymap_plain.c
 | 
			
		||||
    SRC += keymap_default.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
CONFIG_H = config.h
 | 
			
		||||
| 
						 | 
				
			
			@ -25,10 +25,8 @@ 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 = at90usb162       # Teensy 1.0
 | 
			
		||||
MCU = atmega32u4       # Teensy 2.0
 | 
			
		||||
#MCU = at90usb646       # Teensy++ 1.0
 | 
			
		||||
#MCU = at90usb1286      # Teensy++ 2.0
 | 
			
		||||
MCU = atmega32u2       # TMK converter rev2
 | 
			
		||||
#MCU = atmega32u4       # TMK converter rev1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Processor frequency.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										98
									
								
								converter/m0110_usb/Makefile.teensy
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								converter/m0110_usb/Makefile.teensy
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,98 @@
 | 
			
		|||
# Target file name (without extension).
 | 
			
		||||
TARGET = m0110_lufa
 | 
			
		||||
 | 
			
		||||
# Directory common source filess exist
 | 
			
		||||
TOP_DIR = ../..
 | 
			
		||||
 | 
			
		||||
# Directory keyboard dependent files exist
 | 
			
		||||
TARGET_DIR = .
 | 
			
		||||
 | 
			
		||||
# keyboard dependent files
 | 
			
		||||
SRC =	matrix.c \
 | 
			
		||||
	led.c \
 | 
			
		||||
	keymap_common.c \
 | 
			
		||||
	m0110.c
 | 
			
		||||
 | 
			
		||||
# To use own keymap file run make like: make keymap=hasu
 | 
			
		||||
ifdef KEYMAP
 | 
			
		||||
    SRC += keymap_$(KEYMAP).c
 | 
			
		||||
else
 | 
			
		||||
    SRC += keymap_default.c
 | 
			
		||||
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 = at90usb162       # Teensy 1.0
 | 
			
		||||
MCU = atmega32u4       # Teensy 2.0
 | 
			
		||||
#MCU = at90usb646       # Teensy++ 1.0
 | 
			
		||||
#MCU = at90usb1286      # Teensy++ 2.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# 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
 | 
			
		||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Boot Section Size in bytes
 | 
			
		||||
#   Teensy halfKay   512
 | 
			
		||||
#   Atmel DFU loader 4096
 | 
			
		||||
#   LUFA bootloader  4096
 | 
			
		||||
OPT_DEFS += -DBOOTLOADER_SIZE=512
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
#KEYMAP_SECTION_ENABLE = yes	# fixed address keymap for keymap editor
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------- Programming Options --------------------------
 | 
			
		||||
PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Search Path
 | 
			
		||||
VPATH += $(TARGET_DIR)
 | 
			
		||||
VPATH += $(TOP_DIR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
include $(TOP_DIR)/protocol/lufa.mk
 | 
			
		||||
include $(TOP_DIR)/protocol.mk
 | 
			
		||||
include $(TOP_DIR)/common.mk
 | 
			
		||||
include $(TOP_DIR)/rules.mk
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
M0110/M0110A to USB keyboard converter
 | 
			
		||||
======================================
 | 
			
		||||
This firmware converts the protocol of Apple Macintosh keyboard **M0110**, **M0110A** and **M0120** into USB. Target of this project is USB AVR controller **ATmega32U4**. Using this converter you can revive these retro keyboards with modern computer.
 | 
			
		||||
This firmware converts the protocol of Apple Macintosh keyboard **M0110**, **M0110A** and **M0120** into USB. Target of this project is USB AVR controller like **ATmega32U2** and **ATmega32U4**. Using this converter you can revive these retro keyboards with modern computer.
 | 
			
		||||
 | 
			
		||||
Read README of top directory too.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,12 +20,13 @@ Update
 | 
			
		|||
- 2013/08: Change port for signals `PF` to `PD`
 | 
			
		||||
- 2013/09: Change port again, it uses inversely `PD0` for data and `PD1` for clock line now.
 | 
			
		||||
- 2014/06: Change keymaps
 | 
			
		||||
- 2015/03: Add support for "International"(ISO) keyboard(keymap_intl.c)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Building Hardware
 | 
			
		||||
-----------------
 | 
			
		||||
You need **4P4C** cable and **ATMega32U4** board like PJRC [Teensy]. Port of the MCU `PD1` is assigned to `CLOCK` line and `PD0` to `DATA` by default, you can change pin configuration with editing `config.h`.
 | 
			
		||||
You need [TMK converter] or AVR dev board like PJRC [Teensy]. Port of the MCU `PD1` is assigned to `CLOCK` line and `PD0` to `DATA` by default, you can change pin configuration with editing `config.h`.
 | 
			
		||||
 | 
			
		||||
[](http://i.imgur.com/4G2ZOeg.jpg)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -38,6 +39,7 @@ Close-up picture of handset cable. You can see one end of plug has reverse color
 | 
			
		|||
[](http://i.imgur.com/3S9P1mY.jpg?1)
 | 
			
		||||
 | 
			
		||||
[Teensy]: http://www.pjrc.com/teensy/
 | 
			
		||||
[TMK converter]: https://github.com/tmk/keyboard_converter
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Socket Pinout
 | 
			
		||||
| 
						 | 
				
			
			@ -53,17 +55,14 @@ You may need pull-up resistors on signal lines(`CLOCK`, `DATA`) in particular wh
 | 
			
		|||
 | 
			
		||||
Building Firmware
 | 
			
		||||
-----------------
 | 
			
		||||
To compile firmware you need AVR GCC. You can edit *Makefile* and *config.h* to change compile options and pin configuration.
 | 
			
		||||
To compile firmware you need AVR GCC. You can edit *Makefile* and *config.h* to change compile options and pin configuration. Also `KEYMAP` option can be used to select keymap.
 | 
			
		||||
 | 
			
		||||
    $ git clone git://github.com/tmk/tmk_keyboard.git (or download source)
 | 
			
		||||
    $ cd m0110_usb
 | 
			
		||||
    $ make clean
 | 
			
		||||
    $ make
 | 
			
		||||
    $ make -f Makefile clean
 | 
			
		||||
    $ make -f Makefile [KEYMAP={default|plain|intl|spacefn|hasu}]
 | 
			
		||||
 | 
			
		||||
To select keymap use `KEYMAP` option.
 | 
			
		||||
 | 
			
		||||
    $ make clean
 | 
			
		||||
    $ make KEYMAP={plain|spacefn|hasu}
 | 
			
		||||
Use `Makefile.teensy` instead for Teensy.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -71,13 +70,13 @@ Keymap
 | 
			
		|||
------
 | 
			
		||||
To create your own keymap copy existent keymap file to `keymap_name.c` and edit it. You can build it like this.
 | 
			
		||||
 | 
			
		||||
    $ make clean
 | 
			
		||||
    $ make KEYMAP=name
 | 
			
		||||
    $ make -f Makefile clean
 | 
			
		||||
    $ make -f Makefile KEYMAP=name
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Debug
 | 
			
		||||
-----
 | 
			
		||||
You can use [PJRC HID listen](http://www.pjrc.com/teensy/hid_listen.html) to see debug output. The converter has some functions for debug, press `<Command>+H` simultaneously to get help.
 | 
			
		||||
You can use [PJRC HID listen](http://www.pjrc.com/teensy/hid_listen.html) to see debug output. The converter has some functions for debug, press `<Magic>+H` simultaneously to get help.
 | 
			
		||||
 | 
			
		||||
- Command: `Shift+Option+Command`(`Shift+Alt+Gui` or `Shift+Alt+Control`)
 | 
			
		||||
- Magic combo: `Shift+Option+⌘` or `Shift+Option+Ctrl`(`Shift+Alt+Gui` or `Shift+Alt+Control`)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,223 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2011,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/>.
 | 
			
		||||
*/
 | 
			
		||||
/* M0110A Support was contributed by skagon@github */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
#include <avr/pgmspace.h>
 | 
			
		||||
#include "keycode.h"
 | 
			
		||||
#include "print.h"
 | 
			
		||||
#include "debug.h"
 | 
			
		||||
#include "util.h"
 | 
			
		||||
#include "keymap.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* 
 | 
			
		||||
 * The keymap works with both M0110 and M0110A keyboards. As you can see, the M0110A is a superset
 | 
			
		||||
 * of the M0110 keyboard, with only one exception: 'Enter' in M0110 does not exist
 | 
			
		||||
 * on the M0110A, but since it generates a unique scan code which is not used for some other key in
 | 
			
		||||
 * the M0110A, they are totally interchangeable.  In fact, the M0110A is functionally (almost)
 | 
			
		||||
 * identical to the combination of the M0110 along with the M0120 keypad. The only difference
 | 
			
		||||
 * (which is causing some problems as you will read below) is that the M0110+M0120 don't have
 | 
			
		||||
 * dedicated arrow keys, while the M0110A does. However, the M0120 did have arrow keys, which
 | 
			
		||||
 * doubled as the [comma], [/], [*] and [+] keys, when used with the [Shift] key. The M0110A has
 | 
			
		||||
 * substituted the [comma] key with the [=] key, however its scancode is the same.
 | 
			
		||||
 *
 | 
			
		||||
 * Physical layout:
 | 
			
		||||
 * M0110A
 | 
			
		||||
 * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
 * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Bcksp| |Clr|  =|  /|  *|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|   | |  7|  8|  9|  -|
 | 
			
		||||
 * |-----------------------------------------------------'   | |---------------|
 | 
			
		||||
 * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter | |  4|  5|  6|  +|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shft|Up | |  1|  2|  3|   |
 | 
			
		||||
 * |---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
 * |Opt  |Mac    |           Space           |  \|Lft|Rgt|Dn | |      0|  .|   |
 | 
			
		||||
 * `---------------------------------------------------------' `---------------'
 | 
			
		||||
 *
 | 
			
		||||
 * M0110                                                       M0120
 | 
			
		||||
 * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
 * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Clr|  -|  +|  *|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \| |  7|  8|  9|  /|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter | |  4|  5|  6|  ,|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift   | |  1|  2|  3|   |
 | 
			
		||||
 * `---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
 *      |Opt|Mac |         Space               |Ent |Opt|      |      0|  .|   |
 | 
			
		||||
 *      `-----------------------------------------------'      `---------------'
 | 
			
		||||
 * With Shift keys on M0120 work as curosor.(-:Left *:Right /:Up ,:Down)
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE: \ is located differently.
 | 
			
		||||
 * NOTE: Enter on M0110 is different from Enter on keypad(M0120 and M0110A).
 | 
			
		||||
 * NOTE: Left Shift and right Shift are logically same key.
 | 
			
		||||
 * NOTE: Left Option and right Option are logically same key.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Keymap definition Macro
 | 
			
		||||
 * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
 * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Clr|  =|  /|  *|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|   | |  7|  8|  9|  -|
 | 
			
		||||
 * |-----------------------------------------------------'   | |---------------|
 | 
			
		||||
 * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter | |  4|  5|  6|  +|
 | 
			
		||||
 * |---------------------------------------------------------| |---------------|
 | 
			
		||||
 * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shft|Up | |  1|  2|  3|   |
 | 
			
		||||
 * |---------------------------------------------------------| |-----------|Ent|
 | 
			
		||||
 * |Opt  |Mac    |         Space         |Ent|  \|Lft|Rgt|Dn | |      0|  .|   |
 | 
			
		||||
 * `---------------------------------------------------------' `---------------'
 | 
			
		||||
 * NOTE: Ent between Space and \ means Enter on M0110.
 | 
			
		||||
 */
 | 
			
		||||
#define KEYMAP( \
 | 
			
		||||
    K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33,  K47,K68,K6D,K62, \
 | 
			
		||||
    K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,      K59,K5B,K5C,K4E, \
 | 
			
		||||
    K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,    K24,  K56,K57,K58,K66, \
 | 
			
		||||
    K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C,        K4D,  K53,K54,K55,K4C, \
 | 
			
		||||
    K3A,K37,            K31,            K34,K2A,K46,K42,K48,  K52,    K41      \
 | 
			
		||||
) { \
 | 
			
		||||
    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
 | 
			
		||||
    { KC_##K08, KC_##K09, KC_NO,    KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
 | 
			
		||||
    { 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_##K1F }, \
 | 
			
		||||
    { 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_##K2D, KC_##K2E, KC_##K2F }, \
 | 
			
		||||
    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_NO,    KC_NO,    KC_##K37 }, \
 | 
			
		||||
    { KC_##K38, KC_##K39, KC_##K3A, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \
 | 
			
		||||
    { KC_NO,    KC_##K41, KC_##K42, KC_NO,    KC_NO,    KC_NO,    KC_##K46, KC_##K47 }, \
 | 
			
		||||
    { KC_##K48, KC_NO,    KC_NO,    KC_NO,    KC_##K4C, KC_##K4D, KC_##K4E, KC_NO    }, \
 | 
			
		||||
    { KC_NO,    KC_NO,    KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
 | 
			
		||||
    { KC_##K58, KC_##K59, KC_NO,    KC_##K5B, KC_##K5C, KC_NO,    KC_NO,    KC_NO    }, \
 | 
			
		||||
    { KC_NO,    KC_NO,    KC_##K62, KC_NO,    KC_NO,    KC_NO,    KC_##K66, KC_NO    }, \
 | 
			
		||||
    { KC_##K68, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K6D, KC_NO,    KC_NO    }, \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef KEYMAP_SECTION_ENABLE
 | 
			
		||||
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
 | 
			
		||||
#else
 | 
			
		||||
static const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
 | 
			
		||||
#endif
 | 
			
		||||
    /* Default:
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Clr|  =|  /|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|   | |  7|  8|  9|  -|
 | 
			
		||||
     * |-----------------------------------------------------'   | |---------------|
 | 
			
		||||
     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter | |  4|  5|  6|  +|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shft|Up | |  1|  2|  3|   |
 | 
			
		||||
     * |---------------------------------------------------------| |-----------|Ent|
 | 
			
		||||
     * |Ctl  |Gui    |         Space         |Alt|  \|Lft|Rgt|Dn | |      0|  .|   |
 | 
			
		||||
     * `---------------------------------------------------------' `---------------'
 | 
			
		||||
     */
 | 
			
		||||
    [0] = KEYMAP(
 | 
			
		||||
    GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,    CLR, EQL, PSLS,PAST,
 | 
			
		||||
    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,         P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCAP,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     FN15,    P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          UP,      P1,  P2,  P3,  PENT,
 | 
			
		||||
    LCTL,LGUI,               FN16,               LALT,FN31,LEFT,RGHT,DOWN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
    /* Cursor Layer(WASD, IJKL)
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk|  =|  /|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Caps |Hom| Up|PgU|   |   |   |   |Psc|Slk|Pau|Up |Ins|   | |  7|  8|  9|  -|
 | 
			
		||||
     * |-----------------------------------------------------'   | |---------------|
 | 
			
		||||
     * |Caps  |Lef|Dow|Rig|   |   |   |   |Hom|PgU|Lef|Rig|Enter | |  4|  5|  6|  +|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shift   |End|   |PgD|   |   |   |   |End|PgD|Dow|Shif|PgU| |  1|  2|  3|   |
 | 
			
		||||
     * |---------------------------------------------------------| |-----------|Ent|
 | 
			
		||||
     * |Ctl  |Gui    |         Space        |Alt |  \|Hom|End|PgD| |      0|  .|   |
 | 
			
		||||
     * `---------------------------------------------------------' `---------------'
 | 
			
		||||
     */
 | 
			
		||||
    [3] = KEYMAP(
 | 
			
		||||
    ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,     NLCK,EQL, PSLS,PAST,
 | 
			
		||||
    CAPS,HOME,UP,  PGUP,NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  INS,          P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCAP,LEFT,DOWN,RGHT,NO,  NO,  NO,  NO,  HOME,PGUP,LEFT,RGHT,     FN15,    P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,END, NO,  PGDN,NO,  NO,  NO,  NO,  END, PGDN,DOWN,          PGUP,    P1,  P2,  P3,  PENT,
 | 
			
		||||
    LCTL,LGUI,               FN16,               LALT,FN31,HOME,END, PGDN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
    [4] = KEYMAP(
 | 
			
		||||
    ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,     NLCK,EQL, PSLS,PAST,
 | 
			
		||||
    CAPS,HOME,UP,  PGUP,NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  INS,          P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCAP,LEFT,DOWN,RGHT,NO,  NO,  NO,  NO,  HOME,PGUP,LEFT,RGHT,     FN15,    P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,END, NO,  PGDN,NO,  NO,  NO,  NO,  END, PGDN,DOWN,          PGUP,    P1,  P2,  P3,  PENT,
 | 
			
		||||
    LCTL,LGUI,               FN16,               LALT,FN31,HOME,END, PGDN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
    [7] = {},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Fn action definition
 | 
			
		||||
 */
 | 
			
		||||
#ifdef KEYMAP_SECTION_ENABLE
 | 
			
		||||
const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
 | 
			
		||||
#else
 | 
			
		||||
static const uint16_t fn_actions[] PROGMEM = {
 | 
			
		||||
#endif
 | 
			
		||||
    [0]  = ACTION_LAYER_MOMENTARY(1),
 | 
			
		||||
    [1]  = ACTION_LAYER_MOMENTARY(2),
 | 
			
		||||
    [2]  = ACTION_LAYER_MOMENTARY(3),
 | 
			
		||||
    [3]  = ACTION_LAYER_MOMENTARY(4),
 | 
			
		||||
    [4]  = ACTION_LAYER_MOMENTARY(5),
 | 
			
		||||
    [5]  = ACTION_LAYER_MOMENTARY(6),
 | 
			
		||||
    [6]  = ACTION_LAYER_MOMENTARY(7),
 | 
			
		||||
    [7]  = ACTION_LAYER_TOGGLE(1),
 | 
			
		||||
    [8]  = ACTION_LAYER_TOGGLE(2),
 | 
			
		||||
    [9]  = ACTION_LAYER_TOGGLE(3),
 | 
			
		||||
    [10] = ACTION_LAYER_TAP_TOGGLE(1),
 | 
			
		||||
    [11] = ACTION_LAYER_TAP_TOGGLE(2),
 | 
			
		||||
    [12] = ACTION_LAYER_TAP_TOGGLE(3),
 | 
			
		||||
    [13] = ACTION_LAYER_TAP_KEY(1, KC_F),
 | 
			
		||||
    [14] = ACTION_LAYER_TAP_KEY(2, KC_J),
 | 
			
		||||
    [15] = ACTION_LAYER_TAP_KEY(3, KC_ENTER),
 | 
			
		||||
    [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
 | 
			
		||||
    [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
 | 
			
		||||
    [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
 | 
			
		||||
    [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
 | 
			
		||||
    [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
 | 
			
		||||
    [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
 | 
			
		||||
    [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
 | 
			
		||||
    [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
 | 
			
		||||
    [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
 | 
			
		||||
    [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
 | 
			
		||||
    [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
 | 
			
		||||
    [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
 | 
			
		||||
    [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
 | 
			
		||||
    [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
 | 
			
		||||
    [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRAVE),
 | 
			
		||||
    [31] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_BSLASH),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* 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 index to action */
 | 
			
		||||
action_t keymap_fn_to_action(uint8_t keycode)
 | 
			
		||||
{
 | 
			
		||||
    action_t action;
 | 
			
		||||
    action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
 | 
			
		||||
    return action;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -105,3 +105,39 @@ extern const uint16_t fn_actions[];
 | 
			
		|||
    { KC_NO,    KC_NO,    KC_##K62, KC_NO,    KC_NO,    KC_NO,    KC_##K66, KC_NO    }, \
 | 
			
		||||
    { KC_##K68, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K6D, KC_NO,    KC_NO    }, \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* International keyboard
 | 
			
		||||
 *  ,---------------------------------------------------------.
 | 
			
		||||
 *  | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18|   33|
 | 
			
		||||
 *  |---------------------------------------------------------|
 | 
			
		||||
 *  |   30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A|
 | 
			
		||||
 *  |------------------------------------------------------,  |
 | 
			
		||||
 *  |    39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24|  |
 | 
			
		||||
 *  |---------------------------------------------------------|
 | 
			
		||||
 *  |  38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 0A|      38|
 | 
			
		||||
 *  `---------------------------------------------------------'
 | 
			
		||||
 *       | 3A|  37|             34              |   31| 3A|
 | 
			
		||||
 *       `------------------------------------------------'
 | 
			
		||||
 */
 | 
			
		||||
#define KEYMAP_INTL( \
 | 
			
		||||
    K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33,  K47,K68,K6D,K62, \
 | 
			
		||||
    K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A,  K59,K5B,K5C,K4E, \
 | 
			
		||||
    K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,K24,      K56,K57,K58,K66, \
 | 
			
		||||
    K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C,K0A,    K4D,  K53,K54,K55,K4C, \
 | 
			
		||||
    K3A,K37,            K34,            K31,    K46,K42,K48,  K52,    K41      \
 | 
			
		||||
) { \
 | 
			
		||||
    { 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_##K0D, KC_##K0E, KC_##K0F }, \
 | 
			
		||||
    { 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_##K1F }, \
 | 
			
		||||
    { 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_##K2D, KC_##K2E, KC_##K2F }, \
 | 
			
		||||
    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_NO,    KC_NO,    KC_##K37 }, \
 | 
			
		||||
    { KC_##K38, KC_##K39, KC_##K3A, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO    }, \
 | 
			
		||||
    { KC_NO,    KC_##K41, KC_##K42, KC_NO,    KC_NO,    KC_NO,    KC_##K46, KC_##K47 }, \
 | 
			
		||||
    { KC_##K48, KC_NO,    KC_NO,    KC_NO,    KC_##K4C, KC_##K4D, KC_##K4E, KC_NO    }, \
 | 
			
		||||
    { KC_NO,    KC_NO,    KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
 | 
			
		||||
    { KC_##K58, KC_##K59, KC_NO,    KC_##K5B, KC_##K5C, KC_NO,    KC_NO,    KC_NO    }, \
 | 
			
		||||
    { KC_NO,    KC_NO,    KC_##K62, KC_NO,    KC_NO,    KC_NO,    KC_##K66, KC_NO    }, \
 | 
			
		||||
    { KC_##K68, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K6D, KC_NO,    KC_NO    }, \
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										85
									
								
								converter/m0110_usb/keymap_default.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								converter/m0110_usb/keymap_default.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2011,2012,2015 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 <stdint.h>
 | 
			
		||||
#include "keycode.h"
 | 
			
		||||
#include "keymap_common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
 | 
			
		||||
    /* Default:
 | 
			
		||||
     * M0110                                                       M0120
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Nlk|  -|  +|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \| |  7|  8|  9|  /|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return| |  4|  5|  6|  ,|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift   | |  1|  2|  3|   |
 | 
			
		||||
     * `---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
     *      |Opt|Mac |         Space               |Fn  |Opt|      |      0|  .|   |
 | 
			
		||||
     *      `-----------------------------------------------'      `---------------'
 | 
			
		||||
     * M0110A
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Nlk|  =|  /|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|   | |  7|  8|  9|  -|
 | 
			
		||||
     * |-----------------------------------------------------'   | |---------------|
 | 
			
		||||
     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return| |  4|  5|  6|  +|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shft|Up | |  1|  2|  3|   |
 | 
			
		||||
     * |---------------------------------------------------------| |-----------|Ent|
 | 
			
		||||
     * |Opt  |Mac    |         Space             |  \|Lft|Rgt|Dn | |      0|  .|   |
 | 
			
		||||
     * `---------------------------------------------------------' `---------------'
 | 
			
		||||
     */
 | 
			
		||||
    [0] = KEYMAP(
 | 
			
		||||
    GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,    NLCK,EQL, PSLS,PAST,
 | 
			
		||||
    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,         P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,     P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          UP,      P1,  P2,  P3,  PENT,
 | 
			
		||||
    LALT,LGUI,               SPC,                FN0, BSLS,LEFT,RGHT,DOWN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
    /* Cursor Layer
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk|  -|  +|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Caps |Hom| Up|PgU|   |   |   |   |Psc|Slk|Pau|Up |   |INS| |  7|  8|  9|  /|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Ctrl  |Lef|Dow|Rig|   |   |   |   |Hom|PgU|Lef|Rig|Return| |  4|  5|  6|  ,|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shift   |End|   |PgD|   |   |   |   |End|PgD|Dow|Shift   | |  1|  2|  3|   |
 | 
			
		||||
     * `---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
     *      |Opt|Mac |         Space               |Fn  |Opt|      |      0|  .|   |
 | 
			
		||||
     *      `-----------------------------------------------'      `---------------'
 | 
			
		||||
     */
 | 
			
		||||
    [1] = KEYMAP(
 | 
			
		||||
    ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,     NLCK,EQL, PSLS,PAST,
 | 
			
		||||
    CAPS,HOME,UP,  PGUP,NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,           P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCTL,LEFT,DOWN,RGHT,NO,  NO,  NO,  NO,  HOME,PGUP,LEFT,RGHT,     ENT,     P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,END, NO,  PGDN,NO,  NO,  NO,  NO,  END, PGDN,DOWN,          PGUP,    P1,  P2,  P3,  PENT,
 | 
			
		||||
    LALT,LGUI,               SPC,                FN0, INS, HOME,END, PGDN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Fn action definition
 | 
			
		||||
 */
 | 
			
		||||
const uint16_t fn_actions[] PROGMEM = {
 | 
			
		||||
    [0]  = ACTION_LAYER_MOMENTARY(1),
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										85
									
								
								converter/m0110_usb/keymap_intl.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								converter/m0110_usb/keymap_intl.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2015 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 <stdint.h>
 | 
			
		||||
#include "keycode.h"
 | 
			
		||||
#include "keymap_common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
 | 
			
		||||
    /* International keyboard
 | 
			
		||||
     * M0110                                                       M0120
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Nlk|  -|  +|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Ret| |  7|  8|  9|  /|
 | 
			
		||||
     * |------------------------------------------------------,  | |---------------|
 | 
			
		||||
     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  \|  | |  4|  5|  6|  ,|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shif|  <|  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift   | |  1|  2|  3|   |
 | 
			
		||||
     * `---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
     *      |Opt|Mac |         Space               |Fn  |Opt|      |      0|  .|   |
 | 
			
		||||
     *      `-----------------------------------------------'      `---------------'
 | 
			
		||||
     * M0110A(not existent?)
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backs| |Nlk|  =|  /|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Ret| |  7|  8|  9|  -|
 | 
			
		||||
     * |------------------------------------------------------,  | |---------------|
 | 
			
		||||
     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  \|  | |  4|  5|  6|  +|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shif|  <|  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shft|Up | |  1|  2|  3|   |
 | 
			
		||||
     * |---------------------------------------------------------| |-----------|Ent|
 | 
			
		||||
     * |Opt  |Mac    |         Space             |  \|Lft|Rgt|Dn | |      0|  .|   |
 | 
			
		||||
     * `---------------------------------------------------------' `---------------'
 | 
			
		||||
     */
 | 
			
		||||
    [0] = KEYMAP_INTL(
 | 
			
		||||
    GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC,    NLCK,EQL, PSLS,PAST,
 | 
			
		||||
    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,ENT,     P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,BSLS,         P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     UP,      P1,  P2,  P3,  PENT,
 | 
			
		||||
    LALT,LGUI,               SPC,                FN0,      LEFT,RGHT,DOWN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
    /* Cursor Layer
 | 
			
		||||
     * ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk|  -|  +|  *|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Caps |Hom| Up|PgU|   |   |   |   |Psc|Slk|Pau|Up |   |Ret| |  7|  8|  9|  /|
 | 
			
		||||
     * |------------------------------------------------------,  | |---------------|
 | 
			
		||||
     * |Ctrl  |Lef|Dow|Rig|   |   |   |   |Hom|PgU|Lef|Rig|Ins|  | |  4|  5|  6|  ,|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shif|  <|End|   |PgD|   |   |   |   |End|PgD|Dow|Shift   | |  1|  2|  3|   |
 | 
			
		||||
     * `---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
     *      |Opt|Mac |         Space               |Fn  |Opt|      |      0|  .|   |
 | 
			
		||||
     *      `-----------------------------------------------'      `---------------'
 | 
			
		||||
     */
 | 
			
		||||
    [1] = KEYMAP_INTL(
 | 
			
		||||
    ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,     NLCK,EQL, PSLS,PAST,
 | 
			
		||||
    CAPS,HOME,UP,  PGUP,NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,  ENT,     P7,  P8,  P9,  PMNS,
 | 
			
		||||
    LCTL,LEFT,DOWN,RGHT,NO,  NO,  NO,  NO,  HOME,PGUP,LEFT,RGHT,INS,          P4,  P5,  P6,  PPLS,
 | 
			
		||||
    LSFT,NO,  END, NO,  PGDN,NO,  NO,  NO,  NO,  END, PGDN,DOWN,     PGUP,    P1,  P2,  P3,  PENT,
 | 
			
		||||
    LALT,LGUI,               SPC,                FN0,      HOME,END, PGDN,    P0,       PDOT
 | 
			
		||||
    ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Fn action definition
 | 
			
		||||
 */
 | 
			
		||||
const uint16_t fn_actions[] PROGMEM = {
 | 
			
		||||
    [0]  = ACTION_LAYER_MOMENTARY(1),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \| |  7|  8|  9|  /|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return| |  4|  5|  6|  ,|
 | 
			
		||||
     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return| |  4|  5|  6|  ,|
 | 
			
		||||
     * |---------------------------------------------------------| |---------------|
 | 
			
		||||
     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift   | |  1|  2|  3|   |
 | 
			
		||||
     * `---------------------------------------------------------' |-----------|Ent|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,10 +15,18 @@ 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 "stdint.h"
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <avr/io.h>
 | 
			
		||||
#include "led.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void led_set(uint8_t usb_led)
 | 
			
		||||
{
 | 
			
		||||
    if (usb_led &  (1<<USB_LED_CAPS_LOCK)) {
 | 
			
		||||
        DDRD |= (1<<6);
 | 
			
		||||
        PORTD |= (1<<6);
 | 
			
		||||
    } else {
 | 
			
		||||
        DDRD |= (1<<6);
 | 
			
		||||
        PORTD &= ~(1<<6);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -502,8 +502,10 @@ MODEL NUMBER:
 | 
			
		|||
 | 
			
		||||
Scan Code
 | 
			
		||||
---------
 | 
			
		||||
    m0110_recv_key() function returns following scan codes instead of raw key events.
 | 
			
		||||
    Scan codes are 1 byte long and MSB(bit7) is set when key is released. 
 | 
			
		||||
    m0110_recv_key() function returns following scan codes instead of M0110 raw codes.
 | 
			
		||||
    Scan codes are 1 byte size and MSB(bit7) is set when key is released.
 | 
			
		||||
 | 
			
		||||
        scancode = ((raw&0x80) | ((raw&0x7F)>>1))
 | 
			
		||||
 | 
			
		||||
    M0110                                                          M0120
 | 
			
		||||
    ,---------------------------------------------------------.    ,---------------.
 | 
			
		||||
| 
						 | 
				
			
			@ -529,6 +531,19 @@ Scan Code
 | 
			
		|||
         | 3A|  37|             31              |   34| 3A|        |     52| 41|   |
 | 
			
		||||
         `------------------------------------------------'        `---------------'
 | 
			
		||||
 | 
			
		||||
    International keyboard(See page 22 of "Technical Info for 128K/512K")
 | 
			
		||||
    ,---------------------------------------------------------.
 | 
			
		||||
    | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18|   33|
 | 
			
		||||
    |---------------------------------------------------------|
 | 
			
		||||
    |   30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A|
 | 
			
		||||
    |------------------------------------------------------   |
 | 
			
		||||
    |    39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24|  |
 | 
			
		||||
    |---------------------------------------------------------|
 | 
			
		||||
    |  38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 0A|      38|
 | 
			
		||||
    `---------------------------------------------------------'
 | 
			
		||||
         | 3A|  37|             34              |   31| 3A|
 | 
			
		||||
         `------------------------------------------------'
 | 
			
		||||
 | 
			
		||||
    M0110A
 | 
			
		||||
    ,---------------------------------------------------------. ,---------------.
 | 
			
		||||
    |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Bcksp| |Clr|  =|  /|  *|
 | 
			
		||||
| 
						 | 
				
			
			@ -568,7 +583,7 @@ Connector:
 | 
			
		|||
Signaling:
 | 
			
		||||
    http://www.kbdbabel.org/signaling/kbd_signaling_mac.png
 | 
			
		||||
    http://typematic.blog.shinobi.jp/Entry/14/
 | 
			
		||||
Scan Codes:
 | 
			
		||||
M0110 raw scan codes:
 | 
			
		||||
    Page 22 of Tech Info for 128K/512K
 | 
			
		||||
    Page 07 of Tech Info for Plus
 | 
			
		||||
    http://m0115.web.fc2.com/m0110.jpg
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue