From 4c8e0fd0bd1712421f957ec5e0ca16fc6bbb3856 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 19 Jun 2014 16:13:35 +0900 Subject: Port ps2_usb to mbed --- converter/ps2_usb/Makefile.mbed | 44 ++++++++++++++++++++++++++++ converter/ps2_usb/config_mbed.h | 60 +++++++++++++++++++++++++++++++++++++++ converter/ps2_usb/keymap_common.c | 3 +- converter/ps2_usb/keymap_common.h | 1 - converter/ps2_usb/main.cpp | 46 ++++++++++++++++++++++++++++++ converter/ps2_usb/matrix.c | 3 +- 6 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 converter/ps2_usb/Makefile.mbed create mode 100644 converter/ps2_usb/config_mbed.h create mode 100644 converter/ps2_usb/main.cpp (limited to 'converter') diff --git a/converter/ps2_usb/Makefile.mbed b/converter/ps2_usb/Makefile.mbed new file mode 100644 index 0000000000..631f270f75 --- /dev/null +++ b/converter/ps2_usb/Makefile.mbed @@ -0,0 +1,44 @@ +PROJECT = ps2_usb + +TMK_DIR = ../.. +MBED_DIR = $(TMK_DIR)/mbed-sdk + +#VPATH += $(MBED_DIR):$(TMK_DIR) +vpath %.s .:$(MBED_DIR):$(TMK_DIR) +vpath %.c .:$(MBED_DIR):$(TMK_DIR) +vpath %.cpp .:$(MBED_DIR):$(TMK_DIR) + +OBJDIR = ./build + +OBJECTS = \ + $(OBJDIR)/protocol/ps2_busywait.o \ + $(OBJDIR)/protocol/ps2_io_mbed.o \ + $(OBJDIR)/./keymap_common.o \ + $(OBJDIR)/./matrix.o \ + $(OBJDIR)/./led.o \ + $(OBJDIR)/./main.o + +ifdef KEYMAP + OBJECTS := $(OBJDIR)/keymap_$(KEYMAP).o $(OBJECTS) +else + OBJECTS := $(OBJDIR)/keymap_plain.o $(OBJECTS) +endif + +CONFIG_H = config_mbed.h + +SYS_OBJECTS = + +INCLUDE_PATHS = -I. + +LIBRARY_PATHS = +LIBRARIES = + +# Build Options +# Comment out to disable +#BOOTMAGIC_ENABLE = yes +MOUSEKEY_ENABLE = yes + + +include $(TMK_DIR)/tool/mbed/mbed.mk +include $(TMK_DIR)/tool/mbed/common.mk +include $(TMK_DIR)/tool/mbed/gcc.mk diff --git a/converter/ps2_usb/config_mbed.h b/converter/ps2_usb/config_mbed.h new file mode 100644 index 0000000000..5819763e65 --- /dev/null +++ b/converter/ps2_usb/config_mbed.h @@ -0,0 +1,60 @@ +/* +Copyright 2012 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_MBED_H +#define CONFIG_MBED_H + + +#if 0 +// duplicated name against mbed USBDeivce +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6512 +#endif +#define DEVICE_VER 0x0001 +#define MANUFACTURER t.m.k. +#define PRODUCT PS/2 keyboard converter +#define DESCRIPTION convert PS/2 keyboard to USB + + +/* matrix size */ +#define MATRIX_ROWS 32 // keycode bit: 3-0 +#define MATRIX_COLS 8 // keycode bit: 6-4 + + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) || \ + keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \ +) + + +/* + * PS/2 Busywait + */ +#ifdef PS2_USE_BUSYWAIT +# define PS2_CLOCK_PORT PORTD +# define PS2_CLOCK_PIN PIND +# define PS2_CLOCK_DDR DDRD +# define PS2_CLOCK_BIT 5 +# define PS2_DATA_PORT PORTD +# define PS2_DATA_PIN PIND +# define PS2_DATA_DDR DDRD +# define PS2_DATA_BIT 2 +#endif + + +#endif diff --git a/converter/ps2_usb/keymap_common.c b/converter/ps2_usb/keymap_common.c index 241d2e33b1..e344fb4167 100644 --- a/converter/ps2_usb/keymap_common.c +++ b/converter/ps2_usb/keymap_common.c @@ -15,10 +15,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "keymap_common.h" +#include "progmem.h" /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/ps2_usb/keymap_common.h b/converter/ps2_usb/keymap_common.h index 216a8dc020..d783e01ded 100644 --- a/converter/ps2_usb/keymap_common.h +++ b/converter/ps2_usb/keymap_common.h @@ -19,7 +19,6 @@ along with this program. If not, see . #include #include -#include #include "keycode.h" #include "action.h" #include "action_macro.h" diff --git a/converter/ps2_usb/main.cpp b/converter/ps2_usb/main.cpp new file mode 100644 index 0000000000..860af149a0 --- /dev/null +++ b/converter/ps2_usb/main.cpp @@ -0,0 +1,46 @@ +#include "mbed.h" +#include "debug.h" +#include "timer.h" +#include "action.h" +#include "keycode.h" +#include "host.h" +#include "host_driver.h" +#include "mbed_driver.h" + + +// Button and LEDs of LPC11U35 board +DigitalIn isp(P0_1); // ISP button +DigitalOut led_red(P0_20); +DigitalOut led_green(P0_21); + + +int main(void) { + isp.mode(PullUp); + led_red = 1; + led_green = 0; + + timer_init(); + host_set_driver(&mbed_driver); + keyboard_init(); + + //debug_enable = true; + xprintf("mbed_onekey ver.eee:\r\n"); + + + bool last_isp = isp; + while (1) { + keyboard_task(); + + //led_green = !led_green; + if (last_isp == isp) continue; + last_isp = isp; + if (last_isp == 0) { + led_red = 0; // on + dprintf("timer: %i\r\n", timer_read()); + //register_code(KC_A); + } else { + led_red = 1; // off + //unregister_code(KC_A); + } + } +} diff --git a/converter/ps2_usb/matrix.c b/converter/ps2_usb/matrix.c index 45344c0f75..45cf2a4a90 100644 --- a/converter/ps2_usb/matrix.c +++ b/converter/ps2_usb/matrix.c @@ -17,8 +17,6 @@ along with this program. If not, see . #include #include -#include -#include #include "action.h" #include "print.h" #include "util.h" @@ -189,6 +187,7 @@ uint8_t matrix_scan(void) } uint8_t code = ps2_host_recv(); + if (code) xprintf("%i\r\n", code); if (!ps2_error) { switch (state) { case INIT: -- cgit v1.2.3 From e2077cad45f1736e878e317c43bd94117c61b5e0 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 24 Nov 2014 15:14:52 +0900 Subject: Change key_t to keypos_t --- converter/adb_usb/keymap_common.c | 2 +- converter/ascii_usb/keymap.c | 2 +- converter/ibm4704_usb/keymap_common.c | 2 +- converter/m0110_usb/keymap.c | 2 +- converter/m0110_usb/keymap_common.c | 2 +- converter/next_usb/keymap.c | 2 +- converter/pc98_usb/keymap.c | 2 +- converter/serialmouse_usb/keymap.c | 2 +- converter/serialmouse_usb/keymap_common.c | 2 +- converter/terminal_bluefruit/keymap.c | 2 +- keyboard/gh60/keymap_common.c | 2 +- keyboard/hid_liber/keymap.c | 2 +- keyboard/kitten_paw/keymap.c | 2 +- keyboard/kmac/keymap.c | 2 +- keyboard/lightpad/keymap.c | 2 +- keyboard/lightsaber/keymap.c | 2 +- keyboard/onekey/keymap.c | 2 +- keyboard/phantom/keymap.c | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) (limited to 'converter') diff --git a/converter/adb_usb/keymap_common.c b/converter/adb_usb/keymap_common.c index 241d2e33b1..55a13793cb 100644 --- a/converter/adb_usb/keymap_common.c +++ b/converter/adb_usb/keymap_common.c @@ -18,7 +18,7 @@ along with this program. If not, see . /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/ascii_usb/keymap.c b/converter/ascii_usb/keymap.c index 5c13beaffa..a0c61ce8de 100644 --- a/converter/ascii_usb/keymap.c +++ b/converter/ascii_usb/keymap.c @@ -30,7 +30,7 @@ along with this program. If not, see . // Keymap is not used. See matrix.c. /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return KC_NO; } diff --git a/converter/ibm4704_usb/keymap_common.c b/converter/ibm4704_usb/keymap_common.c index 241d2e33b1..55a13793cb 100644 --- a/converter/ibm4704_usb/keymap_common.c +++ b/converter/ibm4704_usb/keymap_common.c @@ -18,7 +18,7 @@ along with this program. If not, see . /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/m0110_usb/keymap.c b/converter/m0110_usb/keymap.c index 031c881b72..4570dd2832 100644 --- a/converter/m0110_usb/keymap.c +++ b/converter/m0110_usb/keymap.c @@ -209,7 +209,7 @@ static const uint16_t fn_actions[] PROGMEM = { /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/m0110_usb/keymap_common.c b/converter/m0110_usb/keymap_common.c index bad18c91a8..4ac2d71783 100644 --- a/converter/m0110_usb/keymap_common.c +++ b/converter/m0110_usb/keymap_common.c @@ -23,7 +23,7 @@ along with this program. If not, see . /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/next_usb/keymap.c b/converter/next_usb/keymap.c index d844f8a4e2..3a51075483 100644 --- a/converter/next_usb/keymap.c +++ b/converter/next_usb/keymap.c @@ -165,7 +165,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/pc98_usb/keymap.c b/converter/pc98_usb/keymap.c index 7420e24ac8..8922ea7bab 100644 --- a/converter/pc98_usb/keymap.c +++ b/converter/pc98_usb/keymap.c @@ -185,7 +185,7 @@ static const uint16_t PROGMEM fn_actions[] = { #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); diff --git a/converter/serialmouse_usb/keymap.c b/converter/serialmouse_usb/keymap.c index de8f75c2af..cb78b4d195 100644 --- a/converter/serialmouse_usb/keymap.c +++ b/converter/serialmouse_usb/keymap.c @@ -20,7 +20,7 @@ along with this program. If not, see . /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return KC_NO; } diff --git a/converter/serialmouse_usb/keymap_common.c b/converter/serialmouse_usb/keymap_common.c index 241d2e33b1..55a13793cb 100644 --- a/converter/serialmouse_usb/keymap_common.c +++ b/converter/serialmouse_usb/keymap_common.c @@ -18,7 +18,7 @@ along with this program. If not, see . /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/converter/terminal_bluefruit/keymap.c b/converter/terminal_bluefruit/keymap.c index 716590a456..8acd8cfb33 100644 --- a/converter/terminal_bluefruit/keymap.c +++ b/converter/terminal_bluefruit/keymap.c @@ -214,7 +214,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/keyboard/gh60/keymap_common.c b/keyboard/gh60/keymap_common.c index 7b6379f6b6..fdb1769e1c 100644 --- a/keyboard/gh60/keymap_common.c +++ b/keyboard/gh60/keymap_common.c @@ -18,7 +18,7 @@ along with this program. If not, see . /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } diff --git a/keyboard/hid_liber/keymap.c b/keyboard/hid_liber/keymap.c index f17d3762b9..433a620975 100644 --- a/keyboard/hid_liber/keymap.c +++ b/keyboard/hid_liber/keymap.c @@ -103,7 +103,7 @@ along with this program. If not, see . #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); diff --git a/keyboard/kitten_paw/keymap.c b/keyboard/kitten_paw/keymap.c index 23db421f9b..e9ad9efe1a 100644 --- a/keyboard/kitten_paw/keymap.c +++ b/keyboard/kitten_paw/keymap.c @@ -80,7 +80,7 @@ along with this program. If not, see . #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.col)][(key.row)]); diff --git a/keyboard/kmac/keymap.c b/keyboard/kmac/keymap.c index 5474b1b65e..1ffa60387e 100644 --- a/keyboard/kmac/keymap.c +++ b/keyboard/kmac/keymap.c @@ -74,7 +74,7 @@ along with this program. If not, see . #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); diff --git a/keyboard/lightpad/keymap.c b/keyboard/lightpad/keymap.c index 6d078230bb..2ca79a81b5 100644 --- a/keyboard/lightpad/keymap.c +++ b/keyboard/lightpad/keymap.c @@ -50,7 +50,7 @@ along with this program. If not, see . #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); diff --git a/keyboard/lightsaber/keymap.c b/keyboard/lightsaber/keymap.c index 398e51ec4a..477da9d865 100644 --- a/keyboard/lightsaber/keymap.c +++ b/keyboard/lightsaber/keymap.c @@ -54,7 +54,7 @@ along with this program. If not, see . #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); diff --git a/keyboard/onekey/keymap.c b/keyboard/onekey/keymap.c index 90f195c2b7..dce4e9191e 100644 --- a/keyboard/onekey/keymap.c +++ b/keyboard/onekey/keymap.c @@ -43,7 +43,7 @@ static const uint16_t PROGMEM fn_actions[] = { #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); diff --git a/keyboard/phantom/keymap.c b/keyboard/phantom/keymap.c index 1899874dd7..a040434f24 100644 --- a/keyboard/phantom/keymap.c +++ b/keyboard/phantom/keymap.c @@ -128,7 +128,7 @@ along with this program. If not, see . #define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) /* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); -- cgit v1.2.3