# PS/2 マウスサポート :id=ps2-mouse-support PS/2 マウス (例えばタッチパッドあるいはトラックポイント)を複合デバイスとしてキーボードに接続することができます。 トラックポイントを接続するには、トラックポイントモジュールを入手し (つまり、Thinkpad キーボードから部品を取って)、モジュールの各ピンの機能を特定し、コントローラとトラックポイントモジュールの間に必要な回路を作成する必要があります。詳細については、Deskthority Wiki の[トラックポイントハードウェア](https://deskthority.net/wiki/TrackPoint_Hardware)ページを参照してください。 PS/2 デバイスの接続は、USART(最善)、割り込み(次善)、 または busywait(非推奨)の3つのやり方が有ります。 ## トラックポイントとコントローラ間の回路 :id=the-circuitry-between-trackpoint-and-controller 動作させるには、DATA と CLK のふたつのラインを 4.7k の抵抗で 5V にプルアップしてやる必要があります。 ``` DATA ----------+--------- PIN | 4.7K | MODULE 5+ --------+--+--------- PWR CONTROLLER | 4.7K | CLK ------+------------ PIN ``` ## Busywait バージョン :id=busywait-version 注意: これは非推奨です。ギクシャクした動きや、未送信の入力が発生するかもしれません。可能であれば、割り込みまたは USART バージョンを使ってください。 rules.mk で: ```makefile PS2_MOUSE_ENABLE = yes PS2_USE_BUSYWAIT = yes ``` キーボードの config.h で: ```c #ifdef PS2_USE_BUSYWAIT # define PS2_CLOCK_PIN D1 # define PS2_DATA_PIN D2 #endif ``` ## 割り込みバージョン :id=interrupt-version 以下の例はクロックのために D2 を、データのために D5 を使います。クロックには任意の INT あるいは PCINT ピンを、データには任意のピンを使うことができます。 rules.mk で: ```makefile PS2_MOUSE_ENABLE = yes PS2_USE_INT = yes ``` キーボードの config.h で: ```c #ifdef PS2_USE_INT #define PS2_CLOCK_PIN D2 #define PS2_DATA_PIN D5 #define PS2_INT_INIT() do { \ EICRA |= ((1<