From 81e85a1a4e4b1b7c5bbf1fcffe967a60639778c0 Mon Sep 17 00:00:00 2001
From: dbroqua <dbroqua@mousur.org>
Date: Fri, 26 May 2017 20:35:31 +0200
Subject: - Added integration of IBM Trackpoint

---
 keyboards/handwired/trackpoint/Makefile            |  3 +
 keyboards/handwired/trackpoint/README.md           |  7 ++
 keyboards/handwired/trackpoint/config.h            | 75 ++++++++++++++++++++++
 .../handwired/trackpoint/keymaps/default/keymap.c  |  7 ++
 keyboards/handwired/trackpoint/rules.mk            | 25 ++++++++
 keyboards/handwired/trackpoint/trackpoint.c        |  5 ++
 keyboards/handwired/trackpoint/trackpoint.h        | 13 ++++
 7 files changed, 135 insertions(+)
 create mode 100644 keyboards/handwired/trackpoint/Makefile
 create mode 100644 keyboards/handwired/trackpoint/README.md
 create mode 100644 keyboards/handwired/trackpoint/config.h
 create mode 100644 keyboards/handwired/trackpoint/keymaps/default/keymap.c
 create mode 100644 keyboards/handwired/trackpoint/rules.mk
 create mode 100644 keyboards/handwired/trackpoint/trackpoint.c
 create mode 100644 keyboards/handwired/trackpoint/trackpoint.h

(limited to 'keyboards')

diff --git a/keyboards/handwired/trackpoint/Makefile b/keyboards/handwired/trackpoint/Makefile
new file mode 100644
index 0000000000..191c6bb664
--- /dev/null
+++ b/keyboards/handwired/trackpoint/Makefile
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+	include ../../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/handwired/trackpoint/README.md b/keyboards/handwired/trackpoint/README.md
new file mode 100644
index 0000000000..764ad984a4
--- /dev/null
+++ b/keyboards/handwired/trackpoint/README.md
@@ -0,0 +1,7 @@
+# IBM Trackpoint demonstration
+
+This is just a simple demo to show how to integrate IBM Trackpoint in QMK.
+
+Some documentation:
+* [How to wire IBM Trackpoint](https://github.com/alonswartz/trackpoint)
+* [QMK documentation](https://docs.qmk.fm/)
diff --git a/keyboards/handwired/trackpoint/config.h b/keyboards/handwired/trackpoint/config.h
new file mode 100644
index 0000000000..7558c03bf4
--- /dev/null
+++ b/keyboards/handwired/trackpoint/config.h
@@ -0,0 +1,75 @@
+#ifndef CONFIG_H
+    #define CONFIG_H
+
+    #include "config_common.h"
+
+    #define VENDOR_ID       0x1234
+    #define PRODUCT_ID      0x5678
+    #define DEVICE_VER      0x0001
+    #define MANUFACTURER    QMK
+    #define PRODUCT         TRACKPOINT-DEMO
+    #define DESCRIPTION     Simple demonstration for IBM Trackpoint integration
+
+    #define MATRIX_ROWS 1
+    #define MATRIX_COLS 3
+
+    #ifdef PS2_USE_USART
+        #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
+
+        /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
+        /* set DDR of CLOCK as input to be slave */
+        #define PS2_USART_INIT() do {   \
+            PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT);   \
+            PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT);     \
+            UCSR1C = ((1 << UMSEL10) |  \
+                      (3 << UPM10)   |  \
+                      (0 << USBS1)   |  \
+                      (3 << UCSZ10)  |  \
+                      (0 << UCPOL1));   \
+            UCSR1A = 0;                 \
+            UBRR1H = 0;                 \
+            UBRR1L = 0;                 \
+        } while (0)
+        #define PS2_USART_RX_INT_ON() do {  \
+            UCSR1B = ((1 << RXCIE1) |       \
+                      (1 << RXEN1));        \
+        } while (0)
+        #define PS2_USART_RX_POLL_ON() do { \
+            UCSR1B = (1 << RXEN1);          \
+        } while (0)
+        #define PS2_USART_OFF() do {    \
+            UCSR1C = 0;                 \
+            UCSR1B &= ~((1 << RXEN1) |  \
+                        (1 << TXEN1));  \
+        } while (0)
+        #define PS2_USART_RX_READY      (UCSR1A & (1<<RXC1))
+        #define PS2_USART_RX_DATA       UDR1
+        #define PS2_USART_ERROR         (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
+        #define PS2_USART_RX_VECT       USART1_RX_vect
+    #endif
+
+    #define MATRIX_COL_PINS { F1, F4, F5 }
+    #define MATRIX_ROW_PINS { F0 }
+    #define UNUSED_PINS
+
+    /* COL2ROW or ROW2COL */
+    #define DIODE_DIRECTION COL2ROW
+
+    #define DEBOUNCING_DELAY 5
+
+    #define LOCKING_SUPPORT_ENABLE
+    #define LOCKING_RESYNC_ENABLE
+
+    /* key combination for command */
+    #define IS_COMMAND() ( \
+        keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+    )
+
+#endif
diff --git a/keyboards/handwired/trackpoint/keymaps/default/keymap.c b/keyboards/handwired/trackpoint/keymaps/default/keymap.c
new file mode 100644
index 0000000000..22e46d98a7
--- /dev/null
+++ b/keyboards/handwired/trackpoint/keymaps/default/keymap.c
@@ -0,0 +1,7 @@
+#include "trackpoint.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = KEYMAP(
+        KC_BTN1,    KC_BTN3,    KC_BTN2 \
+    )
+};
diff --git a/keyboards/handwired/trackpoint/rules.mk b/keyboards/handwired/trackpoint/rules.mk
new file mode 100644
index 0000000000..0609dd3043
--- /dev/null
+++ b/keyboards/handwired/trackpoint/rules.mk
@@ -0,0 +1,25 @@
+MCU = atmega32u4
+F_CPU = 16000000
+ARCH = AVR8
+F_USB = $(F_CPU)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+OPT_DEFS += -DBOOTLOADER_SIZE=512
+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
+SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend
+NKRO_ENABLE ?= no            # USB Nkey Rollover
+BACKLIGHT_ENABLE ?= no       # Enable keyboard backlight functionality on B7 by default
+MIDI_ENABLE ?= no            # MIDI controls
+UNICODE_ENABLE ?= no         # Unicode
+BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE ?= no           # Audio output on port C6
+
+PS2_MOUSE_ENABLE ?= yes
+PS2_USE_USART ?= yes
+
+ifndef QUANTUM_DIR
+	include ../../Makefile
+endif
diff --git a/keyboards/handwired/trackpoint/trackpoint.c b/keyboards/handwired/trackpoint/trackpoint.c
new file mode 100644
index 0000000000..124995a642
--- /dev/null
+++ b/keyboards/handwired/trackpoint/trackpoint.c
@@ -0,0 +1,5 @@
+#include "trackpoint.h"
+
+void matrix_init_kb(void) {
+
+}
diff --git a/keyboards/handwired/trackpoint/trackpoint.h b/keyboards/handwired/trackpoint/trackpoint.h
new file mode 100644
index 0000000000..b5d73d7db5
--- /dev/null
+++ b/keyboards/handwired/trackpoint/trackpoint.h
@@ -0,0 +1,13 @@
+#ifndef TRACKPOINT_H
+#define TRACKPOINT_H
+
+#include "quantum.h"
+
+#define KEYMAP( \
+	k00, k01, k02  \
+) \
+{ \
+	{ k00, k01, k02} \
+}
+
+#endif
-- 
cgit v1.2.3