From 3f0289e66678af8c2d1f001ccb9cb34ccfba7c5c Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 14 Dec 2011 12:13:32 +0900 Subject: [PATCH] Added protocol support for Macintosh keyboard M0110. --- m0110.c | 304 +++++++++++++++++++++++++++++++++++++++ m0110.h | 73 ++++++++++ m0110_usb/Makefile | 52 +++++++ m0110_usb/README | 55 +++++++ m0110_usb/config.h | 62 ++++++++ m0110_usb/doc/m0110.jpg | Bin 0 -> 49360 bytes m0110_usb/doc/teensy.jpg | Bin 0 -> 50081 bytes m0110_usb/keymap.c | 118 +++++++++++++++ m0110_usb/led.c | 24 ++++ m0110_usb/matrix.c | 193 +++++++++++++++++++++++++ 10 files changed, 881 insertions(+) create mode 100644 m0110.c create mode 100644 m0110.h create mode 100644 m0110_usb/Makefile create mode 100644 m0110_usb/README create mode 100644 m0110_usb/config.h create mode 100755 m0110_usb/doc/m0110.jpg create mode 100755 m0110_usb/doc/teensy.jpg create mode 100644 m0110_usb/keymap.c create mode 100644 m0110_usb/led.c create mode 100644 m0110_usb/matrix.c diff --git a/m0110.c b/m0110.c new file mode 100644 index 0000000000..725675ed8f --- /dev/null +++ b/m0110.c @@ -0,0 +1,304 @@ +/* +Copyright 2011 Jun WAKO + +This software is licensed with a Modified BSD License. +All of this is supposed to be Free Software, Open Source, DFSG-free, +GPL-compatible, and OK to use in both free and proprietary applications. +Additions and corrections to this file are welcome. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +* Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include "m0110.h" +#include "debug.h" + + +static inline void clock_lo(void); +static inline void clock_hi(void); +static inline bool clock_in(void); +static inline void data_lo(void); +static inline void data_hi(void); +static inline bool data_in(void); +static inline uint16_t wait_clock_lo(uint16_t us); +static inline uint16_t wait_clock_hi(uint16_t us); +static inline uint16_t wait_data_lo(uint16_t us); +static inline uint16_t wait_data_hi(uint16_t us); +static inline void idle(void); +static inline void request(void); + + +/* +Primitive M0110 Library for AVR +============================== + + +Signaling +--------- +CLOCK is always from KEYBOARD. DATA are sent with MSB first. + +1) IDLE: both line is high. + CLOCK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + DATA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2) KEYBOARD->HOST: HOST reads bit on rising edge. + CLOCK ~~~~~~~~~~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~~~~~~~~~ + DATA ~~~~~~~~~~~~X777777X666666X555555X444444X333333X222222X111111X000000X~~~~~~~ + <--> 160us(clock low) + <---> 180us(clock high) + +3) HOST->KEYBOARD: HOST asserts bit on falling edge. + CLOCK ~~~~~~~~~~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~|__|~~~~~~~~~~~ + DATA ~~~~~~|_____X777777X666666X555555X444444X333333X222222X111111X000000X~~~~~~~ + <----> 840us(request to send by host) <-> 80us(hold DATA) + <--> 180us(clock low) + <---> 220us(clock high) + + +Protocol +-------- +COMMAND: + Inquiry 0x10 get key event + Instant 0x12 get key event + Model 0x14 get model number(M0110 responds with 0x09) + bit 7 1 if another device connected(used when keypad exists?) + bit4-6 next device model number + bit1-3 keyboard model number + bit 0 always 1 + Test 0x16 test(ACK:0x7D/NAK:0x77) + +KEY EVENT: + bit 7 key state(0:press 1:release) + bit 6-1 scan code + bit 0 always 1 + To get scan code, use ((bits&(1<<7)) | ((bits&7F))>>1). + +SCAN CODE: + M0110A + ,---------------------------------------------------------. + | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| + |---------------------------------------------------------| + |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + |---------------------------------------------------------| + |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return| + |---------------------------------------------------------| + |Shift | Z| X| C| V| B| N| M| ,| ,| /| | + `---------------------------------------------------------' + |Opt|Mac | Space |Enter|Opt| + `------------------------------------------------' + ,---------------------------------------------------------. + | 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| 38| + `---------------------------------------------------------' + | 3A| 37| 31 | 34| 3A| + `------------------------------------------------' + + +References +---------- +Protocol: + http://www.mac.linux-m68k.org/devel/plushw.php +Connector: + http://www.kbdbabel.org/conn/kbd_connector_macplus.png +Signaling: + http://www.kbdbabel.org/signaling/kbd_signaling_mac.png + http://typematic.blog.shinobi.jp/Entry/14/ +Scan Codes: + http://m0115.web.fc2.com/m0110.jpg + http://m0115.web.fc2.com/m0110a.jpg +*/ + + +#define WAIT(stat, us, err) do { \ + if (!wait_##stat(us)) { \ + m0110_error = err; \ + goto ERROR; \ + } \ +} while (0) + + +uint8_t m0110_error = 0; + + +void m0110_init(void) +{ + uint8_t data; + idle(); + _delay_ms(255); + + m0110_send(M0110_MODLE); + data = m0110_recv(); + print("m0110_init model: "); phex(data); print("\n"); + + m0110_send(M0110_TEST); + data = m0110_recv(); + print("m0110_init test: "); phex(data); print("\n"); +} + +uint8_t m0110_send(uint8_t data) +{ + m0110_error = 0; + + request(); + WAIT(clock_lo, 1000, 0); + for (uint8_t bit = 0x80; bit; bit >>= 1) { + WAIT(clock_lo, 250, 3); + _delay_us(15); + if (data&bit) { + data_hi(); + } else { + data_lo(); + } + WAIT(clock_hi, 200, 4); + } + _delay_us(100); // hold last bit for 80us + idle(); + return 1; +ERROR: + if (m0110_error) { + print("m0110_send err: "); phex(m0110_error); print("\n"); + } + idle(); + return 0; +} + +uint8_t m0110_recv(void) +{ + uint8_t data = 0; + m0110_error = 0; + + WAIT(clock_lo, -1, 0); // need 250ms? insted 0xffff(16bit max)us + for (uint8_t i = 0; i < 8; i++) { + data <<= 1; + WAIT(clock_lo, 200, 2); + WAIT(clock_hi, 200, 3); + if (data_in()) { + data |= 1; + } + } + idle(); + print("m0110_send recv data: "); phex(data); print("\n"); + return data; +ERROR: + if (m0110_error) { + print("m0110_recv err: "); phex(m0110_error); print("\n"); + } + idle(); + return 0xFF; +} + +uint8_t m0110_recv_key(void) +{ + uint8_t key; + m0110_send(M0110_INQUIRY); + key = m0110_recv(); + if (key == 0xFF || key == M0110_NULL) + return M0110_NULL; + else + return (key&(1<<7) | (key&0x7F)>>1); +} + + +static inline void clock_lo() +{ + M0110_CLOCK_PORT &= ~(1< + +This software is licensed with a Modified BSD License. +All of this is supposed to be Free Software, Open Source, DFSG-free, +GPL-compatible, and OK to use in both free and proprietary applications. +Additions and corrections to this file are welcome. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +* Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef M0110_H +#define M0110_H + + +/* port settings for clock and data line */ +#if !(defined(M0110_CLOCK_PORT) && \ + defined(M0110_CLOCK_PIN) && \ + defined(M0110_CLOCK_DDR) && \ + defined(M0110_CLOCK_BIT)) +# error "M0110 clock port setting is required in config.h" +#endif + +#if !(defined(M0110_DATA_PORT) && \ + defined(M0110_DATA_PIN) && \ + defined(M0110_DATA_DDR) && \ + defined(M0110_DATA_BIT)) +# error "M0110 data port setting is required in config.h" +#endif + +#define M0110_INQUIRY 0x10 +#define M0110_INSTNAT 0x14 +#define M0110_MODLE 0x16 +#define M0110_TEST 0x36 + +#define M0110_NULL 0x7B + + +extern uint8_t m0110_error; + +/* host role */ +void m0110_host_init(void); +uint8_t m0110_send(uint8_t data); +uint8_t m0110_recv(void); +uint8_t m0110_recv_key(void); + +#endif diff --git a/m0110_usb/Makefile b/m0110_usb/Makefile new file mode 100644 index 0000000000..8c8460c806 --- /dev/null +++ b/m0110_usb/Makefile @@ -0,0 +1,52 @@ +# Target file name (without extension). +TARGET = m0110 + +# Directory common source filess exist +COMMON_DIR = .. + +# Directory keyboard dependent files exist +TARGET_DIR = . + +# keyboard dependent files +SRC = main.c \ + keymap.c \ + matrix.c \ + led.c \ + m0110.c + +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 + + +# Build Options +# *Comment out* to disable the options. +# +#MOUSEKEY_ENABLE = yes # Mouse keys +#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support +#EXTRAKEY_ENABLE = yes # Audio control and System control +#NKRO_ENABLE = yes # USB Nkey Rollover + + + +#---------------- Programming Options -------------------------- +PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex + + + +include $(COMMON_DIR)/pjrc.mk +include $(COMMON_DIR)/common.mk diff --git a/m0110_usb/README b/m0110_usb/README new file mode 100644 index 0000000000..4122edb287 --- /dev/null +++ b/m0110_usb/README @@ -0,0 +1,55 @@ +M0110 to USB keyboard converter +=============================== +This firmware converts protocol for Apple Machintosh Keybard M0110. + + +Connection +---------- +You need 4P4C plug and cable to connect Teensy into M0110. +Teensy port F0 is assigned for CLOCK line and F1 for DATA by default, you can change pin configuration with editing config.h.. + +Plug: + http://en.wikipedia.org/wiki/Modular_connector#4P4C + +Pinout: + http://www.kbdbabel.org/conn/kbd_connector_macplus.png + 1(Black): GND + 2(Red): CLOCK + 3(Green): DATA + 4(Yellow): +5V + + + +Build Frimware +-------------- +Optionally edit Makefile and config.h for build options, pin configuration or MCU. + +$ cd m0110_usb +$ make +and program your Teensy with loader. + + + +Keymap +------ +You can change a keymap by editing code of keymap.c like following. +How to define the keymap is probably obvious. You can find key symbols in usb_keycodes.h. + +This is a default keymap for M0110. +,---------------------------------------------------------. +| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Bacpa| +|---------------------------------------------------------| +|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| +|---------------------------------------------------------| +|CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return| +|---------------------------------------------------------| +|Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | +`---------------------------------------------------------' + |Opt|Alt | Space |Alt |Opt| + `-----------------------------------------------' + + +Notes +----- + +EOF diff --git a/m0110_usb/config.h b/m0110_usb/config.h new file mode 100644 index 0000000000..c12e0738da --- /dev/null +++ b/m0110_usb/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +/* controller configuration */ +#include "controller_teensy.h" + + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0110 +#define MANUFACTURER t.m.k. +#define PRODUCT M0110 keyboard converter +#define DESCRIPTION convert M0110 keyboard to USB + + +/* matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +/* Locking Caps Lock support */ +//#define MATRIX_HAS_LOCKING_CAPS + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KB_LSHIFT) | MOD_BIT(KB_LCTRL) | MOD_BIT(KB_LALT) | MOD_BIT(KB_LGUI)) || \ + keyboard_report->mods == (MOD_BIT(KB_LSHIFT) | MOD_BIT(KB_RSHIFT)) \ +) + + +/* mouse keys */ +#ifdef MOUSEKEY_ENABLE +# define MOUSEKEY_DELAY_TIME 192 +#endif + + +/* ports */ +#define M0110_CLOCK_PORT PORTF +#define M0110_CLOCK_PIN PINF +#define M0110_CLOCK_DDR DDRF +#define M0110_CLOCK_BIT 0 +#define M0110_DATA_PORT PORTF +#define M0110_DATA_PIN PINF +#define M0110_DATA_DDR DDRF +#define M0110_DATA_BIT 1 + +#endif diff --git a/m0110_usb/doc/m0110.jpg b/m0110_usb/doc/m0110.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ef9a123abcb5017564ee7d32c71b04692cc86f95 GIT binary patch literal 49360 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

9u573G%dp`!X_!X&@t(GdsQY!^R_@%J-kigPO5 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 SQbok#) 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 literal 0 HcmV?d00001 diff --git a/m0110_usb/doc/teensy.jpg b/m0110_usb/doc/teensy.jpg new file mode 100755 index 0000000000000000000000000000000000000000..96e93e7e24e34098b8e8f8f6f9d8d2b5e816eebb GIT binary patch literal 50081 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

`gtt1zM!b8Xe*J@@e}g`$d}yuk8FVYjqy$ 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

dLiWVu)ClFKzMmd1x8hw| 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 literal 0 HcmV?d00001 diff --git a/m0110_usb/keymap.c b/m0110_usb/keymap.c new file mode 100644 index 0000000000..24fe6cd472 --- /dev/null +++ b/m0110_usb/keymap.c @@ -0,0 +1,118 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +/* + * Keymap for ADB keyboard + */ +#include +#include +#include +#include "usb_keyboard.h" +#include "usb_keycodes.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "keymap.h" + + +#define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)])) + +// Convert physical keyboard layout to matrix array. +// This is a macro to define keymap easily in keyboard layout form. +// TODO: layout for M0110A +/* M0110 */ +#define KEYMAP( \ + K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, \ + K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, \ + K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, \ + K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, \ + K3A,K37, K31, K34 \ +) { \ + { KB_##K00, KB_##K01, KB_##K02, KB_##K03, KB_##K04, KB_##K05, KB_##K06, KB_##K07 }, \ + { KB_##K08, KB_##K09, KB_NO, KB_##K0B, KB_##K0C, KB_##K0D, KB_##K0E, KB_##K0F }, \ + { KB_##K10, KB_##K11, KB_##K12, KB_##K13, KB_##K14, KB_##K15, KB_##K16, KB_##K17 }, \ + { KB_##K18, KB_##K19, KB_##K1A, KB_##K1B, KB_##K1C, KB_##K1D, KB_##K1E, KB_##K1F }, \ + { KB_##K20, KB_##K21, KB_##K22, KB_##K23, KB_##K24, KB_##K25, KB_##K26, KB_##K27 }, \ + { KB_##K28, KB_##K29, KB_##K2A, KB_##K2B, KB_##K2C, KB_##K2D, KB_##K2E, KB_##K2F }, \ + { KB_##K30, KB_##K31, KB_##K32, KB_##K33, KB_##K34, KB_NO, KB_NO, KB_##K37 }, \ + { KB_##K38, KB_##K39, KB_##K3A, KB_NO, KB_NO, KB_NO, KB_NO, KB_NO } \ +} + + +// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. +static const uint8_t PROGMEM fn_layer[] = { + 0, // Fn0 + 0, // Fn1 + 0, // Fn2 + 0, // Fn3 + 0, // Fn4 + 0, // Fn5 + 0, // Fn6 + 0 // Fn7 +}; + +// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. +// See layer.c for details. +static const uint8_t PROGMEM fn_keycode[] = { + KB_NO, // Fn0 + KB_NO, // Fn1 + KB_NO, // Fn2 + KB_NO, // Fn3 + KB_NO, // Fn4 + KB_NO, // Fn5 + KB_NO, // Fn6 + KB_NO // Fn7 +}; + +static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default Layer: plain keymap + * ,---------------------------------------------------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Bacpa| + * |---------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |---------------------------------------------------------| + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return| + * |---------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | + * `---------------------------------------------------------' + * |Opt|Alt | Space |Alt |Opt| + * `-----------------------------------------------' + */ + KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, + LGUI,LALT, SPC, RALT + ), +}; + + +uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) +{ + return KEYCODE(layer, row, col); +} + +uint8_t keymap_fn_layer(uint8_t fn_bits) +{ + return pgm_read_byte(&fn_layer[biton(fn_bits)]); +} + +uint8_t keymap_fn_keycode(uint8_t fn_bits) +{ + return pgm_read_byte(&fn_keycode[(biton(fn_bits))]); +} diff --git a/m0110_usb/led.c b/m0110_usb/led.c new file mode 100644 index 0000000000..f76545f0ba --- /dev/null +++ b/m0110_usb/led.c @@ -0,0 +1,24 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +#include "stdint.h" +#include "led.h" + + +void led_set(uint8_t usb_led) +{ +} diff --git a/m0110_usb/matrix.c b/m0110_usb/matrix.c new file mode 100644 index 0000000000..f045920ccd --- /dev/null +++ b/m0110_usb/matrix.c @@ -0,0 +1,193 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include +#include "print.h" +#include "util.h" +#include "debug.h" +#include "host.h" +#include "led.h" +#include "m0110.h" +#include "matrix.h" + + +#define CAPS 0x39 +#define CAPS_UP (CAPS | 0x80) +#define ROW(key) ((key)>>3&0x0F) +#define COL(key) ((key)&0x07) + + +static bool is_modified = false; + +// matrix state buffer(1:on, 0:off) +static uint8_t *matrix; +static uint8_t _matrix0[MATRIX_ROWS]; + +#ifdef MATRIX_HAS_GHOST +static bool matrix_has_ghost_in_row(uint8_t row); +#endif +static void register_key(uint8_t key); + + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ + print_enable = true; + debug_enable = true; + debug_matrix = false; + debug_keyboard = false; + debug_mouse = false; + print("debug enabled.\n"); + + m0110_init(); + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) _matrix0[i] = 0x00; + matrix = _matrix0; + return; +} + +uint8_t matrix_scan(void) +{ + uint8_t key; + + is_modified = false; + key = m0110_recv_key(); + +#ifdef MATRIX_HAS_LOCKING_CAPS + // Send Caps key up event + if (matrix_is_on(ROW(CAPS), COL(CAPS))) { + is_modified = true; + register_key(CAPS_UP); + } +#endif + if (key == M0110_NULL) { + return 0; + } else { +#ifdef MATRIX_HAS_LOCKING_CAPS + if (host_keyboard_leds() & (1<