Skip to content

Commit

Permalink
Enhance README.md with project overview, wiring details, and keyboard…
Browse files Browse the repository at this point in the history
… layout image
  • Loading branch information
arvvoid committed Nov 8, 2024
1 parent e7fdd9b commit b354c3c
Showing 1 changed file with 18 additions and 82 deletions.
100 changes: 18 additions & 82 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Amiga 500 Keyboard - Arduino Leonardo

# Amiga 500 Keyboard - Arduino Leonardo Wiring and Key Mappings
Welcome to the Amiga 500 Keyboard interfacing project! This guide will help you connect and map the iconic Amiga 500 keyboard to an Arduino Leonardo, allowing you to bring new life to this classic piece of hardware. By following the instructions provided, you can retrofit the Amiga 500 keyboard for modern applications while preserving its unique layout and feel.

This section describes the wiring for connecting the Amiga 500 keyboard to an Arduino Leonardo, including the functions of each special key, particularly when used with the **Help** key.

---
For a demonstration of the original Amiga 500 keyboard in action, visit the [Amiga Undead GitHub repository](https://github.com/arvvoid/amiga.undead).

## Wiring Information

This section describes the wiring for connecting the Amiga 500 keyboard to an Arduino Leonardo, including the functions of each special key, particularly when used with the **Help** key.

---
To connect the Amiga 500 keyboard to the Arduino Leonardo, refer to the following table:

| Connector Pin | Function | Wire Color | Arduino Leonardo IO Pin |
Expand All @@ -31,91 +33,18 @@ To connect the Amiga 500 keyboard to the Arduino Leonardo, refer to the followin

---

<h1>Amiga 500 Keyboard Layout</h1>

<table>
<tr>
<td>Esc<br>(0x45)</td><td>F1<br>(0x50)</td><td>F2<br>(0x51)</td><td>F3<br>(0x52)</td>
<td>F4<br>(0x53)</td><td>F5<br>(0x54)</td><td>F6<br>(0x55)</td><td>F7<br>(0x56)</td>
<td>F8<br>(0x57)</td><td>F9<br>(0x58)</td><td>F10<br>(0x59)</td>
</tr>
</table>

<table>
<tr>
<td>` ~<br>(0x00)</td><td>1 !<br>(0x01)</td><td>2 @<br>(0x02)</td><td>3 #<br>(0x03)</td>
<td>4 $<br>(0x04)</td><td>5 %<br>(0x05)</td><td>6 ^<br>(0x06)</td><td>7 &<br>(0x07)</td>
<td>8 *<br>(0x08)</td><td>9 (<br>(0x09)</td><td>0 )<br>(0x0A)</td><td>- _<br>(0x0B)</td>
<td class="wide">Backspace<br>(0x41)</td>
</tr>
</table>

<table>
<tr>
<td>Tab<br>(0x42)</td><td>Q<br>(0x10)</td><td>W<br>(0x11)</td><td>E<br>(0x12)</td>
<td>R<br>(0x13)</td><td>T<br>(0x14)</td><td>Y<br>(0x15)</td><td>U<br>(0x16)</td>
<td>I<br>(0x17)</td><td>O<br>(0x18)</td><td>P<br>(0x19)</td><td>[ {<br>(0x1A)</td><td>] }<br>(0x1B)</td>
</tr>
</table>

<table>
<tr>
<td>Ctrl<br>(0x63)</td><td>Caps Lock<br>(0x62)</td><td>A<br>(0x20)</td><td>S<br>(0x21)</td>
<td>D<br>(0x22)</td><td>F<br>(0x23)</td><td>G<br>(0x24)</td><td>H<br>(0x25)</td>
<td>J<br>(0x26)</td><td>K<br>(0x27)</td><td>L<br>(0x28)</td><td>; :<br>(0x29)</td><td>' "<br>(0x2A)</td><td>Return<br>(0x44)</td>
</tr>
</table>

<table>
<tr>
<td>Shift<br>(0x60)</td><td>Z<br>(0x31)</td><td>X<br>(0x32)</td><td>C<br>(0x33)</td>
<td>V<br>(0x34)</td><td>B<br>(0x35)</td><td>N<br>(0x36)</td><td>M<br>(0x37)</td>
<td>, <<br>(0x38)</td><td>. ><br>(0x39)</td><td>/ ?<br>(0x3A)</td><td>Shift<br>(0x61)</td>
</tr>
</table>

<table>
<tr>
<td>Alt<br>(0x64)</td><td>Amiga (Left)<br>(0x66)</td><td class="space" colspan="5">Space<br>(0x40)</td>
<td>Amiga (Right)<br>(0x67)</td><td>Alt<br>(0x64)</td><td>Del<br>(0x46)</td><td>Help<br>(0x5F)</td>
</tr>
</table>

<table>
<tr>
<td>↑<br>(0x4C)</td>
<td>←<br>(0x4F)</td><td>↓<br>(0x4D)</td><td>→<br>(0x4E)</td>
</tr>
</table>

<h2>Numeric Keypad</h2>

<table>
<tr>
<td>( NumL<br>(0x5A)</td><td>) ScrL<br>(0x5B)</td><td>/ <br>(0x5C)</td><td>* PtrSc<br>(0x5D)</td>
</tr>
<tr>
<td>7 Home<br>(0x3D)</td><td>8<br>(0x3E)</td><td>9 Pg Up<br>(0x3F)</td><td>- <br>(0x4A)</td>
</tr>
<tr>
<td>4<br>(0x2D)</td><td>5<br>(0x2E)</td><td>6<br>(0x2F)</td><td>+ <br>(0x5E)</td>
</tr>
<tr>
<td>1 End<br>(0x1D)</td><td>2<br>(0x1E)</td><td>3 Pg Dn<br>(0x1F)</td><td rowspan="2">Enter<br>(0x43)</td>
</tr>
<tr>
<td colspan="2">0 Ins<br>(0x0F)</td><td>. Del<br>(0x3C)</td>
</tr>
</table>
## Amiga 500 Keyboard Layout

![Amiga 500 Keyboard Layout](https://wiki.amigaos.net/w/images/7/79/DevFig7-1.png)

Credit: [AmigaOS Wiki](https://wiki.amigaos.net/wiki/Keyboard_Device)

## Help Key Special Functions

The **Help** key on the Amiga 500 keyboard serves as a modifier, enabling additional functions when combined with other keys. Below are the available combinations and their corresponding functions.
The **Help** key on the Amiga 500 keyboard is used as a modifier in this implementation, enabling additional functions when combined with other keys. Below are the available combinations and their corresponding functions.

| Key Combination | Function |
|-------------------------------|-------------------------|
| **Help** | Help function |
| **Help + F1** | F11 |
| **Help + F2** | F12 |
| **Help + NumL** (on numpad) | Toggle NumLock |
Expand Down Expand Up @@ -166,3 +95,10 @@ With **NumLock** turned **on**, these keys will function as standard numeric key
- **Help + F1 and F2**: Standard F11 and F12 functions.

This wiring and mapping setup allows the Amiga 500 keyboard to interface with the Arduino Leonardo effectively, bringing additional functionality with the **Help** key for multimedia and navigation control. The setup is ideal for retrofitting the keyboard for modern applications while retaining its unique layout and feel.

## TODO

- [ ] Implement 4 slots for macro recording and replay
- [ ] Add auto-repeat keys function
- [ ] Create some predefined useful macros

0 comments on commit b354c3c

Please sign in to comment.