commit
						2e0fd30185
					
				
					 10 changed files with 347 additions and 246 deletions
				
			
		| 
						 | 
					@ -17,7 +17,7 @@ SRC =	matrix.c \
 | 
				
			||||||
ifdef KEYMAP
 | 
					ifdef KEYMAP
 | 
				
			||||||
    SRC += keymap_$(KEYMAP).c
 | 
					    SRC += keymap_$(KEYMAP).c
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
    SRC += keymap_plain.c
 | 
					    SRC += keymap_default.c
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CONFIG_H = config.h
 | 
					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
 | 
					# 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
 | 
					# type "make clean" after changing this, so all files will be rebuilt
 | 
				
			||||||
#MCU = at90usb162       # Teensy 1.0
 | 
					MCU = atmega32u2       # TMK converter rev2
 | 
				
			||||||
MCU = atmega32u4       # Teensy 2.0
 | 
					#MCU = atmega32u4       # TMK converter rev1
 | 
				
			||||||
#MCU = at90usb646       # Teensy++ 1.0
 | 
					 | 
				
			||||||
#MCU = at90usb1286      # Teensy++ 2.0
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Processor frequency.
 | 
					# 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
 | 
					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.
 | 
					Read README of top directory too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,12 +20,13 @@ Update
 | 
				
			||||||
- 2013/08: Change port for signals `PF` to `PD`
 | 
					- 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.
 | 
					- 2013/09: Change port again, it uses inversely `PD0` for data and `PD1` for clock line now.
 | 
				
			||||||
- 2014/06: Change keymaps
 | 
					- 2014/06: Change keymaps
 | 
				
			||||||
 | 
					- 2015/03: Add support for "International"(ISO) keyboard(keymap_intl.c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Building Hardware
 | 
					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)
 | 
					[](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)
 | 
					[](http://i.imgur.com/3S9P1mY.jpg?1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Teensy]: http://www.pjrc.com/teensy/
 | 
					[Teensy]: http://www.pjrc.com/teensy/
 | 
				
			||||||
 | 
					[TMK converter]: https://github.com/tmk/keyboard_converter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Socket Pinout
 | 
					### Socket Pinout
 | 
				
			||||||
| 
						 | 
					@ -53,17 +55,14 @@ You may need pull-up resistors on signal lines(`CLOCK`, `DATA`) in particular wh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Building Firmware
 | 
					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)
 | 
					    $ git clone git://github.com/tmk/tmk_keyboard.git (or download source)
 | 
				
			||||||
    $ cd m0110_usb
 | 
					    $ cd m0110_usb
 | 
				
			||||||
    $ make clean
 | 
					    $ make -f Makefile clean
 | 
				
			||||||
    $ make
 | 
					    $ make -f Makefile [KEYMAP={default|plain|intl|spacefn|hasu}]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To select keymap use `KEYMAP` option.
 | 
					Use `Makefile.teensy` instead for Teensy.
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $ make clean
 | 
					 | 
				
			||||||
    $ make KEYMAP={plain|spacefn|hasu}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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.
 | 
					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 -f Makefile clean
 | 
				
			||||||
    $ make KEYMAP=name
 | 
					    $ make -f Makefile KEYMAP=name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Debug
 | 
					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_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    }, \
 | 
					    { 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|  /|
 | 
					     * |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|   |
 | 
					     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift   | |  1|  2|  3|   |
 | 
				
			||||||
     * `---------------------------------------------------------' |-----------|Ent|
 | 
					     * `---------------------------------------------------------' |-----------|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/>.
 | 
					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"
 | 
					#include "led.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void led_set(uint8_t usb_led)
 | 
					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
 | 
					Scan Code
 | 
				
			||||||
---------
 | 
					---------
 | 
				
			||||||
    m0110_recv_key() function returns following scan codes instead of raw key events.
 | 
					    m0110_recv_key() function returns following scan codes instead of M0110 raw codes.
 | 
				
			||||||
    Scan codes are 1 byte long and MSB(bit7) is set when key is released. 
 | 
					    Scan codes are 1 byte size and MSB(bit7) is set when key is released.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        scancode = ((raw&0x80) | ((raw&0x7F)>>1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    M0110                                                          M0120
 | 
					    M0110                                                          M0120
 | 
				
			||||||
    ,---------------------------------------------------------.    ,---------------.
 | 
					    ,---------------------------------------------------------.    ,---------------.
 | 
				
			||||||
| 
						 | 
					@ -529,6 +531,19 @@ Scan Code
 | 
				
			||||||
         | 3A|  37|             31              |   34| 3A|        |     52| 41|   |
 | 
					         | 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
 | 
					    M0110A
 | 
				
			||||||
    ,---------------------------------------------------------. ,---------------.
 | 
					    ,---------------------------------------------------------. ,---------------.
 | 
				
			||||||
    |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Bcksp| |Clr|  =|  /|  *|
 | 
					    |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Bcksp| |Clr|  =|  /|  *|
 | 
				
			||||||
| 
						 | 
					@ -568,7 +583,7 @@ Connector:
 | 
				
			||||||
Signaling:
 | 
					Signaling:
 | 
				
			||||||
    http://www.kbdbabel.org/signaling/kbd_signaling_mac.png
 | 
					    http://www.kbdbabel.org/signaling/kbd_signaling_mac.png
 | 
				
			||||||
    http://typematic.blog.shinobi.jp/Entry/14/
 | 
					    http://typematic.blog.shinobi.jp/Entry/14/
 | 
				
			||||||
Scan Codes:
 | 
					M0110 raw scan codes:
 | 
				
			||||||
    Page 22 of Tech Info for 128K/512K
 | 
					    Page 22 of Tech Info for 128K/512K
 | 
				
			||||||
    Page 07 of Tech Info for Plus
 | 
					    Page 07 of Tech Info for Plus
 | 
				
			||||||
    http://m0115.web.fc2.com/m0110.jpg
 | 
					    http://m0115.web.fc2.com/m0110.jpg
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue