+++ /dev/null
-ADB keyboard handle id
-======================
-0x01 Apple Standard keyboard M0116 ANSI
-0x01 Apple Desktop Bus keyboard 658-4081 ANSI
-0x02 Apple Extended Keyboard M0115 ANSI
-0x02 Apple Extended Keyboard II M3501 ANSI
-0x03 Logical id for Extended Protocol
-0x10 Apple Adjustable keyboard M1242 ANSI
-
-
-Adjustable Keyboard media key
-=============================
-Media key part has different address than the main keyboard(0x02).
-
-Device Address: 0x07(Appliances/Misc devices)
-Handler ID: 0x02
-
-Scan Codes
-----------
-Media key ADB Code Code in Matix
------------------------------------------
-Volume Up: 0x03 0x48
-Volume Down: 0x02 0x49
-Mute: 0x01 0x4a
-Mic: 0x00 0x42
-
-As for these keys raw ADB codes are translate into logical codes in matrix.
# project specific files
SRC ?= matrix.c \
- led.c \
adb.c
CONFIG_H = config.h
# Atmel DFU loader 4096 for TMK Converter rev.1/rev.2
# LUFA bootloader 4096
# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
+BOOTLOADER_SIZE ?= 4096
+OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE)
# Build Options
# comment out to disable the options.
#
-#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-#NKRO_ENABLE = yes # USB Nkey Rollover
-ADB_MOUSE_ENABLE = yes
-#UNIMAP_ENABLE = yes
-#ACTIONMAP_ENABLE = yes # Use 16bit actionmap instead of 8bit keymap
-#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor
+BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
+CONSOLE_ENABLE ?= yes # Console for debug(+400)
+COMMAND_ENABLE ?= yes # Commands for debug and configuration
+NKRO_ENABLE ?= no # USB Nkey Rollover
+ADB_MOUSE_ENABLE ?= yes # ADB Mouse support
+UNIMAP_ENABLE ?= yes # Use unimap
+ACTIONMAP_ENABLE ?= no # Use 16bit actionmap instead of 8bit keymap
+KEYMAP_SECTION_ENABLE ?= yes # fixed address keymap for keymap editor
# ADB Mice need acceleration for todays much bigger screens.
-OPT_DEFS += -DADB_MOUSE_MAXACC=8
+ADB_MOUSE_MAXACC ?= 8
+OPT_DEFS += -DADB_MOUSE_MAXACC=$(ADB_MOUSE_MAXACC)
# Optimize size but this may cause error "relocation truncated to fit"
#
# Keymap file
#
-ifdef UNIMAP_ENABLE
+ifeq (yes,$(strip $(UNIMAP_ENABLE)))
KEYMAP_FILE = unimap
else
- ifdef ACTIONMAP_ENABLE
+ ifeq (yes,$(strip $(ACTIONMAP_ENABLE)))
KEYMAP_FILE = actionmap
else
KEYMAP_FILE = keymap
+++ /dev/null
-TARGET = adb_usb_teensy
-MCU = atmega32u4
-include Makefile
+++ /dev/null
-TARGET = adb_usb_rev1_unimap
-UNIMAP_ENABLE = yes
-KEYMAP_SECTION_ENABLE = yes
-MCU = atmega32u4
-include Makefile
+++ /dev/null
-TARGET = adb_usb_rev2_unimap
-UNIMAP_ENABLE = yes
-KEYMAP_SECTION_ENABLE = yes
-MCU = atmega32u2
-include Makefile
ADB to USB keyboard converter
=============================
-This firmware converts Apple ADB keyboard protocol to USB, you can use it to plug old ADB keyboard into modern computer. It works on TMK ADB-USB Converter, PJRC Teensy2.0 and other USB AVR MCU(ATMega32U4, AT90USB64/128 or etc) and needs more than 10KB flash at least.
+This firmware converts Apple ADB keyboard/mouse protocol to USB, you can use it to plug old ADB keyboard/mouse into modern computer. It works on prebuilt TMK ADB-USB Converter or generic dev board with USB AVR MCU(ATMega32U4/2) like Teensy2.0.
-Discuss here: http://geekhack.org/showwiki.php?title=Island:14290
+Discuss about this here: http://geekhack.org/showwiki.php?title=Island:14290
-You can buy a TMK converter here: https://geekhack.org/index.php?topic=72052.0
+Prebuilt TMK ADB-USB converter is available here: https://geekhack.org/index.php?topic=72052.0
Wiring
------
-Connect ADB pins to controller just by 3 lines(Vcc, GND, Data). By default Data line uses port PD0.
+If you build this yourself you have to solder some wires.
+Connect ADB pins to controller just by 3 lines(Vcc, GND, Data) at least. By default Data line uses port PD0.
+This is not needed but you can connect PSW to PD1 optionally.
ADB female socket from the front:
,--_--.
/ o4 3o \ 1: DATA
- | o2 1o | 2: Power SW
+ | o2 1o | 2: PSW(Power SW)
- === - 3: VCC
`-___-' 4: GND
Pull-up resister:
- Keyboard Conveter
+ Keyboard AVR MCU
,------.
5V------+------|VCC |
| | |
[R] | |
| | |
- Signal--+------|PD0 |
+ DATA----+------|PD0 |
| |
GND------------|GND |
`------'
------------------------------------------
See [doc/build.md](../../tmk_core/doc/build.md).
-To build firmware and program TMK Converter run these commands:
+To build firmware and program TMK ADB-USB Converter run these commands:
$ make -f Makefile clean
- $ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)]
- $ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)] dfu
+ $ make -f Makefile [KEYMAP=yourname]
+ $ make -f Makefile [KEYMAP=yourname] dfu
-You can select keymap with optional `KEYMAP=` (plain is default). Push button on the converter before running `dfu` target.
+You can select keymap name with optional `KEYMAP=` ('plain' is default name). Push button on the converter before running `dfu` target.
-Use **Makefile.rev1** for old TMK Converter rev.1 and **Makefile.teensy** for Teensy2.0 instead of **Makefile**. For TMK Converter rev.2 just use **Makefile**.
-
-To program Teensy you can use `teensy` target:
-
- $ make -f Makefile.teensy [KEYMAP=(plain|ansi|iso|hasu)] teensy
+Use **Makefile.rev1** for old TMK Converter rev.1 and Teensy2.0 instead of **Makefile**.
Keymap
------
-You can change a keymap by editing code of keymap_[plain|ansi|iso|hasu|yours].c.
+You can change keymap by editing code of unimap_plain.c directly, or copy it to your own keymap file like unimap_yourname.c and edit the file.
How to define the keymap is probably obvious. You can find key symbols in common/keycode.h. And see [doc/keymap.md](../../tmk_core/doc/keymap.md) for more detail.
Magic command
-------------
-To get help press `h` holding Magic key. Magic key is `Power key`.
+To get help message in hid_listen press `h` holding Magic key. Magic key is `Power key`.
+
+https://github.com/tmk/tmk_keyboard/wiki#debug
Locking CapsLock
Apple Extended Keyboard and Apple Extended Keyboard II can discriminate both side
modifiers except for GUI key(Windows/Command).
-And most ADB keyboard has no diodes in its matrix so they are not NKRO,
+And most of ADB keyboards have no diodes in its matrix so they are not NKRO unfortunately,
though ADB protocol itself supports it. See protocol/adb.c for more info.
-If keyboard has ISO layout you may have swapped keys problem, see this for the detail.
-
-https://github.com/tmk/tmk_keyboard/issues/35
-
EOF
+++ /dev/null
-/*
-Copyright 2011 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <util/delay.h>
-#include "adb.h"
-#include "led.h"
-
-
-void led_set(uint8_t usb_led)
-{
- adb_host_kbd_led(ADB_ADDR_KEYBOARD, ~usb_led);
-}
matrix[row] |= (1<<col);
}
}
+
+void led_set(uint8_t usb_led)
+{
+ adb_host_kbd_led(ADB_ADDR_KEYBOARD, ~usb_led);
+}
}
#endif
-
-
-/*
-ADB ANSI/ISO Keymapping Note
-============================
-ANSI
-,----------- ----------.
-| *a| 1| 2 =|Backspa|
-|----------- ----------|
-|Tab | Q| | ]| *c|
-|----------- ----------|
-|CapsLo| A| '|Return |
-|----------- ----------|
-|Shift | Shift |
-`----------- ----------'
-
-ISO
-,----------- ----------.
-| *a| 1| 2 =|Backspa|
-|----------- ----------|
-|Tab | Q| | ]|Retur|
-|----------- -----` |
-|CapsLo| A| '| *c| |
-|----------- ----------|
-|Shif| *b| Shift |
-`----------- ----------'
-
-ADB Keyboard scan code:
- ADB scan code USB usage
- ------------- ---------
-Key ANSI ISO ANSI ISO
----------------------------------------------
-*a 0x32 0x0A 0x35 0x35
-*b ---- 0x32 ---- 0x64
-*c 0x2A 0x2A 0x31 0x31(or 0x32)
-
-
-TMK ADB-USB mapping:
-ADB USB(ANSI) USB(ISO)
----------------------------------
-0x32 0x35 0x64
-0x0A ---- 0x35
-0x2A 0x31 0x31(or 0x32)
-
-Note that mappings of ADB code 0x32 are diffrent between ANSI and ISO keyboard.
-https://github.com/tmk/tmk_keyboard/issues/35
- */