From 4d6e7f35bc61812ee825429886e219a3c895dd0a Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 17 Aug 2021 18:03:07 +0900 Subject: [PATCH] ibmpc_usb: Support secondary IF and mouse by default --- converter/ibmpc_usb/Makefile | 22 ++++++++++++---------- converter/ibmpc_usb/Makefile.x2 | 12 ------------ converter/ibmpc_usb/README.md | 30 +++++++++++++++++++++--------- converter/ibmpc_usb/config.h | 10 +++------- 4 files changed, 36 insertions(+), 38 deletions(-) delete mode 100644 converter/ibmpc_usb/Makefile.x2 diff --git a/converter/ibmpc_usb/Makefile b/converter/ibmpc_usb/Makefile index 242e7ce1..3cb7a760 100644 --- a/converter/ibmpc_usb/Makefile +++ b/converter/ibmpc_usb/Makefile @@ -8,8 +8,10 @@ TMK_DIR ?= ../../tmk_core TARGET_DIR ?= . # project specific files -SRC ?= protocol/ibmpc.c \ - ibmpc_usb.c +#SRC ?= protocol/ibmpc.c \ +# ibmpc_usb.c +SRC ?= protocol/ibmpc.cpp \ + ibmpc_usb.cpp CONFIG_H ?= config.h @@ -68,19 +70,19 @@ OPT_DEFS += -DSUSPEND_MODE_STANDBY # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE ?= no # 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 -NKRO_ENABLE ?= yes # USB Nkey Rollover +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1150) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+2200) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+400) +CONSOLE_ENABLE ?= yes # Console for debug(+4150) +COMMAND_ENABLE ?= no # Commands for debug and configuration(+3600) +NKRO_ENABLE ?= yes # USB Nkey Rollover(+350) KEYMAP_SECTION_ENABLE ?= yes UNIMAP_ENABLE ?= yes # IBMPC Options -IBMPC_SECONDARY ?= no # enable secondary interface -IBMPC_MOUSE_ENABLE ?= no # enable mouse support +IBMPC_SECONDARY ?= yes # enable secondary interface(+800) +IBMPC_MOUSE_ENABLE ?= yes # enable mouse support(+2000) # Optimize size but this may cause error "relocation truncated to fit" diff --git a/converter/ibmpc_usb/Makefile.x2 b/converter/ibmpc_usb/Makefile.x2 deleted file mode 100644 index 5c9bc325..00000000 --- a/converter/ibmpc_usb/Makefile.x2 +++ /dev/null @@ -1,12 +0,0 @@ -# With two interfaces on PS/2 connector -TARGET ?= ibmpc_usb_x2 -MCU = atmega32u2 -SRC ?= protocol/ibmpc.cpp \ - ibmpc_usb.cpp - -COMMAND_ENABLE ?= no # Commands for debug and configuration - -IBMPC_SECONDARY ?= yes # enable secondary interface -IBMPC_MOUSE_ENABLE ?= yes # enable mouse support - -include Makefile diff --git a/converter/ibmpc_usb/README.md b/converter/ibmpc_usb/README.md index 21f8c73f..ea28bb09 100644 --- a/converter/ibmpc_usb/README.md +++ b/converter/ibmpc_usb/README.md @@ -51,6 +51,8 @@ Firmware ### Build Options +Secondary interface and PS/2 mouses can be supported. + In Makefiile: # IBMPC Options @@ -88,21 +90,22 @@ Pull up resistors of 1-4.7K Ohm on both Data and Clock line are recommended, wit - Data PD0 - Clock PD1 -- Reset PB6 or PB7 (For some of XT keyboards. Not needed for AT, PS/2 and Terminal) +- Reset PB6 or PB7 -For optional secondary interface use these pins. -- Data PD2 -- Clock PD3 +For optional secondary interface use these pins. See PS/2 connector pinouts below. + +- Data2 PD2 +- Clock2 PD3 ### Reset -Old Type-1 IBM XT keyboard and some of XT clones need Reset pin to starup its controller. -Connect Reset pin to pin3 of DIN-5(180-degree) connector. This should not harm keyboards which don't require reset, -it is safe and recommended to have Reset pin on AT/XT converter. +Use pin3 of DIN-5(180-degree) connector for Reset. -Zenith Z-150 XT and Leading Edge DC-2014 are also known to need this. +Reset should not harm keyboards even if they don't require it. It is safe and recommended to have Reset pin on AT/XT converter. -See this for IBM XT Type-1 vs Type-2: https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol#type-1-vs-type-2 +Old Type-1 IBM XT keyboard and some of XT clones including Zenith Z-150 XT and Leading Edge DC-2014 are known to need Reset pin. AT, PS/2 and Terminal keyboards don't need it. + +See this for details: https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-XT-Keyboard-Protocol#keyboard-hard-reset ### Connector pinouts @@ -124,6 +127,15 @@ See this for IBM XT Type-1 vs Type-2: https://github.com/tmk/tmk_keyboard/wiki/I #### PS/2 - Mini-DIN-6 - https://pinouts.ru/InputCables/KeyboardPC6_pinout.shtml +PS/2 female socket from the front: + + ,--_--. 1: Data + / o6 5o \ 2: Data2 + | o4 3o | 3: GND + - 2o o1 - 4: VCC + `-___-' 5: Clock + 6: Clock2 + For secondary interface use pin2 and pin6 for data and clock respectively. You can use PS/2 Y-splitter cable to access secondary interface. diff --git a/converter/ibmpc_usb/config.h b/converter/ibmpc_usb/config.h index 1b36c58a..2489d4da 100644 --- a/converter/ibmpc_usb/config.h +++ b/converter/ibmpc_usb/config.h @@ -21,11 +21,10 @@ along with this program. If not, see . #include #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1bee -#define DEVICE_VER 0x0001 -#define MANUFACTURER t.m.k. +#define PRODUCT_ID 0x1BEE +#define DEVICE_VER 0x0201 +#define MANUFACTURER TMK #define PRODUCT IBM PC keyboard converter -#define DESCRIPTION convert IBM PC keyboard to USB /* matrix size */ @@ -42,9 +41,6 @@ along with this program. If not, see . // G80-2551 terminal keyboard support #define G80_2551_SUPPORT -// PS/2 Mouse support -//#define IBMPC_MOUSE_ENABLE - // Mouse Extended Report //#define MOUSE_EXT_REPORT