adb_usb: Clean repository

This commit is contained in:
tmk 2019-06-21 14:40:09 +09:00
parent 7a7d9f64b5
commit daf1ef1db2
13 changed files with 40 additions and 153 deletions

View file

@ -1,27 +0,0 @@
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.

View file

@ -9,7 +9,6 @@ TARGET_DIR ?= .
# project specific files
SRC ?= matrix.c \
led.c \
adb.c
CONFIG_H = config.h
@ -64,26 +63,27 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# 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"
@ -93,10 +93,10 @@ OPT_DEFS += -DADB_MOUSE_MAXACC=8
#
# 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

View file

@ -1,3 +0,0 @@
TARGET = adb_usb_teensy
MCU = atmega32u4
include Makefile

View file

@ -1,5 +0,0 @@
TARGET = adb_usb_rev1_unimap
UNIMAP_ENABLE = yes
KEYMAP_SECTION_ENABLE = yes
MCU = atmega32u4
include Makefile

View file

@ -1,5 +0,0 @@
TARGET = adb_usb_rev2_unimap
UNIMAP_ENABLE = yes
KEYMAP_SECTION_ENABLE = yes
MCU = atmega32u2
include Makefile

View file

@ -1,10 +1,10 @@
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
@ -21,13 +21,15 @@ https://github.com/tmk/tmk_keyboard/labels/NOTE
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
@ -36,13 +38,13 @@ https://github.com/tmk/tmk_keyboard/wiki/FAQ#pull-up-resistor
Pull-up resister:
Keyboard Conveter
Keyboard AVR MCU
,------.
5V------+------|VCC |
| | |
[R] | |
| | |
Signal--+------|PD0 |
DATA----+------|PD0 |
| |
GND------------|GND |
`------'
@ -58,31 +60,29 @@ Build firmware and Program microcontroller
------------------------------------------
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
@ -106,11 +106,7 @@ you will always see left control even if you press right control key.
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

View file

@ -1,27 +0,0 @@
/*
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);
}

View file

@ -337,3 +337,8 @@ static void register_key(uint8_t key)
matrix[row] |= (1<<col);
}
}
void led_set(uint8_t usb_led)
{
adb_host_kbd_led(ADB_ADDR_KEYBOARD, ~usb_led);
}

View file

@ -243,50 +243,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
}
#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
*/