diff --git a/converter/ps2_usb/Makefile b/converter/ps2_usb/Makefile
index 1dd23c157e..f20039c6f0 100644
--- a/converter/ps2_usb/Makefile
+++ b/converter/ps2_usb/Makefile
@@ -91,6 +91,19 @@ PS2_USE_USART = yes # uses hardware USART engine for PS/2 signal receive(recomen
#PS2_USE_INT = yes # uses external interrupt for falling edge of PS/2 clock pin
#PS2_USE_BUSYWAIT = yes # uses primitive reference code
+# Serial Mouse Options
+# You can choose a mouse protocol and the implementation of
+# the underlying serial connection.
+#
+#SERIAL_MOUSE_MICROSOFT_ENABLE = yes # Enable support for Microsoft-compatible mice
+#SERIAL_MOUSE_MOUSESYSTEMS_ENABLE = yes # Enable support for Mousesystems-compatible mice
+#SERIAL_MOUSE_USE_UART = yes # use hardware UART for serial connection
+#SERIAL_MOUSE_USE_SOFT = yes # use software serial implementation
+
+# Optional serial mouse driver features
+# Support scrolling while holding the middle mouse button
+# (currently only supported for Mousesystems mice):
+#OPT_DEFS += -DSERIAL_MOUSE_CENTER_SCROLL
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
diff --git a/converter/ps2_usb/config.h b/converter/ps2_usb/config.h
index 889f0c38eb..5b644002dc 100644
--- a/converter/ps2_usb/config.h
+++ b/converter/ps2_usb/config.h
@@ -170,4 +170,42 @@ along with this program. If not, see .
#endif
#endif
+#ifdef SERIAL_MOUSE_MICROSOFT
+ /*
+ * Serial(USART) configuration (for Microsoft serial mice)
+ * asynchronous, positive logic, 1200baud, bit order: LSB first
+ * 1-start bit, 7-data bit, no parity, 1-stop bit
+ */
+ #define SERIAL_UART_BAUD 1200
+ #define SERIAL_UART_DATA UDR1
+ #define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
+ #define SERIAL_UART_RXD_VECT USART1_RX_vect
+ #define SERIAL_UART_TXD_READY (UCSR1A&(1<>8); /* baud rate */ \
+ UCSR1B |= (1<>8); /* baud rate */ \
+ UCSR1B |= (1<.
#include "print.h"
#include "debug.h"
-#define SERIAL_MOUSE_CENTER_SCROLL
+//#define SERIAL_MOUSE_CENTER_SCROLL
static void print_usb_data(const report_mouse_t *report);