adb_usb: Add unimap_plain
authortmk <hasu@tmk-kbd.com>
Wed, 29 Jun 2016 11:56:45 +0000 (20:56 +0900)
committertmk <hasu@tmk-kbd.com>
Mon, 29 Aug 2016 04:54:44 +0000 (13:54 +0900)
converter/adb_usb/Makefile
converter/adb_usb/Makefile.unimap [new file with mode: 0644]
converter/adb_usb/unimap_common.h [new file with mode: 0644]
converter/adb_usb/unimap_plain.c [new file with mode: 0644]

index 21fc26b526201e777240175ac81e62e44fc4e169..b2bda94466f26173a4874a6559d4f6c5d4aede3e 100644 (file)
@@ -1,43 +1,3 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device.
-#                Please customize your programmer settings(PROGRAM_CMD)
-#
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-# make dfu = Download the hex file to the device, using dfu-programmer (must
-#            have dfu-programmer installed).
-#
-# make flip = Download the hex file to the device, using Atmel FLIP (must
-#             have Atmel FLIP installed).
-#
-# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
-#               (must have dfu-programmer installed).
-#
-# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
-#                (must have Atmel FLIP installed).
-#
-# make debug = Start either simulavr or avarice as specified for debugging, 
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
 # Target file name (without extension).
 TARGET = adb_usb_lufa
 
@@ -52,12 +12,6 @@ SRC =        matrix.c \
        led.c \
        adb.c
 
-ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
-else
-    SRC := keymap_plain.c $(SRC)
-endif
-
 CONFIG_H = config.h
 
 
@@ -124,6 +78,9 @@ COMMAND_ENABLE = yes    # Commands for debug and configuration
 #SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
 #NKRO_ENABLE = yes     # USB Nkey Rollover
 ADB_MOUSE_ENABLE = yes
+#UNIMAP_ENABLE = yes
+#ACTIONMAP_ENABLE = yes         # Use 16bit actionmap instead of 8bit keymap
+#KEYMAP_SECTION_ENABLE = yes   # fixed address keymap for keymap editor
 
 # ADB Mice need acceleration for todays much bigger screens. 
 OPT_DEFS += -DADB_MOUSE_MAXACC=8
@@ -132,6 +89,26 @@ OPT_DEFS += -DADB_MOUSE_MAXACC=8
 # Optimize size but this may cause error "relocation truncated to fit"
 #EXTRALDFLAGS = -Wl,--relax
 
+
+#
+# Keymap file
+#
+ifdef UNIMAP_ENABLE
+    KEYMAP_FILE = unimap
+else
+    ifdef ACTIONMAP_ENABLE
+       KEYMAP_FILE = actionmap
+    else
+       KEYMAP_FILE = keymap
+    endif
+endif
+ifdef KEYMAP
+    SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC)
+else
+    SRC := $(KEYMAP_FILE)_plain.c $(SRC)
+endif
+
+
 # Search Path
 VPATH += $(TARGET_DIR)
 VPATH += $(TMK_DIR)
diff --git a/converter/adb_usb/Makefile.unimap b/converter/adb_usb/Makefile.unimap
new file mode 100644 (file)
index 0000000..8991e1c
--- /dev/null
@@ -0,0 +1,3 @@
+UNIMAP_ENABLE = yes
+KEYMAP_SECTION_ENABLE = yes
+include Makefile
diff --git a/converter/adb_usb/unimap_common.h b/converter/adb_usb/unimap_common.h
new file mode 100644 (file)
index 0000000..fb9b085
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+Copyright 2016 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef UNIMAP_COMMON_H
+#define UNIMAP_COMMON_H
+
+#include <stdint.h>
+#include <avr/pgmspace.h>
+#include "unimap.h"
+
+
+/* Apple Extended Keyboard Common layout: ANSI+ISO
+ * ,---.   .---------------. ,---------------. ,---------------. ,-----------. ,---------------.
+ * |Esc|   |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|F24|
+ * `---'   `---------------' `---------------' `---------------' `-----------' `---------------'
+ * ,-----------------------------------------------------------. ,-----------. ,---------------.
+ * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backspa| |Ins|Hom|PgU| |NmL|  =|  /|  *|
+ * |-----------------------------------------------------------| |-----------| |---------------|
+ * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| |Del|End|PgD| |  7|  8|  9|  -|
+ * |-----------------------------------------------------------| `-----------' |---------------|
+ * |CapsLo|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |               |  4|  5|  6|  +|
+ * |-----------------------------------------------------------|     ,---.     |---------------|
+ * |Shif|\  |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift     |     |Up |     |  1|  2|  3|   |
+ * |-----------------------------------------------------------| ,-----------. |-----------|Ent|
+ * |Ctrl |Alt |Gui |         Space           |Gui  |Alt |Ctrl  | |Lef|Dow|Rig| |      0|  .|   |
+ * `-----------------------------------------------------------' `-----------' `---------------'
+ * Command      = Gui
+ * Option       = Alt
+ * Power key    = F24
+ */
+// http://lxr.free-electrons.com/source/drivers/macintosh/adbhid.c
+// http://opensource.apple.com//source/IOHIDFamily/IOHIDFamily-701.20.10/IOHIDFamily/Cosmo_USB2ADB.c
+// http://m0115.web.fc2.com/m0115.jpg
+const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
+        //  Position(unimap)        ADB scan code(matrix)
+        //  ---------------------------------------------
+        {
+            UNIMAP_A,               // 0x00
+            UNIMAP_S,               // 0x01
+            UNIMAP_D,               // 0x02
+            UNIMAP_F,               // 0x03
+            UNIMAP_H,               // 0x04
+            UNIMAP_G,               // 0x05
+            UNIMAP_Z,               // 0x06
+            UNIMAP_X,               // 0x07
+        },
+        {
+            UNIMAP_C,               // 0x08
+            UNIMAP_V,               // 0x09
+            UNIMAP_NONUS_BSLASH,    // 0x0A
+            UNIMAP_B,               // 0x0B
+            UNIMAP_Q,               // 0x0C
+            UNIMAP_W,               // 0x0D
+            UNIMAP_E,               // 0x0E
+            UNIMAP_R,               // 0x0F
+        },
+        {
+            UNIMAP_Y,               // 0x10
+            UNIMAP_T,               // 0x11
+            UNIMAP_1,               // 0x12
+            UNIMAP_2,               // 0x13
+            UNIMAP_3,               // 0x14
+            UNIMAP_4,               // 0x15
+            UNIMAP_6,               // 0x16
+            UNIMAP_5,               // 0x17
+        },
+        {
+            UNIMAP_EQUAL,           // 0x18
+            UNIMAP_9,               // 0x19
+            UNIMAP_7,               // 0x1A
+            UNIMAP_MINUS,           // 0x1B
+            UNIMAP_8,               // 0x1C
+            UNIMAP_0,               // 0x1D
+            UNIMAP_RBRACKET,        // 0x1E
+            UNIMAP_O,               // 0x1F
+        },
+        {
+            UNIMAP_U,               // 0x20
+            UNIMAP_LBRACKET,        // 0x21
+            UNIMAP_I,               // 0x22
+            UNIMAP_P,               // 0x23
+            UNIMAP_ENTER,           // 0x24
+            UNIMAP_L,               // 0x25
+            UNIMAP_J,               // 0x26
+            UNIMAP_QUOTE,           // 0x27
+        },
+        {
+            UNIMAP_K,               // 0x28
+            UNIMAP_SCOLON,          // 0x29
+            UNIMAP_BSLASH,          // 0x2A
+            UNIMAP_COMMA,           // 0x2B
+            UNIMAP_SLASH,           // 0x2C
+            UNIMAP_N,               // 0x2D
+            UNIMAP_M,               // 0x2E
+            UNIMAP_DOT,             // 0x2F
+        },
+        {
+            UNIMAP_TAB,             // 0x30
+            UNIMAP_SPACE,           // 0x31
+            UNIMAP_GRAVE,           // 0x32
+            UNIMAP_BSPACE,          // 0x33
+            UNIMAP_KP_ENTER,        // 0x34
+            UNIMAP_ESCAPE,          // 0x35
+            UNIMAP_LCTRL,           // 0x36
+            UNIMAP_LGUI,            // 0x37
+        },
+        {
+            UNIMAP_LSHIFT,          // 0x38
+            UNIMAP_CAPSLOCK,        // 0x39
+            UNIMAP_LALT,            // 0x3A
+            UNIMAP_LEFT,            // 0x3B
+            UNIMAP_RIGHT,           // 0x3C
+            UNIMAP_DOWN,            // 0x3D
+            UNIMAP_UP,              // 0x3E
+            UNIMAP_F23,             // 0x3F     FN?
+        },
+        {
+            UNIMAP_F17,             // 0x40
+            UNIMAP_KP_DOT,          // 0x41
+            UNIMAP_NO,              // 0x42
+            UNIMAP_KP_ASTERISK,     // 0x43
+            UNIMAP_NO,              // 0x44
+            UNIMAP_KP_PLUS,         // 0x45
+            UNIMAP_NO,              // 0x46
+            UNIMAP_NUMLOCK,         // 0x47
+        },
+        {
+            UNIMAP_NO,              // 0x48
+            UNIMAP_NO,              // 0x49
+            UNIMAP_NO,              // 0x4A
+            UNIMAP_KP_SLASH,        // 0x4B
+            UNIMAP_KP_ENTER,        // 0x4C
+            UNIMAP_NO,              // 0x4D
+            UNIMAP_KP_MINUS,        // 0x4E
+            UNIMAP_F18,             // 0x4F
+        },
+        {
+            UNIMAP_F19,             // 0x50
+            UNIMAP_KP_EQUAL,        // 0x51
+            UNIMAP_KP_0,            // 0x52
+            UNIMAP_KP_1,            // 0x53
+            UNIMAP_KP_2,            // 0x54
+            UNIMAP_KP_3,            // 0x55
+            UNIMAP_KP_4,            // 0x56
+            UNIMAP_KP_5,            // 0x57
+        },
+        {
+            UNIMAP_KP_6,            // 0x58
+            UNIMAP_KP_7,            // 0x59
+            UNIMAP_F20,             // 0x5A
+            UNIMAP_KP_8,            // 0x5B
+            UNIMAP_KP_9,            // 0x5C
+            UNIMAP_JYEN,            // 0x5D
+            UNIMAP_RO,              // 0x5E
+            UNIMAP_KP_COMMA,        // 0x5F
+        },
+        {
+            UNIMAP_F5,              // 0x60
+            UNIMAP_F6,              // 0x61
+            UNIMAP_F7,              // 0x62
+            UNIMAP_F3,              // 0x63
+            UNIMAP_F8,              // 0x64
+            UNIMAP_F9,              // 0x65
+            UNIMAP_MHEN,            // 0x66
+            UNIMAP_F11,             // 0x67
+        },
+        {
+            UNIMAP_HENK,            // 0x68
+            UNIMAP_PSCREEN,         // 0x69
+            UNIMAP_F16,             // 0x6A
+            UNIMAP_SCROLLLOCK,      // 0x6B
+            UNIMAP_NO,              // 0x6C
+            UNIMAP_F10,             // 0x6D
+            UNIMAP_APPLICATION,     // 0x6E     compose
+            UNIMAP_F12,             // 0x6F
+        },
+        {
+            UNIMAP_NO,              // 0x70
+            UNIMAP_PAUSE,           // 0x71
+            UNIMAP_INSERT,          // 0x72
+            UNIMAP_HOME,            // 0x73
+            UNIMAP_PGUP,            // 0x74
+            UNIMAP_DELETE,          // 0x75
+            UNIMAP_F4,              // 0x76
+            UNIMAP_END,             // 0x77
+        },
+        {
+            UNIMAP_F2,              // 0x78
+            UNIMAP_PGDOWN,          // 0x79
+            UNIMAP_F1,              // 0x7A
+            UNIMAP_RSHIFT,          // 0x7B
+            UNIMAP_RALT,            // 0x7C
+            UNIMAP_RCTRL,           // 0x7D
+            UNIMAP_RGUI,            // 0x7E
+            UNIMAP_F24,             // 0x7F     power key
+        }
+};
+
+#endif
diff --git a/converter/adb_usb/unimap_plain.c b/converter/adb_usb/unimap_plain.c
new file mode 100644 (file)
index 0000000..4d3efc2
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+Copyright 2016 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 "unimap_common.h"
+
+
+#define AC_FN0 ACTION_LAYER_TAP_KEY(1, KC_GRV)
+#define AC_FN1 ACTION_LAYER_TAP_KEY(1, KC_BSLS)
+
+#ifdef KEYMAP_SECTION_ENABLE
+const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = {
+#endif
+    UNIMAP(
+              F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
+    ESC,      F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS,         VOLD,VOLU,MUTE,
+    FN0, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
+    TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     FN1,      DEL, END, PGDN,    P7,  P8,  P9,  PPLS,
+    CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     NUHS,ENT,                         P4,  P5,  P6,  PCMM,
+    LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RO,  RSFT,          UP,           P1,  P2,  P3,  PEQL,
+    LCTL,LGUI,LALT,MHEN,          SPC,           HENK,KANA,RALT,RGUI,APP, RCTL,     LEFT,DOWN,RGHT,    P0,       PDOT,PENT
+    ),
+    UNIMAP(
+              F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
+    ESC,      F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,           PSCR,SLCK,PAUS,         VOLD,VOLU,MUTE,
+    TRNS,F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, JYEN,DEL,      INS, HOME,PGUP,    NLCK,BTN2,BTN3,WH_D,
+    TAB, Q,   W,   E,   R,   T,   Y,   U,   PSCR,SLCK,PAUS,UP,  INS,      TRNS,     DEL, END, PGDN,    WH_D,MS_U,WH_U,WH_U,
+    CAPS,VOLD,VOLU,MUTE,F,   G,   H,   J,   HOME,PGUP,LEFT,RGHT,     NUHS,ENT,                         MS_L,MS_D,MS_R,BTN4,
+    LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   END, PGDN,DOWN,     RO,  RSFT,          PGUP,         WH_L,MS_D,WH_R,BTN1,
+    LCTL,LGUI,LALT,MHEN,          SPC,           HENK,KANA,RALT,RGUI,APP, RCTL,     HOME,PGDN,END,     BTN1,     BTN2,BTN3
+    ),
+};
Imprint / Impressum