Browse Source

Merge pull request #902 from OferPlesser/feature/ps2-mouse-support

PS/2 mouse support
Jack Humbert 8 năm trước cách đây
mục cha
commit
bf23ac96f6
3 tập tin đã thay đổi với 41 bổ sung3 xóa
  1. 1 0
      build_keyboard.mk
  2. 1 3
      quantum/config_common.h
  3. 39 0
      readme.md

+ 1 - 0
build_keyboard.mk

@@ -199,6 +199,7 @@ endif
 VPATH += $(KEYBOARD_PATH)
 VPATH += $(COMMON_VPATH)
 
+include $(TMK_PATH)/protocol.mk
 
 include $(TMK_PATH)/common.mk
 SRC += $(TMK_COMMON_SRC)

+ 1 - 3
quantum/config_common.h

@@ -76,10 +76,9 @@
         } while(0)
 #   else
 #       error "USART configuration is needed."
+#   endif
 #endif
 
-// I'm fairly sure these aren't needed, but oh well - Jack
-
 /*
  * PS/2 Interrupt configuration
  */
@@ -125,4 +124,3 @@
 
 #endif
 
-#endif

+ 39 - 0
readme.md

@@ -1157,6 +1157,45 @@ The firmware supports 5 different light effects, and the color (hue, saturation,
 
 Please note the USB port can only supply a limited amount of power to the keyboard (500mA by standard, however, modern computer and most usb hubs can provide 700+mA.). According to the data of NeoPixel from Adafruit, 30 WS2812 LEDs require a 5V 1A power supply, LEDs used in this mod should not more than 20.
 
+## PS/2 Mouse Support
+
+Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device.
+In order to do this you must first enable the option in your Makefile.
+
+    PS2_MOUSE_ENABLE = yes
+
+Then, decide whether to use interrupts (better if your microcontroller supports them) or busywait, and enable the relevant option.
+
+    PS2_USE_INT = yes
+    // PS2_USE_BUSYWAIT = yes
+
+If you're using a teensy and have hooked up the clock on your PS/2 device to D1 and the data to D0, you're all set.
+Otherwise, you will need to update the following defines in your `config.h`:
+    
+    #define PS2_CLOCK_PORT  PORTD
+    #define PS2_CLOCK_PIN   PIND
+    #define PS2_CLOCK_DDR   DDRD
+    #define PS2_CLOCK_BIT   1
+
+    #define PS2_DATA_PORT   PORTD
+    #define PS2_DATA_PIN    PIND
+    #define PS2_DATA_DDR    DDRD
+    #define PS2_DATA_BIT    0
+
+And with `PS2_USE_INT` also define these macros:
+
+    #define PS2_INT_INIT()  do {    \
+        EICRA |= ((1<<ISC11) |      \
+                  (0<<ISC10));      \
+    } while (0)
+    #define PS2_INT_ON()  do {      \
+        EIMSK |= (1<<INT1);         \
+    } while (0)
+    #define PS2_INT_OFF() do {      \
+        EIMSK &= ~(1<<INT1);        \
+    } while (0)
+    #define PS2_INT_VECT    INT1_vect
+
 ## Safety Considerations
 
 You probably don't want to "brick" your keyboard, making it impossible