adb_usb: Clean repository
This commit is contained in:
parent
7a7d9f64b5
commit
daf1ef1db2
13 changed files with 40 additions and 153 deletions
|
|
@ -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.
|
|
||||||
|
|
@ -9,7 +9,6 @@ TARGET_DIR ?= .
|
||||||
|
|
||||||
# project specific files
|
# project specific files
|
||||||
SRC ?= matrix.c \
|
SRC ?= matrix.c \
|
||||||
led.c \
|
|
||||||
adb.c
|
adb.c
|
||||||
|
|
||||||
CONFIG_H = config.h
|
CONFIG_H = config.h
|
||||||
|
|
@ -64,26 +63,27 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
# Atmel DFU loader 4096 for TMK Converter rev.1/rev.2
|
# Atmel DFU loader 4096 for TMK Converter rev.1/rev.2
|
||||||
# LUFA bootloader 4096
|
# LUFA bootloader 4096
|
||||||
# USBaspLoader 2048
|
# USBaspLoader 2048
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
BOOTLOADER_SIZE ?= 4096
|
||||||
|
OPT_DEFS += -DBOOTLOADER_SIZE=$(BOOTLOADER_SIZE)
|
||||||
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
NKRO_ENABLE ?= no # USB Nkey Rollover
|
||||||
#NKRO_ENABLE = yes # USB Nkey Rollover
|
ADB_MOUSE_ENABLE ?= yes # ADB Mouse support
|
||||||
ADB_MOUSE_ENABLE = yes
|
UNIMAP_ENABLE ?= yes # Use unimap
|
||||||
#UNIMAP_ENABLE = yes
|
ACTIONMAP_ENABLE ?= no # Use 16bit actionmap instead of 8bit keymap
|
||||||
#ACTIONMAP_ENABLE = yes # Use 16bit actionmap instead of 8bit keymap
|
KEYMAP_SECTION_ENABLE ?= yes # fixed address keymap for keymap editor
|
||||||
#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor
|
|
||||||
|
|
||||||
# ADB Mice need acceleration for todays much bigger screens.
|
# 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"
|
# Optimize size but this may cause error "relocation truncated to fit"
|
||||||
|
|
@ -93,10 +93,10 @@ OPT_DEFS += -DADB_MOUSE_MAXACC=8
|
||||||
#
|
#
|
||||||
# Keymap file
|
# Keymap file
|
||||||
#
|
#
|
||||||
ifdef UNIMAP_ENABLE
|
ifeq (yes,$(strip $(UNIMAP_ENABLE)))
|
||||||
KEYMAP_FILE = unimap
|
KEYMAP_FILE = unimap
|
||||||
else
|
else
|
||||||
ifdef ACTIONMAP_ENABLE
|
ifeq (yes,$(strip $(ACTIONMAP_ENABLE)))
|
||||||
KEYMAP_FILE = actionmap
|
KEYMAP_FILE = actionmap
|
||||||
else
|
else
|
||||||
KEYMAP_FILE = keymap
|
KEYMAP_FILE = keymap
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
TARGET = adb_usb_teensy
|
|
||||||
MCU = atmega32u4
|
|
||||||
include Makefile
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
TARGET = adb_usb_rev1_unimap
|
|
||||||
UNIMAP_ENABLE = yes
|
|
||||||
KEYMAP_SECTION_ENABLE = yes
|
|
||||||
MCU = atmega32u4
|
|
||||||
include Makefile
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
TARGET = adb_usb_rev2_unimap
|
|
||||||
UNIMAP_ENABLE = yes
|
|
||||||
KEYMAP_SECTION_ENABLE = yes
|
|
||||||
MCU = atmega32u2
|
|
||||||
include Makefile
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
ADB to USB keyboard converter
|
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
|
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:
|
ADB female socket from the front:
|
||||||
|
|
||||||
,--_--.
|
,--_--.
|
||||||
/ o4 3o \ 1: DATA
|
/ o4 3o \ 1: DATA
|
||||||
| o2 1o | 2: Power SW
|
| o2 1o | 2: PSW(Power SW)
|
||||||
- === - 3: VCC
|
- === - 3: VCC
|
||||||
`-___-' 4: GND
|
`-___-' 4: GND
|
||||||
|
|
||||||
|
|
@ -36,13 +38,13 @@ https://github.com/tmk/tmk_keyboard/wiki/FAQ#pull-up-resistor
|
||||||
|
|
||||||
Pull-up resister:
|
Pull-up resister:
|
||||||
|
|
||||||
Keyboard Conveter
|
Keyboard AVR MCU
|
||||||
,------.
|
,------.
|
||||||
5V------+------|VCC |
|
5V------+------|VCC |
|
||||||
| | |
|
| | |
|
||||||
[R] | |
|
[R] | |
|
||||||
| | |
|
| | |
|
||||||
Signal--+------|PD0 |
|
DATA----+------|PD0 |
|
||||||
| |
|
| |
|
||||||
GND------------|GND |
|
GND------------|GND |
|
||||||
`------'
|
`------'
|
||||||
|
|
@ -58,31 +60,29 @@ Build firmware and Program microcontroller
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
See [doc/build.md](../../tmk_core/doc/build.md).
|
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 clean
|
||||||
$ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)]
|
$ make -f Makefile [KEYMAP=yourname]
|
||||||
$ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)] dfu
|
$ 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**.
|
Use **Makefile.rev1** for old TMK Converter rev.1 and Teensy2.0 instead of **Makefile**.
|
||||||
|
|
||||||
To program Teensy you can use `teensy` target:
|
|
||||||
|
|
||||||
$ make -f Makefile.teensy [KEYMAP=(plain|ansi|iso|hasu)] teensy
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Keymap
|
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.
|
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
|
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
|
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
|
Apple Extended Keyboard and Apple Extended Keyboard II can discriminate both side
|
||||||
modifiers except for GUI key(Windows/Command).
|
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.
|
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
|
EOF
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
@ -337,3 +337,8 @@ static void register_key(uint8_t key)
|
||||||
matrix[row] |= (1<<col);
|
matrix[row] |= (1<<col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void led_set(uint8_t usb_led)
|
||||||
|
{
|
||||||
|
adb_host_kbd_led(ADB_ADDR_KEYBOARD, ~usb_led);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -243,50 +243,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#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
|
|
||||||
*/
|
|
||||||
Loading…
Add table
Reference in a new issue