動機
幾個月中,改了3把鍵盤加裝 TrackPoint 模組,有一些心得。第一把的 Ducky 87 鍵盤是向網友買的,不知怎的,使用一個 USB HUB 連接鍵盤和 TrackPoint 模組,滑鼠的移動就會不順。測了好久,確定無法使用 HUB 來合併兩者的訊號。不得已只好再鑽一個洞,另外接出 TrackPoint 模組的信號。
在計劃改鍵盤時,因為看到網路有人用 Teensy 2.0 來連接 TrackPoint 模組,所以同時也買了 Teensy 2.0 板子。但後來使用 PS/2 to USB converter 可以順利連接,而且便宜很多,體積又很小,Teensy 2.0 就擱在一邊。改了3把鍵盤之後,平常工作有鍵盤可以使用,就回過頭來把那支無法內藏 HUB 的 Ducky 87 鍵盤的控制器改成 Teensy 2.0。
參考網頁
kira3628800 的介紹文章: 使用QMK來搞一把鍵盤吧!、QMK加上小紅點吧!QMK 的說明: QMK Firmware,Keyboards with AVR Processors
要連接 TrackPoint 模組,需要再參考: PS/2 Mouse Support,PS/2 Mouse - QMK
MCU 控制板的選擇,可參考
Pro Micro vs. Teensy 2.0 review
實作參考
Connecting thinkpad trackpoint mouse+buttons to teensy 2
鍵盤矩陣
首先把原來的控制 IC 整個拆掉,因為解焊太麻煩,也沒這技術,就直接用鋸子破壞掉。參見下面的相片,左邊 DIP 開關上方的 IC 整個被挖掉。
因為只有 87 鍵,電路稍做修改,可以少用一支 pin,不然 Teensy 2.0 的接腳不夠用。配合 qmk 程式的設定,接腳編號由 0 開始。
鍵盤矩陣總共需要的控制信號數為 8+12=20,另外想用1個信號控制 Caps Lock 以及 2個信號連接 Trackpoint 的 dat 和 clk,所以總共要 23個控制接腳。所以必須使用有 25個IO的 Teensy 2.0,無法使用 Arduino Pro Micro,Pro Micro 標準是 18 個 IO,就算可以把 RX/TX 改成 IO,也只有 20pin。雖然 Pro Micro 便宜多了,有更多人在賣,但也只好放棄。
在下面這個連結有一些相關的討論串,看來只能選擇較貴的 Teensy 2.0。
Arduino vs Teensy? - GeekhackMost open firmware is written for the Teensy (2.0 mainly), but the Arduino / Pro Micro (cheap clone - quality may vary) has exactly the same chip (ATMega32u4 - worth checking on Arduino/Pro Micro boards). Its pretty easy to make a keyboard with the Arduino software, as its one of the examples.
關於連接 Trackpoint 的說明需參見 PS/2 Mouse - QMK,最好是使用 USART mode。
另外,Caps Lock LED 的控制: LED ControlTeensy 2.0 開發板的接腳。
Teensy 與 Trackpoint module 之間的接線。使用 USART mode
CLK: PD5 (XCK1)
DAT: PD2 (下圖的 PD4,經測試之後,好像是不能正常工作的。)另外,因為使用相同的工作電壓,不一定需要 4.7K 的 pull high 電阻即可運作。
PIN I/O 對應
鍵盤矩陣的 PIN 對應總共使用 23 個 PIN IO
直接把 Teensy 2.0 的板子用雙面膠黏在鍵盤的 PCB 上,旁邊黑色膠帶包著的是接 Trackpoint 模組的電容電阻。
電路板黏貼的位置和線路整理,要配合原來鍵盤的空間,才能將鍵盤密合的組裝。
上網找了一個適用的手托,嵌入滑鼠的按鍵,看起來稍有整體感。
Firmware 編譯環境
# Teensy development environmentqmk_dev: build: . working_dir: /work volumes: - "./work:/work" - "./work:/home/ajax" stdin_open: true tty: true user: 1000:1000 entrypoint: /bin/bash
Dockerfile
# ref: https://docs.qmk.fm/#/newbs_getting_startedFROM ubuntu:18.04#FROM ubuntu:16.04
RUN apt-get -y update
RUN apt-get -y install build-essential gcc-avr binutils-avr avr-libc && \ apt-get -y install git python3 python3-pip
RUN python3 -m pip install --upgrade pip && \ python3 -m pip install qmk
# RUN yes | qmk setup
RUN groupadd ajax -g 1000 && \ useradd -g 1000 -u 1000 ajax
CMD ["/bin/bash"]
docker run shell
echo "set prompt command: "echo "export PS1='\[\033]0;\u@\h:\w\007\]\[\033[01;31m\]qmk_dev@docker\[\033[01;34m\] \w \$\[\033[00m\] '"
docker-compose -f docker-compose.yml run --rm qmk_dev
qmk config user.keyboard=Teensy_tstqmk config user.keymap=default
qmk compile
編譯好,再在 windows 下用 loader 將產生的 firmware 下載到開發板上。