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
	
	 Jack Humbert
						Jack Humbert