├── .gitignore
├── LICENSE
├── MicroThinkPadAdapter
├── Debug
│ ├── CDC.cpp.d
│ ├── HID.cpp.d
│ ├── HardwareSerial.cpp.d
│ ├── IPAddress.cpp.d
│ ├── MCP23S17_Input
│ │ └── MCP23S17_InputsOnly.cpp.d
│ ├── MicroThinkPadAdapter.cpp.d
│ ├── MicroThinkPadAdapter.eep
│ ├── MicroThinkPadAdapter.elf
│ ├── MicroThinkPadAdapter.hex
│ ├── Print.cpp.d
│ ├── SPI
│ │ └── SPI.cpp.d
│ ├── Stream.cpp.d
│ ├── Tone.cpp.d
│ ├── TrackPointExtended
│ │ └── TrackPoint.cpp.d
│ ├── USBCore.cpp.d
│ ├── WInterrupts.c.d
│ ├── WMath.cpp.d
│ ├── WString.cpp.d
│ ├── main.cpp.d
│ ├── malloc.c.d
│ ├── new.cpp.d
│ ├── realloc.c.d
│ ├── wiring.c.d
│ ├── wiring_analog.c.d
│ ├── wiring_digital.c.d
│ ├── wiring_pulse.c.d
│ └── wiring_shift.c.d
├── MicroThinkPadAdapter.atsln
├── MicroThinkPadAdapter.atsuo
├── MicroThinkPadAdapter.cppproj
├── MicroThinkPadAdapter.ino
├── MicroThinkPadAdapter.sdf
├── MicroThinkPadAdapter.sln
├── MicroThinkPadAdapter.v12.suo
├── MicroThinkPadAdapter.vcxproj
├── MicroThinkPadAdapter.vcxproj.filters
└── Visual Micro
│ ├── .MicroThinkPadAdapter.vsarduino.h
│ ├── Compile.vmps.xml
│ ├── Configuration.Debug.vmps.xml
│ └── Upload.vmps.xml
├── README.md
├── doc
└── AdapterTest.jpg
└── libraries
├── MCP23S17_Input
├── MCP23S17_InputsOnly.cpp
└── MCP23S17_InputsOnly.h
└── TrackPointExtended
├── TrackPoint.cpp
└── TrackPoint.h
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files
2 | *.slo
3 | *.lo
4 | *.o
5 | *.obj
6 |
7 | # Compiled Dynamic libraries
8 | *.so
9 | *.dylib
10 | *.dll
11 |
12 | # Compiled Static libraries
13 | *.lai
14 | *.la
15 | *.a
16 | *.lib
17 |
18 | # Executables
19 | *.exe
20 | *.out
21 | *.app
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/CDC.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\CDC.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\CDC.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Platform.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
17 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBDesc.h \
18 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBCore.h \
19 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h
20 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/HID.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\HID.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\HID.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Platform.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
17 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBDesc.h \
18 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBCore.h \
19 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
20 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBDesc.h
21 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/HardwareSerial.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\HardwareSerial.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
17 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
18 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h
19 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/IPAddress.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\IPAddress.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\IPAddress.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/binary.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WCharacter.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WString.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Stream.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Print.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/USBAPI.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/IPAddress.h \
17 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h
18 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/MCP23S17_Input/MCP23S17_InputsOnly.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\MCP23S17_Input\MCP23S17_InputsOnly.cpp.o: \
3 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\MCP23S17_InputsOnly.cpp \
4 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\/MCP23S17_InputsOnly.h \
5 | C:\Program\ Files\ (x86)\Arduino\libraries\SPI/SPI.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/binary.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WCharacter.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WString.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Stream.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Print.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/USBAPI.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
17 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
18 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/MicroThinkPadAdapter.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\MicroThinkPadAdapter.cpp.o: \
3 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\MicroThinkPadAdapter.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\libraries\SPI/SPI.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WCharacter.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WString.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Stream.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Print.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/USBAPI.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
17 | D:\Arduino_workspace\arduino-thinkpad\libraries/TrackPointExtended/TrackPoint.h \
18 | D:\Arduino_workspace\arduino-thinkpad\libraries/MCP23S17_Input/MCP23S17_InputsOnly.h \
19 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/arduino.h
20 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/MicroThinkPadAdapter.eep:
--------------------------------------------------------------------------------
1 | :00000001FF
2 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/MicroThinkPadAdapter.elf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rampadc/arduino-thinkpadkb-usb/13fd1dcdcd75948983f26547601e0926bbfc65b3/MicroThinkPadAdapter/Debug/MicroThinkPadAdapter.elf
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/MicroThinkPadAdapter.hex:
--------------------------------------------------------------------------------
1 | :100000000C9478010C946B060C9498060C94C5061D
2 | :100010000C94F2060C94A0010C94A0010C941F0700
3 | :100020000C94A0010C94A0010C94730E0C94FA0E85
4 | :100030000C94A0010C94A0010C94A0010C94A001BC
5 | :100040000C94A0010C94A0010C94A0010C94A001AC
6 | :100050000C94A0010C94A0010C94A0010C944C07EA
7 | :100060000C94A0010C94A0010C94A0010C94A0018C
8 | :100070000C94A0010C94A0010C94A0010C94A0017C
9 | :100080000C94A0010C94A0010C94A0010C94A0016C
10 | :100090000C94A0010C94A0010C94A0010C94A0015C
11 | :1000A0000C94A0010C94A0010C94A001000000008D
12 | :1000B000240027002A002D00300000000000250049
13 | :1000C00028002B002E003100000000002300260035
14 | :1000D00029002C002F000404040404030405020278
15 | :1000E00002020403020202020606060606060404D1
16 | :1000F00002020204040802011040804010204080E7
17 | :10010000408008020401804020100201108010206D
18 | :1001100040400000000200080E0000030401000B34
19 | :1001200000000000000000000000000000000000CF
20 | :10013000070605040100080A0B0C0D09080B000254
21 | :10014000020201000904000001020200000524006F
22 | :100150001001052401010104240206052406000102
23 | :100160000705810310004009040100020A00000095
24 | :100170000705020240000007058302400000050158
25 | :100180000902A1010901A10085010509190129033D
26 | :1001900015002501950375018102950175058103FF
27 | :1001A00005010930093109381581257F7508950346
28 | :1001B0008106C0C005010906A1018502050719E0F5
29 | :1001C00029E715002501750195088102950175083B
30 | :1001D0008103950675081500256505071900296531
31 | :1001E0008100C0090402000103000000092101018F
32 | :1001F00000012265000705840340000100000000A3
33 | :10020000000000002A2B2800000000000000000071
34 | :100210000000000000000000000000002C9EB4A0C0
35 | :10022000A1A2A434A6A7A5AE362D3738271E1F20BD
36 | :10023000212223242526B333B62EB7B89F84858682
37 | :100240008788898A8B8C8D8E8F90919293949596C6
38 | :100250009798999A9B9C9D2F3130A3AD3504050644
39 | :100260000708090A0B0C0D0E0F10111213141516A6
40 | :100270001718191A1B1C1DAFB1B0B50004030904EF
41 | :100280002203410072006400750069006E006F0077
42 | :1002900020004D006900630072006F002000200004
43 | :1002A00020001803410072006400750069006E00B0
44 | :1002B0006F0020004C004C004300120100020000BF
45 | :1002C00000404123378000010102000112010002B9
46 | :1002D000020000404123378000010102000100C1FB
47 | :1002E0008081C100CC0193039609B80AAD0DC50108
48 | :1002F00011241FBECFEFDAE0DEBFCDBF11E0A0E0DA
49 | :10030000B1E0EEE2F1E202C005900D92AC3CB10723
50 | :10031000D9F712E0ACECB1E001C01D92A439B107ED
51 | :10032000E1F712E0CEEED2E004C02297FE010E9477
52 | :100330008610C43ED107C9F70E94F80B0C948A10AE
53 | :100340000C9400000F938130910581F46F5F7F4F13
54 | :10035000D1F485ED91E062E043E026E001E00E9407
55 | :10036000A30581EE91E00E940C060DC0892B59F483
56 | :100370006F5F7F4F41F481EE91E00E94D90585EDDA
57 | :1003800091E00E9407040F91089580E090E06FEFE4
58 | :100390007FEF0E94A201089581E090E06FEF7FEF70
59 | :1003A0000E94A201089585ED91E00E942404089521
60 | :1003B000EF92FF921F93CF93DF93C0E0D0E0E82E3F
61 | :1003C000FF24FE01E655FE4F1081C7010C2E02C02E
62 | :1003D000959587950A94E2F780FF06C08EE792E034
63 | :1003E000612F0E94DC0B0CC08EE792E0612F0E940F
64 | :1003F0008C0A882329F08EE792E0612F0E94D40BAB
65 | :100400002196C230D105E9F6DF91CF911F91FF907F
66 | :10041000EF900895EF92FF920F931F93DF93CF9386
67 | :1004200000D000D000D0CDB7DEB70E949407611590
68 | :1004300071058105910541F40E94940762307105B0
69 | :100440008105910508F471C00E9494079B01AC01DD
70 | :100450006093D1017093D2018093D3019093D40122
71 | :100460008091CC019091CD01A091CE01B091CF01AE
72 | :10047000281739074A075B0740F42093CC013093D3
73 | :10048000CD014093CE015093CF018091CC0190914A
74 | :10049000CD01A091CE01B091CF0179018A01E81A76
75 | :1004A000F90A0A0B1B0BD801C7018A3F9105A10568
76 | :1004B000B105D8F18091D0018823B9F52093CC0102
77 | :1004C0003093CD014093CE015093CF0186EE91E061
78 | :1004D0000E94DB03809117029091180260E071E0A6
79 | :1004E0000E94E40C809117029091180268E071E07C
80 | :1004F0000E94E40C00911702109118020E949407C8
81 | :10050000AB01BC01C8012AE030E00E94D50C80910B
82 | :100510001702909118026AE071E00E94E70C62E015
83 | :1005200070E080E090E00E94A20785ED91E00E94DB
84 | :100530000804882331F185ED91E00E940B046C835F
85 | :100540007D838E83DE011196FE01349683E0019057
86 | :100550000D928150E1F72B81098102FF07C08EE7E0
87 | :1005600092E060E040E00E94AD0B0BC021958EE769
88 | :1005700092E06A81422F20E00E94AD0B802F0E9402
89 | :10058000D8018091E2019091E30108970CF058C0E6
90 | :100590001092E5011092E40140C06091E401709175
91 | :1005A000E50181EE91E00E94DA05892BB9F0E09136
92 | :1005B000E201F091E3018091E4019091E50134E0E2
93 | :1005C000EE0FFF1F3A95E1F7E80FF91FE05EFE4FCF
94 | :1005D0008FE792E060810E943C0B16C0E091E2013F
95 | :1005E000F091E3018091E4019091E50124E0EE0FA8
96 | :1005F000FF1F2A95E1F7E80FF91FE05EFE4F8FE736
97 | :1006000092E060810E94F90A8091E4019091E501F5
98 | :1006100001969093E5018093E4018091E40190912B
99 | :10062000E50140970CF4B9CF8091E2019091E3018C
100 | :1006300001969093E3018093E2012D9A2D9806C0D4
101 | :100640001092E3011092E2012C9A2C9826960FB694
102 | :10065000F894DEBF0FBECDBFCF91DF911F910F91F8
103 | :10066000FF90EF900895EF92FF920F931F9306EE85
104 | :1006700011E040E7E42E42E0F42EC801B70120E08B
105 | :1006800032EC41E050E00E94940360ED77E080E0BE
106 | :1006900090E00E94A207C8010E94DB03809117022C
107 | :1006A0009091180261E171E00E94E70C6AE070E04D
108 | :1006B00080E090E00E94A207C80160E040E00E9454
109 | :1006C000920387E062E00E945B0889E061E00E949B
110 | :1006D0005B0888E061E00E945B088FE792E00E947F
111 | :1006E000990A8EE792E00E948B0AC70160E875E2E2
112 | :1006F0000E944B0905ED11E0C8010E94BE05C8012A
113 | :1007000060EC0E948105C8010E94860581E063EDCE
114 | :1007100071E042E050E00E9416061F910F91FF9099
115 | :10072000EF900895089508950F931F93CF93DF934B
116 | :100730008B01FC0172AB61ABCB01B9010E944B098B
117 | :10074000C0E0D0E00AC0CA31D10561F0219668EC62
118 | :1007500070E080E090E00E94A207C8010E94AD090D
119 | :10076000882389F3DF91CF911F910F910895CF9343
120 | :10077000DF93EC01662339F015C063E070E080E0A0
121 | :1007800090E00E94A2070E94940729813A814B8140
122 | :100790005C81621B730B840B950B613271058105C3
123 | :1007A000910558F30E94940769837A838B839C8315
124 | :1007B000DF91CF91089560E00E94B70308952CB5B2
125 | :1007C000382F33702C7F322B3CBD2DB590E09595A2
126 | :1007D00087959595879581702E7F822B8DBD089585
127 | :1007E00081E161E00E94E80881E161E00E945B082C
128 | :1007F0008CB580618CBD8CB580648CBD8FE061E070
129 | :100800000E945B0880E161E00E945B080895089502
130 | :10081000FC0183850895DF93CF9300D00F92CDB76D
131 | :10082000DEB7DE011196FC01339683E001900D9254
132 | :100830008150E1F769817A818B8190E00F900F9070
133 | :100840000F90CF91DF910895CF93DF93EC011B863A
134 | :1008500089810E941B0920E0892B09F021E028876B
135 | :100860008E8181508F838F81883058F489852885C7
136 | :100870009F8130E002C0220F331F9A95E2F7822B4E
137 | :1008800089878E818F5F8E838E818B30C1F48A85BC
138 | :10089000813041F0813018F0823079F409C08985C7
139 | :1008A0008B8302C089858C838A858F5F8A8705C088
140 | :1008B00089858D831A8681E08B871E821986DF9158
141 | :1008C000CF9108951F93162F862F61E00E945B0839
142 | :1008D000812F60E00E94E8081F9108951F93162F52
143 | :1008E000862F60E00E945B08812F61E00E94E8088B
144 | :1008F0001F910895FF920F931F93CF93DF93EC0105
145 | :1009000068810E946E04CE0169810E946E0482E3B8
146 | :1009100090E00E94FB0788810E941B090197D9F390
147 | :1009200085E090E00E94FB0788810E941B09892BCB
148 | :10093000D9F3FF2400E011E088810E941B09019790
149 | :10094000D9F389810E941B09019709F4F12A888152
150 | :100950000E941B09892BD9F30F5F083011F0110F8A
151 | :10096000EBCF88810E941B090197D9F388810E94EF
152 | :100970001B09892BD9F388810E941B090197D9F3A0
153 | :1009800088810E941B09892BD9F3CE0168810E94BE
154 | :1009900062048F2DDF91CF911F910F91FF900895E9
155 | :1009A000DF92EF92FF920F931F93CF93DF93EC01AF
156 | :1009B000D62E69810E946E04CE0168810E946E0469
157 | :1009C0008CE291E00E94FB07CE0168810E946204E4
158 | :1009D0008CE291E00E94FB07CE0169810E946204D3
159 | :1009E0008AE090E00E94FB07CE0168810E946E04BD
160 | :1009F00088810E941B090197D9F3EE24FF24F39408
161 | :100A00000D2D10E0D0FE05C0CE0169810E946E045C
162 | :100A100004C0CE0169810E94620488810E941B0982
163 | :100A2000892BD9F388810E941B090197D9F381E0B2
164 | :100A3000D822FD24E39488E0E81621F01595079567
165 | :100A4000D02EDECFFF2029F0CE0169810E946E04F6
166 | :100A500004C0CE0169810E94620488810E941B0942
167 | :100A6000892BD9F388810E941B090197D9F3CE0104
168 | :100A700069810E946E0482E390E00E94FB078881F6
169 | :100A80000E941B090197D9F388810E941B09892BB9
170 | :100A9000D9F389810E941B09892BB1F3CE016881AA
171 | :100AA0000E946204DF91CF911F910F91FF90EF9010
172 | :100AB000DF900895EF92FF920F931F938C01F62E13
173 | :100AC000E42E62EE0E94D004C8010E947A04C8019C
174 | :100AD00061E80E94D004C8010E947A04C8016F2D09
175 | :100AE0000E94D004C8010E947A04C8016E2D0E94A1
176 | :100AF000D004C8010E947A041F910F91FF90EF90DB
177 | :100B00000895462F6AE40E945A0508950F931F9393
178 | :100B10008C016AEE0E94D004C8010E947A04C801C8
179 | :100B200064EF0E94D004C8010E947A04C801F80151
180 | :100B300060810E946E04C801F80161810E946E0408
181 | :100B40001F910F9108950F93CF93DF93EC0168836A
182 | :100B500049832A83002331F01E821F82188619865A
183 | :100B60001A861B86CE0168810E946E04CE016981BF
184 | :100B70000E946E04DF91CF910F9108950F931F9300
185 | :100B80008C01FC01828161E00E945B08F801828196
186 | :100B900061E00E94E80860ED77E080E090E00E946C
187 | :100BA000A207F801828160E00E94E8081F910F917E
188 | :100BB000089508956031710518F020E030E02AC0F2
189 | :100BC0006830710514F093E101C092E18F9881E4DF
190 | :100BD0008EBD0DB407FEFDCF8EB59EBD0DB407FED4
191 | :100BE000FDCF8EB51EBC0DB407FEFDCF4EB58F9A5E
192 | :100BF0006830710514F06850704020E030E081E00A
193 | :100C000090E002C0880F991F6A95E2F7482311F01F
194 | :100C100021E030E0C901089582E161E00E945B08B3
195 | :100C200082E00E94DF030E94F0030895853008F0FF
196 | :100C300051C0E82FF0E0EE0FFF1FE75EFD4F71831C
197 | :100C40006083823009F1833030F4882349F08130A9
198 | :100C500009F040C00DC0833021F18430D9F52EC099
199 | :100C6000809169008C7F842B80936900E89A0895B5
200 | :100C700080916900440F551F440F551F837F842BBB
201 | :100C800080936900E99A08958091690034E0440FE7
202 | :100C9000551F3A95E1F78F7C842B80936900EA9A7F
203 | :100CA00008958091690026E0440F551F2A95E1F7C9
204 | :100CB0008F73842B80936900EB9A089580916A006A
205 | :100CC00094E0440F551F9A95E1F78F7C842B809315
206 | :100CD0006A00EE9A08951F920F920FB60F92112498
207 | :100CE0002F933F934F935F936F937F938F939F9334
208 | :100CF000AF93BF93EF93FF938091190290911A02E3
209 | :100D0000892B29F0E0911902F0911A020995FF91BF
210 | :100D1000EF91BF91AF919F918F917F916F915F9173
211 | :100D20004F913F912F910F900FBE0F901F901895EC
212 | :100D30001F920F920FB60F9211242F933F934F9350
213 | :100D40005F936F937F938F939F93AF93BF93EF9333
214 | :100D5000FF9380911B0290911C02892B29F0E09156
215 | :100D60001B02F0911C020995FF91EF91BF91AF9189
216 | :100D70009F918F917F916F915F914F913F912F91B3
217 | :100D80000F900FBE0F901F9018951F920F920FB6E5
218 | :100D90000F9211242F933F934F935F936F937F9301
219 | :100DA0008F939F93AF93BF93EF93FF9380911D0217
220 | :100DB00090911E02892B29F0E0911D02F0911E02F4
221 | :100DC0000995FF91EF91BF91AF919F918F917F9185
222 | :100DD0006F915F914F913F912F910F900FBE0F90A8
223 | :100DE0001F9018951F920F920FB60F9211242F93F8
224 | :100DF0003F934F935F936F937F938F939F93AF93A3
225 | :100E0000BF93EF93FF9380911F0290912002892B53
226 | :100E100029F0E0911F02F09120020995FF91EF91D6
227 | :100E2000BF91AF919F918F917F916F915F914F9102
228 | :100E30003F912F910F900FBE0F901F9018951F920A
229 | :100E40000F920FB60F9211242F933F934F935F93FE
230 | :100E50006F937F938F939F93AF93BF93EF93FF9382
231 | :100E60008091210290912202892B29F0E0912102A8
232 | :100E7000F09122020995FF91EF91BF91AF919F915F
233 | :100E80008F917F916F915F914F913F912F910F9033
234 | :100E90000FBE0F901F9018951F920F920FB60F92D2
235 | :100EA00011242F933F938F939F93AF93BF93809180
236 | :100EB000270290912802A0912902B0912A02309134
237 | :100EC0002B020196A11DB11D232F2D5F2D3720F080
238 | :100ED0002D570196A11DB11D20932B02809327024F
239 | :100EE00090932802A0932902B0932A0280912302B2
240 | :100EF00090912402A0912502B09126020196A11D95
241 | :100F0000B11D8093230290932402A0932502B093F5
242 | :100F10002602BF91AF919F918F913F912F910F909A
243 | :100F20000FBE0F901F9018958FB7F894209127024D
244 | :100F3000309128024091290250912A028FBFB901B5
245 | :100F4000CA0108959B01AC017FB7F89480912302F8
246 | :100F500090912402A0912502B091260266B5A89B2B
247 | :100F600005C06F3F19F00196A11DB11D7FBFBA2FBB
248 | :100F7000A92F982F8827860F911DA11DB11D62E012
249 | :100F8000880F991FAA1FBB1F6A95D1F7BC012DC0FE
250 | :100F9000FFB7F8948091230290912402A09125023A
251 | :100FA000B0912602E6B5A89B05C0EF3F19F0019667
252 | :100FB000A11DB11DFFBFBA2FA92F982F88278E0F13
253 | :100FC000911DA11DB11DE2E0880F991FAA1FBB1F33
254 | :100FD000EA95D1F7861B970B885E9340C8F22150A3
255 | :100FE00030404040504068517C4F2115310541054B
256 | :100FF000510571F60895019739F0880F991F880FF0
257 | :10100000991F02970197F1F70895789484B582604B
258 | :1010100084BD84B5816084BD85B5826085BD85B59C
259 | :10102000816085BDEEE6F0E0808181608083E1E84B
260 | :10103000F0E0108280818260808380818160808383
261 | :10104000E0E8F0E0808181608083E1E9F0E0808188
262 | :1010500082608083808181608083E0E9F0E080812C
263 | :1010600081608083E1ECF0E0808184608083808116
264 | :1010700082608083808181608083E3ECF0E0808106
265 | :1010800081608083E0ECF0E0808182608083E2EC2C
266 | :10109000F0E0808181608083EAE7F0E08081846015
267 | :1010A0008083808182608083808181608083808171
268 | :1010B000806880830895CF93DF93482F50E0CA0162
269 | :1010C0008C509F4FFC0134914A525F4FFA0184913A
270 | :1010D000882369F190E0880F991FFC01E455FF4FC8
271 | :1010E000A591B491FC01E654FF4FC591D4916623BC
272 | :1010F00051F42FB7F8948C91932F909589238C936A
273 | :10110000888189230BC0623061F42FB7F8948C91E9
274 | :10111000932F909589238C938881832B88832FBF6D
275 | :1011200006C09FB7F8948C91832B8C939FBFDF915F
276 | :10113000CF910895883071F1893068F4823031F1AF
277 | :10114000833020F4813009F042C01DC0833089F023
278 | :101150008430E9F512C08B3059F18C3028F4893095
279 | :10116000E9F08A30A1F51EC08C3031F18E3079F56E
280 | :1011700029C0809180008F7703C0809180008F7D8F
281 | :1011800080938000089584B58F7702C084B58F7DE9
282 | :1011900084BD0895809190008F7707C08091900062
283 | :1011A0008F7D03C080919000877F80939000089589
284 | :1011B0008091C0008F7703C08091C0008F7D8093A5
285 | :1011C000C00008958091C200877F8093C200089577
286 | :1011D000FF920F931F93F62E482F50E0CA018E5EA8
287 | :1011E0009E4FFC012491CA018C509F4FFC01149129
288 | :1011F0004A525F4FFA0104910023C9F0222319F0EB
289 | :10120000822F0E949A08E02FF0E0EE0FFF1FE654B5
290 | :10121000FF4FA591B4919FB7F894FF2021F48C91D2
291 | :101220001095812302C08C91812B8C939FBF1F91BD
292 | :101230000F91FF9008950F931F93482F50E0CA011C
293 | :101240008E5E9E4FFC012491CA018C509F4FFC0181
294 | :1012500004914A525F4FFA011491112319F420E0CE
295 | :1012600030E015C0222319F0822F0E949A08812FA6
296 | :1012700090E0880F991F88539F4FFC01A591B4916E
297 | :101280008C9120E030E0802311F021E030E0C901B2
298 | :101290001F910F910895089520916C0230916D0275
299 | :1012A00080916E0290916F02281B390B2F73307062
300 | :1012B000C901089520916C0230916D0280916E02F7
301 | :1012C00090916F022817390719F42FEF3FEF09C0EB
302 | :1012D000E0916E02F0916F02E45DFD4F8081282F56
303 | :1012E00030E0C901089520916C0230916D02809127
304 | :1012F0006E0290916F022817390719F42FEF3FEF14
305 | :1013000013C0E0916E02F0916F02E45DFD4F208109
306 | :1013100080916E0290916F0201968F7390709093FE
307 | :101320006F0280936E0230E0C9010895109273023B
308 | :101330001092720288EE93E0A0E0B0E08093740215
309 | :1013400090937502A0937602B093770280EB91E0C0
310 | :10135000909371028093700208951F931091A701DA
311 | :101360006AE070E080E090E00E94A207111111E0B5
312 | :10137000812F1F9108950F931F93DF93CF930F92A7
313 | :10138000CDB7DEB78C0169838091A701882369F00E
314 | :1013900083E0BE016F5F7F4F41E050E00E94CE0DC1
315 | :1013A0001816190614F49C0107C081E090E0F801BA
316 | :1013B0009383828320E030E0C9010F90CF91DF91C9
317 | :1013C0001F910F91089583E00E94A30D0895CF937C
318 | :1013D000DF9312C082E00E942E0D2FEF8F3F920705
319 | :1013E000C9F0E0916C02F0916D02E45DFD4F8083E5
320 | :1013F000D0936D02C0936C02C0916C02D0916D02CB
321 | :101400002196CF73D07080916E0290916F02C817B1
322 | :10141000D90701F7DF91CF910895FC0180818E5F9C
323 | :10142000808380E86CE371E042E450E00E94470D65
324 | :101430000895FC0181819081913A59F4813209F03B
325 | :101440004CC080E060EA71E047E050E00E94470D48
326 | :1014500042C0913209F041C0803239F480EA91E013
327 | :1014600067E070E00E948B0D36C0823209F035C013
328 | :1014700082818093A7018091A0019091A101A09108
329 | :10148000A201B091A301805B9440A040B04019F547
330 | :101490008091A70180FD12C087E797E7909301082C
331 | :1014A000809300082BE088E190E00FB6F894A895AF
332 | :1014B000809360000FBE209360000DC088E10FB6DE
333 | :1014C000F89480936000109260000FBEA89510926F
334 | :1014D00001081092000881E0089580E00895FC0161
335 | :1014E00091818081813A31F4913089F080E09330AC
336 | :1014F00089F40DC0813269F49B3021F4828180939C
337 | :10150000A80105C09A3029F482818093A90181E065
338 | :10151000089580E008950895FC0120E070E0808146
339 | :1015200090E068237923161617060CF421E0822F29
340 | :1015300008950895EF92FF920F931F938C01E62E6A
341 | :10154000DC01ED91FC910480F581E02D0995F82EE8
342 | :10155000D801ED91FC910680F781E02DC8016E2D38
343 | :1015600009958F2D90E01F910F91FF90EF900895B6
344 | :1015700010927E02109282021092810282EC91E01F
345 | :101580009093800280937F020895EF92FF920F93D1
346 | :101590001F93DF93CF930F92CDB7DEB789838B0173
347 | :1015A0007A0184E0BE016F5F7F4F41E050E00E940E
348 | :1015B000CE0D84E4B801A7010E94CE0D0F90CF910B
349 | :1015C000DF911F910F91FF90EF90089582E048E026
350 | :1015D00050E00E94C50A0895FC0116821782108609
351 | :1015E00011861286138614823496BF010E94E60A81
352 | :1015F0000895DC01683810F0685829C0E62FF0E043
353 | :1016000067FF13C0E058F04081E090E002C0880F0F
354 | :10161000991FEA95E2F7809514962C911497282348
355 | :1016200014962C93149760E012C0E450FE4F64911E
356 | :10163000662319F420E030E01DC067FF08C014964F
357 | :101640008C9114978D7F14968C9314976F77FD016E
358 | :1016500090E0662321F08681861709F416829F5F49
359 | :1016600031969630B1F7CD011496BD010E94E60A7D
360 | :1016700021E030E0C9010895CF93DF93DC016838A1
361 | :1016800010F0685825C0E62FF0E067FF12C0E05860
362 | :10169000F04081E090E002C0880F991FEA95E2F7E0
363 | :1016A00014962C911497282B14962C93149760E081
364 | :1016B0000FC0E450FE4F64916623D9F167FF08C064
365 | :1016C00014968C911497826014968C9314976F776C
366 | :1016D00016968C9116978617A9F117968C911797E5
367 | :1016E000861781F118968C911897861759F11996DB
368 | :1016F0008C911997861731F11A968C911A97861743
369 | :1017000009F11B968C911B978617E1F0ED01E0E043
370 | :10171000F0E09E2F8E81882321F4EA0FFB1F668361
371 | :1017200006C09F5F31962196E630F10591F796301D
372 | :1017300049F481E090E013969C938E93129720E0F9
373 | :1017400030E007C0CD011496BD010E94E60A21E0F9
374 | :1017500030E0C901DF91CF910895DF93CF9300D09E
375 | :1017600000D0CDB7DEB7FC01808189836A834B83CB
376 | :101770002C8381E0BE016F5F7F4F44E050E00E9408
377 | :10178000C50A0F900F900F900F90CF91DF910895A1
378 | :10179000FC018081681739F06083CF0160E040E090
379 | :1017A00020E00E94AD0B0895FC0160952081262366
380 | :1017B000622F0E94C80B0895FC01862F6081682B60
381 | :1017C000CF010E94C80B089580E86EE771E045E6FE
382 | :1017D00050E00E94470D0895FC0180818F5F808357
383 | :1017E00080E863EE71E049E150E00E94470D089502
384 | :1017F000CF93DF930E94050883E992E00E94AE0D2B
385 | :101800000E943303C0E0D0E00E940A022097E1F377
386 | :101810000E940000F9CFCF92DF92EF92FF920F93D8
387 | :101820001F93CF93DF937C016B018A01C0E0D0E06E
388 | :101830000FC0D6016D916D01D701ED91FC91019022
389 | :10184000F081E02DC7010995C80FD91F0150104044
390 | :101850000115110571F7CE01DF91CF911F910F9105
391 | :10186000FF90EF90DF90CF900895EF92FF920F934B
392 | :101870001F938C01DC01ED91FC910190F081E02D32
393 | :101880006DE009957C01D801ED91FC910190F0810A
394 | :10189000E02DC8016AE009959C012E0D3F1DC9018C
395 | :1018A0001F910F91FF90EF900895CF93DF93EC017C
396 | :1018B0006115710519F420E030E00FC0DB010D90D7
397 | :1018C0000020E9F71197A61BB70BE881F981028088
398 | :1018D000F381E02DAD0109959C01C901DF91CF9104
399 | :1018E00008954F925F927F928F929F92AF92BF9294
400 | :1018F000CF92DF92EF92FF920F931F93DF93CF93DC
401 | :10190000CDB7DEB7A1970FB6F894DEBF0FBECDBF3F
402 | :101910002C01742ECB01223008F42AE019A231E206
403 | :10192000C32ED12CCC0EDD1E822E9924AA24BB24DA
404 | :10193000672D752FA50194010E94621079018A011B
405 | :10194000C801B701A50194010E944310472D461B11
406 | :101950000894C108D1084A3014F4405D01C0495CC4
407 | :10196000F6014083E114F1040105110521F07E2CFC
408 | :101970005F2DC801DDCFC201B6010E94550CA196B2
409 | :101980000FB6F894DEBF0FBECDBFCF91DF911F9190
410 | :101990000F91FF90EF90DF90CF90BF90AF909F900E
411 | :1019A0008F907F905F904F900895DC012115310555
412 | :1019B00041F4ED91FC910190F081E02D642F0995A7
413 | :1019C00008950E94710C08950E94550C0895EF929D
414 | :1019D000FF920F931F937C010E94550C8C01C7014D
415 | :1019E0000E94350C080F191FC8011F910F91FF901D
416 | :1019F000EF900895282F80918D028823C1F057FF22
417 | :101A00001AC015C0289A90938C028091F10081939E
418 | :101A1000E217F307B9F74115510539F08091F2004B
419 | :101A2000882319F48BE68093E800AFBF02C04FEF24
420 | :101A30005FEFCA010895AFB7F89427702093E900CB
421 | :101A40008091F200282F30E0241735070CF4A9010B
422 | :101A5000FB019B01240F311D94E6DACFDF93CF9376
423 | :101A60000F92CDB7DEB7BE016F5F7F4F41E050E010
424 | :101A70000E94FA0C019719F02FEF3FEF03C0898104
425 | :101A8000282F30E0C9010F90CF91DF910895FF9288
426 | :101A90000F931F93F82E142F052F40919002509111
427 | :101AA0009102212F302FC901DC01FB016EEF29C00B
428 | :101AB000F7FE02C0949101C0908120918E02309176
429 | :101AC0008F0224173507ACF48091E8008570E1F3AC
430 | :101AD0008091E80082FF03C02FEF3FEF17C0909383
431 | :101AE000F100C90101968F739070892B11F46093F6
432 | :101AF000E8002F5F3F4F30938F0220938E021197A3
433 | :101B000031961097A9F6812F902F9C01C9011F9142
434 | :101B10000F91FF9008959C018091E80082FFFCCF17
435 | :101B2000F901260F311D03C08091F1008193E21766
436 | :101B3000F307D1F7289A84E680938C028BEF809389
437 | :101B4000E800CB0108958093E9008091F20088239A
438 | :101B500019F08AE38093E8000895089510928D02A9
439 | :101B600081E08093D70080EA8093D80082E189BD2C
440 | :101B700009B400FEFDCF61E070E080E090E00E94DB
441 | :101B8000A20780E98093D8008CE08093E200109255
442 | :101B9000E000559A209A5D98289808955F926F9278
443 | :101BA0007F928F929F92AF92BF92CF92DF92EF92ED
444 | :101BB000FF920F931F93CF93DF93E82E842E752E01
445 | :101BC00080918D02882371F18B01242F352FC9015B
446 | :101BD000EC017AEFF72E67E0962E9E2050E4552E0A
447 | :101BE0008E2D90E040E2A42EB12CA822B9223AE337
448 | :101BF000632E20E4C22ED12CC822D92258C09FB710
449 | :101C0000F8949092E9008091E80085FD02C020E000
450 | :101C100004C08091F200252D281B9FBF222361F470
451 | :101C2000FA9419F42FEF3FEF4DC061E070E080E0CF
452 | :101C300090E00E94A2073BC0822F90E0C817D9070E
453 | :101C40000CF42C2FC21BD1094FB7F8949092E900E5
454 | :101C5000A114B10421F406C01092F10021502223F6
455 | :101C6000D9F719C0E7FC03C0F801922F10C0C801D2
456 | :101C7000322F06C0FC010196E491E093F10031504F
457 | :101C80003323C1F706C081918093F10091509923CD
458 | :101C9000D1F7020F111D8091E80085FF05C0209744
459 | :101CA00029F4C114D10411F06092E8004FBF2097CD
460 | :101CB00009F0A5CF5D9A84E680938B02282D372DFD
461 | :101CC000C9019C01C901DF91CF911F910F91FF9034
462 | :101CD000EF90DF90CF90BF90AF909F908F907F90CC
463 | :101CE0006F905F9008951F920F920FB60F9211247C
464 | :101CF0002F933F934F935F936F937F938F939F9314
465 | :101D0000AF93BF93EF93FF938091E1001092E100B6
466 | :101D1000982F83FF0FC01092E90081E08093EB00C1
467 | :101D20001092EC0082E38093ED0010928D0288E027
468 | :101D30008093F00092FF34C083E08093E9008091AB
469 | :101D4000F200882319F08AE38093E8008FB7F894B3
470 | :101D500092E09093E9009091F2008FBF992321F0D7
471 | :101D600080E792E00E94E70980918B02882351F07E
472 | :101D700080918B02815080938B0280918B0288230B
473 | :101D800009F45D9880918C02882351F080918C0237
474 | :101D9000815080938C0280918C02882309F42898CA
475 | :101DA000FF91EF91BF91AF919F918F917F916F9133
476 | :101DB0005F914F913F912F910F900FBE0F901F9009
477 | :101DC00018950F931F93DF93CF930F92CDB7DEB784
478 | :101DD00019828E010F5F1F4FC8010E940D0AC801B2
479 | :101DE0000E94EC0B898190E00F90CF91DF911F91C1
480 | :101DF0000F9108951F920F920FB60F921124EF9238
481 | :101E0000FF921F932F933F934F935F936F937F9313
482 | :101E10008F939F93AF93BF93EF93FF93DF93CF93F2
483 | :101E2000CDB7DEB76197DEBFCDBF1092E9008091DC
484 | :101E3000E80083FF0FC1FE0131969E01275F3F4FEF
485 | :101E400003C08091F1008193E217F307D1F7289A3C
486 | :101E500084E680938C0282EF8093E800998197FF5B
487 | :101E600005C08091E80080FFFCCF03C08EEF809317
488 | :101E7000E800292F30E0C90180769070892B09F0A5
489 | :101E8000C2C08A81882329F41092F1001092F100D7
490 | :101E9000D6C0813009F4D3C0833009F4D0C0853076
491 | :101EA00049F48091E80080FFFCCF8B8180688093AB
492 | :101EB000E300C5C0863009F07CC01C81EF80F88447
493 | :101EC0001230C1F51092E90010928F0210928E022A
494 | :101ED00010929102109290020E94E10E99E0FE0190
495 | :101EE0003996DF01292F1D922A95E9F799871A87DC
496 | :101EF00091E09E8790E8988B9AEF998B20918E02C3
497 | :101F000030918F02275F3F4F3C872B878D87109240
498 | :101F1000E90010928F0210928E02F0929102E092EC
499 | :101F2000900280E0BF0149E050E00E94470D0E940E
500 | :101F3000E10E85C01092E90010928F0210928E027D
501 | :101F4000F0929102E0929002123241F482E290E02B
502 | :101F50000E94E40B892B09F476C071C0113079F42A
503 | :101F600088E0E816F10419F481E0809392028091F0
504 | :101F70009202882309F06BC0EAEBF2E013C0133041
505 | :101F800009F061C08B81882319F4ECE7F2E00AC004
506 | :101F9000823019F4E0E8F2E005C0813009F053C066
507 | :101FA000E2EAF2E0449180E8BF0150E00E94470D70
508 | :101FB00046C0873009F447C0883021F481E080931F
509 | :101FC000F1003DC08930D9F523703070232BD9F54D
510 | :101FD000EFEDF2E091E031E026E39093E9003093F9
511 | :101FE000EB0084918093EC002093ED009F5F31968D
512 | :101FF000953099F78EE78093EA001092EA008B8182
513 | :1020000080938D021CC08F8198851092E9001092F8
514 | :102010008F0210928E0290939102809390028D8194
515 | :10202000882329F4CE0101960E94190A06C0823045
516 | :1020300051F4CE0101960E946F0A882321F08EEFA1
517 | :102040008093E80007C081E28093EB0003C0ECECD2
518 | :10205000F2E0A8CF6196DEBFCDBFCF91DF91FF91B7
519 | :10206000EF91BF91AF919F918F917F916F915F9110
520 | :102070004F913F912F911F91FF90EF900F900FBEC6
521 | :102080000F901F901895629FD001739FF001829F5F
522 | :10209000E00DF11D649FE00DF11D929FF00D839FF7
523 | :1020A000F00D749FF00D659FF00D9927729FB00D94
524 | :1020B000E11DF91F639FB00DE11DF91FBD01CF01A7
525 | :1020C00011240895A1E21A2EAA1BBB1BFD010DC00D
526 | :1020D000AA1FBB1FEE1FFF1FA217B307E407F507D8
527 | :1020E00020F0A21BB30BE40BF50B661F771F881FB4
528 | :1020F000991F1A9469F760957095809590959B014A
529 | :10210000AC01BD01CF010895EE0FFF1F0590F491C2
530 | :10211000E02D099412E0CEEED2E004C0FE010E9450
531 | :0E21200086102296C03FD107C9F7F894FFCF72
532 | :10212E00564D4450455F31007C005F564D4450453E
533 | :10213E0000564D4450565F317C5F564D445056000C
534 | :10214E0060C2C335363DC92DCAD1D4D3D20000806A
535 | :10215E003132333437383930CBCDCCD6D5CE0000F2
536 | :10216E007177657275696F700000008300CF000093
537 | :10217E00B3C1C474795DC85BB20000000000810079
538 | :10218E00617364666A6B6C3B5C0000870000000044
539 | :10219E00B100C56768C70027C6000000DA820000DC
540 | :1021AE007A7863766D2C2E00B0000000D000858406
541 | :1021BE00000000626E00002F20D7D900D8860000E4
542 | :1021CE0000E100000000000001010102000000001B
543 | :1021DE00BB090B0C4C0973095A09E309E709000006
544 | :0C21EE0000009A0A0B0C3C0BF90AEC0AEA
545 | :00000001FF
546 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/Print.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\Print.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\Print.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h
17 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/SPI/SPI.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\SPI\SPI.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\libraries\SPI\SPI.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\libraries\SPI\/SPI.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/binary.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WCharacter.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WString.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Stream.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Print.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/USBAPI.h
17 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/Stream.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\Stream.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\Stream.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h
17 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/Tone.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\Tone.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\Tone.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
16 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/TrackPointExtended/TrackPoint.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\TrackPointExtended\TrackPoint.cpp.o: \
3 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended\TrackPoint.cpp \
4 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended\/TrackPoint.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WCharacter.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WString.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Stream.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Print.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/USBAPI.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
17 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/USBCore.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\USBCore.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\USBCore.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Platform.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WCharacter.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/HardwareSerial.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Stream.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Print.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Printable.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
16 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h \
17 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBDesc.h \
18 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBCore.h \
19 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBAPI.h \
20 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/USBDesc.h
21 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/WInterrupts.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\WInterrupts.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\WInterrupts.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/WMath.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\WMath.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\WMath.cpp
4 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/WString.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\WString.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\WString.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/WString.h
5 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/main.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\main.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\main.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/binary.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WCharacter.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/WString.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.h \
9 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Stream.h \
10 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Print.h \
11 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/Printable.h \
12 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h \
13 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/USBAPI.h \
14 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
15 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
16 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/malloc.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\malloc.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\avr-libc\malloc.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\avr-libc\/sectionname.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\avr-libc\/stdlib_private.h
6 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/new.cpp.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\new.cpp.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\new.cpp \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino/new.h
5 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/realloc.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\realloc.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\avr-libc\realloc.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\avr-libc\/sectionname.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\avr-libc\/stdlib_private.h
6 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/wiring.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\wiring.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\wiring.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/wiring_analog.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\wiring_analog.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\wiring_analog.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/wiring_digital.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\wiring_digital.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\wiring_digital.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/wiring_pulse.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\wiring_pulse.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\wiring_pulse.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Debug/wiring_shift.c.d:
--------------------------------------------------------------------------------
1 | \
2 | C:\Users\CONG\AppData\Local\VMicro\Arduino\Builds\MicroThinkPadAdapter\micro\wiring_shift.c.o: \
3 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\wiring_shift.c \
4 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/wiring_private.h \
5 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/Arduino.h \
6 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\cores\arduino\/binary.h \
7 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/pins_arduino.h \
8 | C:\Program\ Files\ (x86)\Arduino\hardware\arduino\variants\micro/../leonardo/pins_arduino.h
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.atsln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Atmel Studio Solution File, Format Version 11.00
4 | Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "MicroThinkPadAdapter", "MicroThinkPadAdapter.cppproj", "{07B459B4-8D76-4638-BC6D-A459BA2D616B}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|AVR = Debug|AVR
9 | Release|AVR = Release|AVR
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {07B459B4-8D76-4638-BC6D-A459BA2D616B}.Debug|AVR.ActiveCfg = Release|AVR
13 | {07B459B4-8D76-4638-BC6D-A459BA2D616B}.Debug|AVR.Build.0 = Release|AVR
14 | {07B459B4-8D76-4638-BC6D-A459BA2D616B}.Release|AVR.ActiveCfg = Release|AVR
15 | {07B459B4-8D76-4638-BC6D-A459BA2D616B}.Release|AVR.Build.0 = Release|AVR
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.atsuo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rampadc/arduino-thinkpadkb-usb/13fd1dcdcd75948983f26547601e0926bbfc65b3/MicroThinkPadAdapter/MicroThinkPadAdapter.atsuo
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.cppproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 2.0
5 | 6.1
6 | com.Atmel.AVRGCC8.CPP
7 | {07b459b4-8d76-4638-bc6d-a459ba2d616b}
8 | atmega32u4
9 | none
10 | Executable
11 | CPP
12 | $(MSBuildProjectName)
13 | .elf
14 | $(MSBuildProjectDirectory)\$(Configuration)
15 | MicroThinkPadAdapter
16 | MicroThinkPadAdapter
17 | MicroThinkPadAdapter
18 | Native
19 | true
20 | false
21 |
22 |
23 | 0
24 | true
25 | 0x20000000
26 | true
27 |
28 | 0
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | True
46 | True
47 | True
48 | True
49 | True
50 | True
51 |
52 |
53 | __AVR_ATmega32u4__
54 | __AVR_ATmega32U4__
55 | _VMDEBUG=1
56 | ARDUINO=101
57 | ARDUINO_MAIN
58 | F_CPU=16000000L
59 | __AVR__
60 | __cplusplus
61 |
62 |
63 |
64 |
65 | C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino
66 | C:\Program Files (x86)\Arduino\hardware\arduino\variants\micro
67 | C:\Program Files (x86)\Arduino\libraries\SPI
68 | C:\Program Files (x86)\Arduino\libraries\SPI\utility
69 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended
70 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended\utility
71 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input
72 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\utility
73 | C:\Program Files (x86)\Arduino\libraries
74 | C:\Program Files (x86)\Arduino\hardware\arduino\libraries
75 | C:\Program Files (x86)\Visual Micro\Visual Micro for Arduino\Micro Platforms\default\debuggers
76 | D:\Arduino_workspace\arduino-thinkpad\libraries
77 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\
78 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\
79 | c:\program files (x86)\arduino\hardware\tools\avr\avr\
80 | c:\program files (x86)\arduino\hardware\tools\avr\lib\gcc\avr\4.3.2\include\
81 |
82 |
83 | Optimize (-O1)
84 | True
85 | True
86 | Default (-g2)
87 | True
88 | -std=gnu99 -include=arduino.h
89 | True
90 | True
91 |
92 |
93 | __AVR_ATmega32u4__
94 | __AVR_ATmega32U4__
95 | _VMDEBUG=1
96 | ARDUINO=101
97 | ARDUINO_MAIN
98 | F_CPU=16000000L
99 | __AVR__
100 | __cplusplus
101 |
102 |
103 |
104 |
105 | C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino
106 | C:\Program Files (x86)\Arduino\hardware\arduino\variants\micro
107 | C:\Program Files (x86)\Arduino\libraries\SPI
108 | C:\Program Files (x86)\Arduino\libraries\SPI\utility
109 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended
110 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended\utility
111 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input
112 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\utility
113 | C:\Program Files (x86)\Arduino\libraries
114 | C:\Program Files (x86)\Arduino\hardware\arduino\libraries
115 | C:\Program Files (x86)\Visual Micro\Visual Micro for Arduino\Micro Platforms\default\debuggers
116 | D:\Arduino_workspace\arduino-thinkpad\libraries
117 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\
118 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\
119 | c:\program files (x86)\arduino\hardware\tools\avr\avr\
120 | c:\program files (x86)\arduino\hardware\tools\avr\lib\gcc\avr\4.3.2\include\
121 |
122 |
123 |
124 |
125 | Optimize (-O1)
126 | True
127 | True
128 | Default (-g2)
129 | True
130 | -include=arduino.h
131 | <segmentname>=<address>, for example .boot=0xff
132 | Default (-Wa,-g)
133 |
134 |
135 |
136 |
137 | COM10
138 |
139 |
140 |
141 |
142 |
143 |
144 | True
145 | True
146 | True
147 | True
148 | True
149 | True
150 |
151 |
152 | __AVR_ATmega32u4__
153 | __AVR_ATmega32U4__
154 | _VMDEBUG=1
155 | ARDUINO=101
156 | ARDUINO_MAIN
157 | F_CPU=16000000L
158 | __AVR__
159 | __cplusplus
160 |
161 |
162 |
163 |
164 | C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino
165 | C:\Program Files (x86)\Arduino\hardware\arduino\variants\micro
166 | C:\Program Files (x86)\Arduino\libraries\SPI
167 | C:\Program Files (x86)\Arduino\libraries\SPI\utility
168 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended
169 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended\utility
170 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input
171 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\utility
172 | C:\Program Files (x86)\Arduino\libraries
173 | C:\Program Files (x86)\Arduino\hardware\arduino\libraries
174 | C:\Program Files (x86)\Visual Micro\Visual Micro for Arduino\Micro Platforms\default\debuggers
175 | D:\Arduino_workspace\arduino-thinkpad\libraries
176 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\
177 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\
178 | c:\program files (x86)\arduino\hardware\tools\avr\avr\
179 | c:\program files (x86)\arduino\hardware\tools\avr\lib\gcc\avr\4.3.2\include\
180 |
181 |
182 | Optimize (-O1)
183 | True
184 | True
185 | Default (-g2)
186 | True
187 | -std=gnu99 -include=arduino.h
188 | True
189 | True
190 |
191 |
192 | __AVR_ATmega32u4__
193 | __AVR_ATmega32U4__
194 | _VMDEBUG=1
195 | ARDUINO=101
196 | ARDUINO_MAIN
197 | F_CPU=16000000L
198 | __AVR__
199 | __cplusplus
200 |
201 |
202 |
203 |
204 | C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino
205 | C:\Program Files (x86)\Arduino\hardware\arduino\variants\micro
206 | C:\Program Files (x86)\Arduino\libraries\SPI
207 | C:\Program Files (x86)\Arduino\libraries\SPI\utility
208 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended
209 | D:\Arduino_workspace\arduino-thinkpad\libraries\TrackPointExtended\utility
210 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input
211 | D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\utility
212 | C:\Program Files (x86)\Arduino\libraries
213 | C:\Program Files (x86)\Arduino\hardware\arduino\libraries
214 | C:\Program Files (x86)\Visual Micro\Visual Micro for Arduino\Micro Platforms\default\debuggers
215 | D:\Arduino_workspace\arduino-thinkpad\libraries
216 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\
217 | c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\
218 | c:\program files (x86)\arduino\hardware\tools\avr\avr\
219 | c:\program files (x86)\arduino\hardware\tools\avr\lib\gcc\avr\4.3.2\include\
220 |
221 |
222 |
223 |
224 | Optimize (-O1)
225 | True
226 | True
227 | Default (-g2)
228 | True
229 | -include=arduino.h
230 | <segmentname>=<address>, for example .boot=0xff
231 | Default (-Wa,-g)
232 |
233 |
234 |
235 |
236 | COM10
237 |
238 |
239 |
240 |
241 |
242 | compile
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 | compile
251 |
252 |
253 |
254 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.ino:
--------------------------------------------------------------------------------
1 | /*
2 | Arduino sketch for ThinkPad T60 keyboard with TrackPoint
3 | Written for Arduino Micro, using:
4 | - MCP23S17 for columns inputs
5 | - CD4017 for rows outputs
6 | Can be adapted to any ThinkPad keyboards that share the same receptacle
7 |
8 | Coded in Atmel Studio 6 with VisualMicro.
9 |
10 | Created by CONG NGUYEN (26/04/2014)
11 | */
12 |
13 | #include
14 | #include
15 | //Libraries
16 | #include
17 | #include
18 |
19 | //Bits definitions
20 | #define BIT0 (0x0001)
21 | #define BIT1 (0x0002)
22 | #define BIT2 (0x0004)
23 | #define BIT3 (0x0008)
24 | #define BIT4 (0x0010)
25 | #define BIT5 (0x0020)
26 | #define BIT6 (0x0040)
27 | #define BIT7 (0x0080)
28 |
29 | //Extra keycode definitions
30 | #define KEY_VOLUME_UP 0
31 | #define KEY_VOLUME_DOWN 0
32 | #define KEY_MUTE 0
33 | #define KEY_PREV_FILE 0
34 | #define KEY_NEXT_FILE 0
35 |
36 | #define KEY_PAUSE 0xD0
37 | #define KEY_PRINT_SCREEN 0xCE
38 | #define KEY_SCROLL_LOCK 0xCF
39 | #define KEYPAD_NUMLOCK 0xDB
40 | #define KEYPAD_0 0xEA
41 | #define KEYPAD_1 0xE1
42 | #define KEYPAD_2 0xE2
43 | #define KEYPAD_3 0xE3
44 | #define KEYPAD_4 0xE4
45 | #define KEYPAD_5 0xE5
46 | #define KEYPAD_6 0xE6
47 | #define KEYPAD_7 0xE7
48 | #define KEYPAD_8 0xE8
49 | #define KEYPAD_9 0xE9
50 | #define KEYPAD_SLASH 0xDC
51 | #define KEYPAD_ASTERISK 0xDD
52 | #define KEYPAD_MINUS 0xDE
53 | #define KEYPAD_PLUS 0xDF
54 | #define KEYPAD_ENTER 0xE0
55 | #define KEYPAD_PERIOD 0xEB
56 |
57 | //GPIO according to schematic
58 | #define FN_PIN 7
59 | #define CLOCK4017 9 //PB5
60 | #define RESET4017 8 //PB4
61 | #define TP_Data 3 //PD0
62 | #define TP_Clock 2 //PD1
63 | #define TP_Reset 6 //PD7
64 | #define TP_Clock_Int 1 //if using stream mode, define clock pin's corresponding interrupt number
65 |
66 | //TrackPoint variables
67 | TrackPoint trackpoint(TP_Clock, TP_Data, TP_Reset, false);
68 | void sendButtonState(uint8_t);
69 |
70 | //Keyboard scanning related
71 | MCP23S17_InputsOnly cols;
72 | volatile int row = 0;
73 | volatile int col = 0;
74 | void rowsClock(void);
75 | void rowsReset(void);
76 |
77 | /***** KEYBOARD MATRIX WITHOUT NUMLOCK *******/
78 | uint8_t MATRIX_WITHOUT_NUMLOCK[8][16] = {
79 | {'`',KEY_F1,KEY_F2,'5','6','=',KEY_F8,'-',KEY_F9,KEY_INSERT,KEY_DELETE,KEY_PAGE_UP,KEY_HOME,0,0,KEY_LEFT_CTRL},
80 | {'1','2','3','4','7','8','9','0',KEY_F10,KEY_F12,KEY_F11,KEY_PAGE_DOWN,KEY_END,KEY_PRINT_SCREEN,0,0},
81 | {'q','w','e','r','u','i','o','p',0,0,KEY_VOLUME_UP,KEY_LEFT_GUI,0,KEY_SCROLL_LOCK,0,0},
82 | {KEY_TAB,KEY_CAPS_LOCK,KEY_F3,'t','y',']',KEY_F7,'[',KEY_BACKSPACE,0,KEY_VOLUME_DOWN,0,0,0,KEY_LEFT_SHIFT,0},
83 | {'a','s','d','f','j','k','l',';','\\',0,KEY_MUTE,KEY_RIGHT_GUI,0,0,0,0},
84 | {KEY_ESC,0,KEY_F4,'g','h',KEY_F6,0,'\'',KEY_F5,0,0,0,KEY_UP_ARROW,KEY_LEFT_ALT,0,0},
85 | {'z','x','c','v','m',',','.',0,KEY_RETURN,0,0,KEY_PREV_FILE,KEY_PAUSE,0,KEY_RIGHT_SHIFT,KEY_RIGHT_CTRL},
86 | {0,0,0,'b','n',0,0,'/',' ',KEY_RIGHT_ARROW,KEY_DOWN_ARROW,KEY_NEXT_FILE,KEY_LEFT_ARROW,KEY_RIGHT_ALT,0,0}
87 | };
88 | /******* SKETCH STARTS HERE ********/
89 | void initGPIO(void);
90 |
91 | void setup()
92 | {
93 | //MCP23S17 has inputs by default
94 | pinMode(FN_PIN, INPUT_PULLUP); //active low
95 | pinMode(CLOCK4017, OUTPUT);
96 | pinMode(RESET4017, OUTPUT);
97 |
98 | Keyboard.begin();
99 | Mouse.begin();
100 |
101 | Serial.begin(9600);
102 |
103 | trackpoint.reset();
104 | trackpoint.setSensitivityFactor(0xC0);
105 | trackpoint.setRemoteMode();
106 | }
107 |
108 | void loop()
109 | {
110 | //TrackPoint in report mode
111 | TrackPoint::DataReport d = trackpoint.readData();
112 | if (d.state & (1 << 2)) { // middle button down => scroll
113 | Mouse.move(0, 0, d.y);
114 | } else {
115 | Mouse.move(d.x, -d.y, 0);
116 | sendButtonState(d.state);
117 | }
118 |
119 | //Keyboard scanning
120 | if(row < 8) {
121 | for(col = 0; col < 16; col++) {
122 | if(cols.readPin(col)) {
123 | //current key is pressed
124 | Keyboard.press(MATRIX_WITHOUT_NUMLOCK[row][col]);
125 | } else {
126 | //current key is not pressed
127 | Keyboard.release(MATRIX_WITHOUT_NUMLOCK[row][col]);
128 | }
129 | }
130 | row++;
131 | rowsClock();
132 | } else {
133 | row = 0;
134 | rowsReset();
135 | }
136 | }
137 |
138 | /******* FUNCTIONS IMPLEMENTATIONS **********/
139 |
140 | /*
141 | Direct port manipulation to increase speed
142 | CLOCK4017 9 //PB5
143 | RESET4017 8 //PB4
144 | */
145 |
146 | void rowsClock(void) {
147 | PORTB |= BIT5;
148 | PORTB &= ~BIT5;
149 | }
150 |
151 | void rowsReset(void) {
152 | PORTB |= BIT4;
153 | PORTB &= ~BIT4;
154 | }
155 |
156 | //From Felix Klee's Trackpoint library
157 | void sendButtonState(byte state) {
158 | static const char hidStates[] = {MOUSE_LEFT, MOUSE_RIGHT};
159 |
160 | for (byte i = 0; i < sizeof(hidStates); i++) {
161 | byte hidState = hidStates[i];
162 | if (state & (1 << i)) {
163 | Mouse.press(hidState);
164 | } else if (Mouse.isPressed(hidState)) {
165 | Mouse.release(hidState);
166 | }
167 | }
168 | }
169 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.sdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rampadc/arduino-thinkpadkb-usb/13fd1dcdcd75948983f26547601e0926bbfc65b3/MicroThinkPadAdapter/MicroThinkPadAdapter.sdf
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.21005.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MicroThinkPadAdapter", "MicroThinkPadAdapter.vcxproj", "{DD80BD09-CA74-4707-91BF-85622753C487}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Win32 = Debug|Win32
11 | Release|Win32 = Release|Win32
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {DD80BD09-CA74-4707-91BF-85622753C487}.Debug|Win32.ActiveCfg = Debug|Win32
15 | {DD80BD09-CA74-4707-91BF-85622753C487}.Debug|Win32.Build.0 = Debug|Win32
16 | {DD80BD09-CA74-4707-91BF-85622753C487}.Release|Win32.ActiveCfg = Release|Win32
17 | {DD80BD09-CA74-4707-91BF-85622753C487}.Release|Win32.Build.0 = Release|Win32
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.v12.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rampadc/arduino-thinkpadkb-usb/13fd1dcdcd75948983f26547601e0926bbfc65b3/MicroThinkPadAdapter/MicroThinkPadAdapter.v12.suo
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 |
14 | {DD80BD09-CA74-4707-91BF-85622753C487}
15 | MicroThinkPadAdapter
16 |
17 |
18 |
19 | Application
20 | true
21 | v120
22 | MultiByte
23 |
24 |
25 | Application
26 | false
27 | v120
28 | true
29 | MultiByte
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | Level3
45 | Disabled
46 | true
47 | C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\variants\standard;D:\Arduino_workspace\arduino-thinkpad\libraries\CD4017;D:\Arduino_workspace\arduino-thinkpad\libraries\CD4017\utility;D:\Arduino_workspace\arduino-thinkpad\libraries\Trackpoint;D:\Arduino_workspace\arduino-thinkpad\libraries\Trackpoint\utility;C:\Program Files (x86)\Arduino\libraries\SPI;C:\Program Files (x86)\Arduino\libraries\SPI\utility;D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input;D:\Arduino_workspace\arduino-thinkpad\libraries\MCP23S17_Input\utility;C:\Program Files (x86)\Arduino\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\libraries;C:\Program Files (x86)\Visual Micro\Visual Micro for Arduino\Micro Platforms\default\debuggers;D:\Arduino_workspace\arduino-thinkpad\libraries;c:\program files (x86)\arduino\hardware\tools\avr\avr\include\;c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\;c:\program files (x86)\arduino\hardware\tools\avr\avr\;c:\program files (x86)\arduino\hardware\tools\avr\lib\gcc\avr\4.3.2\include\;%(AdditionalIncludeDirectories)
48 | D:\Arduino_workspace\arduino-thinkpad\MicroThinkPadAdapter\Visual Micro\.MicroThinkPadAdapter.vsarduino.h;%(ForcedIncludeFiles)
49 | true
50 | __AVR_ATmega32u4__;__AVR_ATmega32U4__;ARDUINO=105;ARDUINO_MAIN;__AVR__;__avr__;F_CPU=16000000L;__cplusplus;%(PreprocessorDefinitions)
51 |
52 |
53 | true
54 |
55 |
56 |
57 |
58 | Level3
59 | MaxSpeed
60 | true
61 | true
62 | true
63 |
64 |
65 | true
66 | true
67 | true
68 |
69 |
70 |
71 |
72 | CppCode
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/MicroThinkPadAdapter.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Header Files
23 |
24 |
25 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Visual Micro/.MicroThinkPadAdapter.vsarduino.h:
--------------------------------------------------------------------------------
1 | /*
2 | Editor: http://www.visualmicro.com
3 | visual micro and the arduino ide ignore this code during compilation. this code is automatically maintained by visualmicro, manual changes to this file will be overwritten
4 | the contents of the Visual Micro sketch sub folder can be deleted prior to publishing a project
5 | all non-arduino files created by visual micro and all visual studio project or solution files can be freely deleted and are not required to compile a sketch (do not delete your own code!).
6 | note: debugger breakpoints are stored in '.sln' or '.asln' files, knowledge of last uploaded breakpoints is stored in the upload.vmps.xml file. Both files are required to continue a previous debug session without needing to compile and upload again
7 |
8 | Hardware: Arduino Micro, Platform=avr, Package=arduino
9 | */
10 |
11 | #define __AVR_ATmega32u4__
12 | #define __AVR_ATmega32U4__
13 | #define _VMDEBUG 1
14 | #define ARDUINO 101
15 | #define ARDUINO_MAIN
16 | #define F_CPU 16000000L
17 | #define __AVR__
18 | #define __cplusplus
19 | extern "C" void __cxa_pure_virtual() {;}
20 |
21 | //
22 | //
23 | void rowsClock(void);
24 | void rowsReset(void);
25 | void sendButtonState(byte state);
26 |
27 | #include "C:\Program Files (x86)\Arduino\hardware\arduino\variants\micro\pins_arduino.h"
28 | #include "C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\arduino.h"
29 | #include "D:\CONG\Documents\GitHub\arduino-thinkpadkb-usb\MicroThinkPadAdapter\MicroThinkPadAdapter.ino"
30 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Visual Micro/Compile.vmps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | 101 Serial.begin(9600);
14 | 102
15 | 103 trackpoint.reset();
16 | 104 trackpoint.setSensitivityFactor(0xC0);
17 | 105 trackpoint.setRemoteMode();
18 | 106 }
19 | 107
20 | -->108 void loop()
21 | 109 {
22 | 110 //TrackPoint in stream mode
23 | 111 TrackPoint::DataReport d = trackpoint.readData();
24 | 112 if (d.state & (1 << 2)) { // middle button down => scroll
25 | 113 Mouse.move(0, 0, d.y);
26 | 114 } else {
27 | 115 Mouse.move(d.x, -d.y, 0);
28 | 116 sendButtonState(d.state);
29 | 117 }
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Visual Micro/Configuration.Debug.vmps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/MicroThinkPadAdapter/Visual Micro/Upload.vmps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | 101 Serial.begin(9600);
14 | 102
15 | 103 trackpoint.reset();
16 | 104 trackpoint.setSensitivityFactor(0xC0);
17 | 105 trackpoint.setRemoteMode();
18 | 106 }
19 | 107
20 | -->108 void loop()
21 | 109 {
22 | 110 //TrackPoint in stream mode
23 | 111 TrackPoint::DataReport d = trackpoint.readData();
24 | 112 if (d.state & (1 << 2)) { // middle button down => scroll
25 | 113 Mouse.move(0, 0, d.y);
26 | 114 } else {
27 | 115 Mouse.move(d.x, -d.y, 0);
28 | 116 sendButtonState(d.state);
29 | 117 }
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Introduction
2 | Using an Arduino Micro as a USB adapter for ThinkPad T60 keyboard with TrackPoint support.
3 | Supports different keyboards from the ThinkPad family that shares the same receptacle as T60.
4 |
5 | Photo: Modular approach that splits the circuit into the microcontroller side and receptacle + supporting ICs side.
6 | 
7 |
8 | Part list:
9 | + 1x Arduino Micro
10 | + 16x 0805 10k resistors
11 | + 1x MCP23S17-E/SO
12 | + 1x CD74HC4017EE4
13 |
14 | # Files
15 |
16 | Library: TrackPointExtended.h, TrackPointExtended.cpp, MCP23S17_InputsOnly.h, MCP23S17_InputsOnly.cpp
17 |
18 | Example: MicroThinkPadAdapter.ino
19 |
20 | # License
21 |
22 | Copyright 2014 CONG NGUYEN
23 |
24 | Licensed under the Apache License, Version 2.0 (the "License");
25 | you may not use this file except in compliance with the License.
26 | You may obtain a copy of the License at
27 |
28 | http://www.apache.org/licenses/LICENSE-2.0
29 |
30 | Unless required by applicable law or agreed to in writing, software
31 | distributed under the License is distributed on an "AS IS" BASIS,
32 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33 | See the License for the specific language governing permissions and
34 | limitations under the License.
--------------------------------------------------------------------------------
/doc/AdapterTest.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rampadc/arduino-thinkpadkb-usb/13fd1dcdcd75948983f26547601e0926bbfc65b3/doc/AdapterTest.jpg
--------------------------------------------------------------------------------
/libraries/MCP23S17_Input/MCP23S17_InputsOnly.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * MCP23S17_InputsOnly.cpp
3 | *
4 | * Created: 2/12/2013 5:05:47 PM
5 | * Author: CONG
6 | */
7 |
8 |
9 | #include "MCP23S17_InputsOnly.h"
10 | #include
11 | #include
12 | #include
13 |
14 | /*
15 | By default:
16 | - Use byte mode and bank 0
17 | - All pins are inputs
18 |
19 | Pin A0 is connected to ~CS of MCP23S17
20 | */
21 |
22 | // default constructor
23 | MCP23S17_InputsOnly::MCP23S17_InputsOnly()
24 | {
25 | pinMode(A0, OUTPUT);
26 | SPI.setClockDivider(CLOCKDIV);
27 | SPI.begin();
28 |
29 | } //MCP23S17_InputsOnly
30 |
31 | // default destructor
32 | MCP23S17_InputsOnly::~MCP23S17_InputsOnly()
33 | {
34 | } //~MCP23S17_InputsOnly
35 |
36 | int MCP23S17_InputsOnly::readPin(int pin) {
37 | if(pin < 0 || pin > 15) return 0;
38 |
39 | uint8_t portState = 0;
40 | uint8_t gpio = (pin < 8 ? GPIOA : GPIOB);
41 | PORTF &= ~BIT7;
42 | SPI.transfer(OPCODER);
43 | SPI.transfer(gpio);
44 | portState = SPI.transfer(0);
45 | //Serial.println(portState, BIN);
46 | PORTF |= BIT7;
47 |
48 | pin = (pin < 8 ? pin : pin-8);
49 | portState &= (1 << pin); //get that bit only but with all the trailing zeroes if there are any
50 |
51 | return (portState > 0 ? 1 : 0);
52 | }
53 |
54 | void MCP23S17_InputsOnly::writeData(uint8_t addr, uint8_t bData) {
55 | PORTF &= ~BIT7;
56 | SPI.transfer(OPCODEW);
57 | SPI.transfer(addr);
58 | SPI.transfer(bData);
59 | PORTF |= BIT7;
60 | }
--------------------------------------------------------------------------------
/libraries/MCP23S17_Input/MCP23S17_InputsOnly.h:
--------------------------------------------------------------------------------
1 | /*
2 | * MCP23S17_InputsOnly.h
3 | *
4 | * Created: 2/12/2013 5:05:48 PM
5 | * Author: CONG
6 | */
7 |
8 |
9 | #ifndef __MCP23S17_INPUTSONLY_H__
10 | #define __MCP23S17_INPUTSONLY_H__
11 |
12 | //MCP's related
13 | #define OPCODEW 0x40
14 | #define OPCODER 0x41
15 | #define GPIOA 0x12
16 | #define GPIOB 0x13
17 | #define BIT7 0x80
18 |
19 | //SPI related
20 | #define CLOCKDIV 2
21 |
22 | class MCP23S17_InputsOnly
23 | {
24 | //functions
25 | public:
26 | MCP23S17_InputsOnly();
27 | ~MCP23S17_InputsOnly();
28 | int readPin(int pin); //from pin 0 to pin 15
29 | protected:
30 | private:
31 | void writeData(unsigned char addr, unsigned char bData);
32 | }; //MCP23S17_InputsOnly
33 |
34 | #endif //__MCP23S17_INPUTSONLY_H__
35 |
--------------------------------------------------------------------------------
/libraries/TrackPointExtended/TrackPoint.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * TrackPoint.cpp
3 | *
4 | * Created: 14/03/2014 12:50:47 AM
5 | * Author: CONG NGUYEN
6 | *
7 | * Expanding on Felix Kee's TrackPoint class: https://github.com/feklee/arduino-trackpoint
8 | * Removed onesCounter and incomingParity
9 | */
10 |
11 |
12 | #include "TrackPoint.h"
13 |
14 | // default constructor
15 | TrackPoint::TrackPoint(uint8_t clockPin, uint8_t dataPin, uint8_t resetPin, uint8_t streamMode) : _clkPin(clockPin), _dataPin(dataPin), _resetPin(resetPin)
16 | {
17 | if(streamMode) {
18 | bitcount = 0;
19 | n = 0;
20 | val = 0;
21 | incoming = 0;
22 | counter = 0;
23 | dataAvailable = 0;
24 | }
25 |
26 | gohi(_clkPin);
27 | gohi(_dataPin);
28 | } //TrackPoint
29 |
30 | // default destructor
31 | TrackPoint::~TrackPoint()
32 | {
33 | } //~TrackPoint
34 |
35 | uint8_t TrackPoint::reportAvailable(void) {
36 | return dataAvailable;
37 | }
38 |
39 | TrackPoint::DataReport TrackPoint::getStreamReport(void) {
40 | return data;
41 | }
42 |
43 | void TrackPoint::getDataBit(void) {
44 | dataAvailable = 0;
45 |
46 | val = (digitalRead(_dataPin) ? 1 : 0);
47 | n = bitcount-1;
48 | if(n <= 7) {
49 | incoming |= (val << n);
50 | }
51 | bitcount++;
52 |
53 | if(bitcount == 11) {
54 | switch(counter) {
55 | case 0:
56 | data.state = incoming;
57 | counter++;
58 | break;
59 |
60 | case 1:
61 | data.x = incoming;
62 | counter++;
63 | break;
64 |
65 | case 2:
66 | data.y = incoming;
67 | counter = 0;
68 | dataAvailable = 1;
69 | break;
70 | }
71 | bitcount = 0;
72 | incoming = 0;
73 | }
74 | }
75 |
76 | // errors are ignored
77 | void TrackPoint::writeToRamLocation(uint8_t location, uint8_t value) {
78 | write(0xe2);
79 | read(); // ACK
80 | write(0x81);
81 | read(); // ACK
82 | write(location);
83 | read(); // ACK
84 | write(value);
85 | read(); // ACK
86 | }
87 |
88 | // undefined in case of error
89 | uint8_t TrackPoint::readFromRamLocation(uint8_t location) {
90 | write(0xe2);
91 | read(); // ACK
92 | write(0x80);
93 | read(); // ACK
94 | write(location);
95 | read(); // ACK
96 | return read();
97 | }
98 |
99 | void TrackPoint::setSensitivityFactor(uint8_t sensitivityFactor) {
100 | writeToRamLocation(0x4a, sensitivityFactor);
101 | }
102 |
103 | uint8_t TrackPoint::sensitivityFactor() {
104 | return readFromRamLocation(0x4a);
105 | }
106 |
107 | void TrackPoint::setRemoteMode() {
108 | write(0xf0);
109 | read();
110 | }
111 |
112 | void TrackPoint::setStreamMode() {
113 | write(0xea);
114 | read();
115 | write(0xf4); //enable report
116 | read();
117 |
118 | //put mouse into idle mode, ready to send
119 | gohi(_clkPin);
120 | gohi(_dataPin);
121 | }
122 |
123 | void TrackPoint::reset() {
124 | pinMode(_resetPin, OUTPUT);
125 | digitalWrite(_resetPin, HIGH);
126 | delay(2000); // empirical value
127 | digitalWrite(_resetPin, LOW);
128 | }
129 |
130 | TrackPoint::DataReport TrackPoint::readData() {
131 | DataReport d;
132 |
133 | write(0xeb);
134 | read(); // ACK
135 | d.state = read();
136 | d.x = read();
137 | d.y = read();
138 |
139 | return d;
140 | }
141 |
142 | // Comments and code below mostly unchanged from `ps2.h`.
143 |
144 | /*
145 | * according to some code I saw, these functions will
146 | * correctly set the clock and data pins for
147 | * various conditions. It's done this way so you don't need
148 | * pullup resistors.
149 | */
150 | void TrackPoint::gohi(uint8_t pin) {
151 | pinMode(pin, INPUT);
152 | digitalWrite(pin, HIGH);
153 | }
154 |
155 | void TrackPoint::golo(uint8_t pin) {
156 | pinMode(pin, OUTPUT);
157 | digitalWrite(pin, LOW);
158 | }
159 |
160 | /* write a uint8_t to the PS2 device */
161 | void TrackPoint::write(uint8_t data) {
162 | uint8_t i;
163 | uint8_t parity = 1;
164 |
165 | gohi(_dataPin);
166 | gohi(_clkPin);
167 | delayMicroseconds(300);
168 | golo(_clkPin);
169 | delayMicroseconds(300);
170 | golo(_dataPin);
171 | delayMicroseconds(10);
172 | gohi(_clkPin); // start bit
173 | /* wait for device to take control of clock */
174 | while (digitalRead(_clkPin) == HIGH)
175 | ; // this loop intentionally left blank
176 | // clear to send data
177 | for (i=0; i < 8; i++)
178 | {
179 | if (data & 0x01)
180 | {
181 | gohi(_dataPin);
182 | } else {
183 | golo(_dataPin);
184 | }
185 | // wait for clock
186 | while (digitalRead(_clkPin) == LOW)
187 | ;
188 | while (digitalRead(_clkPin) == HIGH)
189 | ;
190 | parity = parity ^ (data & 0x01);
191 | data = data >> 1;
192 | }
193 | // parity bit
194 | if (parity)
195 | {
196 | gohi(_dataPin);
197 | } else {
198 | golo(_dataPin);
199 | }
200 | // clock cycle - like ack.
201 | while (digitalRead(_clkPin) == LOW)
202 | ;
203 | while (digitalRead(_clkPin) == HIGH)
204 | ;
205 | // stop bit
206 | gohi(_dataPin);
207 | delayMicroseconds(50);
208 | while (digitalRead(_clkPin) == HIGH)
209 | ;
210 | // mode switch
211 | while ((digitalRead(_clkPin) == LOW) || (digitalRead(_dataPin) == LOW))
212 | ;
213 | // hold up incoming data
214 | golo(_clkPin);
215 | }
216 |
217 |
218 | /*
219 | * read a uint8_t of data from the ps2 device. Ignores parity.
220 | */
221 | uint8_t TrackPoint::read(void) {
222 | uint8_t data = 0x00;
223 | uint8_t i;
224 | uint8_t bit = 0x01;
225 |
226 | // start clock
227 | gohi(_clkPin);
228 | gohi(_dataPin);
229 | delayMicroseconds(50);
230 | while (digitalRead(_clkPin) == HIGH)
231 | ;
232 | delayMicroseconds(5); // not sure why.
233 | while (digitalRead(_clkPin) == LOW)
234 | ; // eat start bit
235 | for (i=0; i < 8; i++)
236 | {
237 | while (digitalRead(_clkPin) == HIGH)
238 | ;
239 | if (digitalRead(_dataPin) == HIGH)
240 | {
241 | data = data | bit;
242 | }
243 | while (digitalRead(_clkPin) == LOW)
244 | ;
245 | bit = bit << 1;
246 | }
247 | // eat parity bit, ignore it.
248 | while (digitalRead(_clkPin) == HIGH)
249 | ;
250 | while (digitalRead(_clkPin) == LOW)
251 | ;
252 | // eat stop bit
253 | while (digitalRead(_clkPin) == HIGH)
254 | ;
255 | while (digitalRead(_clkPin) == LOW)
256 | ;
257 | golo(_clkPin); // hold incoming data
258 |
259 | return data;
260 | }
--------------------------------------------------------------------------------
/libraries/TrackPointExtended/TrackPoint.h:
--------------------------------------------------------------------------------
1 | /*
2 | * TrackPoint.h
3 | *
4 | * Created: 14/03/2014 12:50:48 AM
5 | * Author: CONG NGUYEN
6 | *
7 | * Expanding on Felix Kee's TrackPoint class: https://github.com/feklee/arduino-trackpoint
8 | *
9 | * Interface with a TrackPoint, supports stream mode using interrupt
10 | * Parity checks slow down move movements thus are removed
11 | */
12 |
13 |
14 | #ifndef __TRACKPOINTEXTENDED_H__
15 | #define __TRACKPOINTEXTENDED_H__
16 |
17 | #include "Arduino.h"
18 |
19 | class TrackPoint
20 | {
21 | public:
22 | struct DataReport {
23 | uint8_t state;
24 | int8_t x;
25 | int8_t y;
26 | };
27 |
28 | void write(uint8_t data);
29 | uint8_t read(void);
30 | uint8_t readFromRamLocation(uint8_t);
31 | void writeToRamLocation(uint8_t, uint8_t);
32 | void setSensitivityFactor(uint8_t);
33 | uint8_t sensitivityFactor();
34 | void setRemoteMode();
35 | void reset();
36 | DataReport readData();
37 |
38 | TrackPoint(uint8_t, uint8_t, uint8_t, uint8_t);
39 | ~TrackPoint();
40 |
41 | void getDataBit(void);
42 | uint8_t reportAvailable(void);
43 | void setStreamMode(void);
44 | DataReport getStreamReport(void);
45 |
46 | protected:
47 |
48 | private:
49 | TrackPoint( const TrackPoint &c );
50 | TrackPoint& operator=( const TrackPoint &c );
51 | void gohi(uint8_t pin);
52 | void golo(uint8_t pin);
53 |
54 | //TrackPoint pins
55 | uint8_t _clkPin;
56 | uint8_t _dataPin;
57 | uint8_t _resetPin;
58 |
59 | //PS2 data
60 | DataReport data;
61 |
62 | //getDataBit() variables
63 | volatile uint8_t bitcount;
64 | volatile uint8_t n;
65 | volatile uint8_t val;
66 | volatile uint8_t incoming;
67 | volatile uint8_t counter;
68 | volatile uint8_t dataAvailable;
69 |
70 | }; //TrackPoint
71 |
72 | #endif //__TRACKPOINT_H__
73 |
--------------------------------------------------------------------------------