﻿3.20
USB-to-ADB fixes:
- The Wombat now supports having multiple USB keyboards and mice connected
  simultaneously. The input is combined from all devices of the same type.
- Optimized the firmware to avoid missing ADB commands during periods of busy
  bus activity.
ADB-to-USB fixes:
- Two ADB mice can be used at once.
- Fixed a bug with handling of the Kensington Turbo Mouse 5.0 buttons.
- Kensington Turbo Mouse 4.0 now works better.
- Fixed the keyboard and mouse pausing every few seconds with some combinations
  of ADB devices.

3.19
USB-to-ADB fixes:
- More keyboards work, including the 8BitDo Retro Mechanical Keyboard, some QMK
  keyboards, the Corsair K70 CORE, and devices that combine a keyboard and mouse
  in one like Arduino and CircuitPython projects.
- Fixed a crash when more than 8 USB hub ports are connected. Extra ports are
  now ignored.
- Help command T now shows the new keyboard layout, and G shows the current one.
ADB-to-USB fixes:
- ADB keyboards and mice now work again after being unplugged and plugged back
  in, or plugged in after the Wombat starts.
- Two ADB keyboards can be used at once.
- The ADB power key now sends the USB Power key code by default (remappable).
- The right button of MacAlly 2-button ADB mice now works.
- Fixed Caps Lock sometimes getting out of sync with the computer.

3.18 = USB-to-ADB mode fixes:
- Fixed USB keyboards and mice sometimes not working after unplugging one and
  plugging in another.
- Fixed a memory bug that could cause erratic behavior when several USB devices
  are connected at once, such as through a hub.
- More memory is available for USB devices, so more devices and more complex
  devices can be connected at once.

3.17 = USB-to-ADB mode fixes:
- Version numbering is simplified: 3.17 is the version after 0.3.16.
- Keyboards with QMK firmware, Keychron, Keyboardio, and most VIA and custom
  keyboards now work better.
- Fixed problems that could occur when using two USB devices that both have
  keyboard and mouse functions, like a gaming mouse with macro buttons plus a
  keyboard with a mouse function. Previously sometimes the keyboard or the mouse
  didn't work, depending on which USB port each was plugged into.
- Fixed keys not working on some gaming keyboards with several USB interfaces,
  including the Logitech G810 and some Razer keyboards, and the mouse not
  working on some gaming mice like the Corsair Scimitar.
- Fixed mouse buttons and scroll wheel not working on some mice and KVMs.
Also:
- In ADB-to-USB mode, the Wombat's USB device version now matches the firmware
  version.

0.3.16 = USB-to-ADB mode fixes:
- Fixed the handling of key combinations including Control, Command, Apple,
  and/or the Reset/Power key during a cold boot or reset event. This should
  resolve reported problems resetting the Apple IIgs and other computers,
  entering self-test modes or boot-time firmware menus, etc.
- Fixed bugs that sometimes resulted in keys being lost, or arriving in the
  wrong order, or getting stuck down.
- The Wombat's power switch will now be ignored if it's seen as being down for
  more than 10 seconds. Normal operation will return after the key is released.
  This may help for some computers like the Portable that internally close the
  power switch circuit on the ADB bus.
- Fixed several Caps Lock consistency bugs, where the computer and keyboard saw
  different Caps Lock states.

0.3.15 = ADB-to-USB mode fixes:
- The Wombat no longer prevents the computer from activating its screensaver or
  going to sleep.
- Fixed the keyboard not working on computers that read the keyboard but never
  the mouse, such as the Linux LUKS disk password prompt, and possibly some BIOS
  screens and KVM switches.
- Fixed occasional lost letters and letters coming out in the wrong order when
  typing fast.
- Fixed several Caps Lock consistency bugs.

0.3.14
USB-to-ADB fixes:
- Fixed a timer rollover bug that occurred roughly once per hour, and that could
  cause stuck keys, device address collisions, and other problems. Pro tip: 2^32
  microseconds is not actually very long.
- Fixed problem with the scroll wheel's simulated arrow key presses sometimes
  getting stuck.
- Fixed several ADB protocol bugs that were probably causing issues for some
  people.
ADB-to-USB fixes:
- Keys that were tapped very quickly sometimes got stuck down. Fixed.
- Fixed the keypad equals (=) key.
- Some ISO keyboards were not getting detected correctly. Fixed.

0.3.13 = USB-to-ADB fixes:
- Fixed bugs that could cause the Wombat to misbehave when communicating with
  USB keyboards and mice with complex or unusual HID report descriptors. This
  included mice declaring more than 12 buttons (e.g. the Logitech Bolt
  receiver), keyboards reporting more than 6 keys at once, and devices with very
  large descriptors.

0.3.12 = USB-to-ADB fixes:
- Added support for USB keyboards that send reports with a bitmap of key state
  data instead of a key array. This affected the Logitech Bolt fw version 5.01,
  and probably MANY other types of keyboards.
- The mouse scroll wheel and right-click behaviors will now work even if no
  keyboard is attached.

0.3.11 = USB-to-ADB fixes:
- Fixed a serious bug that caused USB devices to be ignored if their report
  descriptors were larger than 255 bytes. This affected MANY types of keyboards
  and mice with more complex functions, extra buttons, etc.
- Fixed several areas where USB communications could potentially misbehave or
  stall.

0.3.10
- Added more troubleshooting information about attached USB devices when in
  USB-to-ADB mode for the Control-Shift-Capslock-I help command. All the
  detected keyboard and mouse devices are listed, but only the devices at index
  1 are used. If your device is listed here but is not at index 1, another
  device of the same type has taken priority and your device is being ignored.
  If your device is not listed here at all, its HID report descriptor probably
  couldn't be parsed by the Wombat's firmware.

0.3.9
- Added support for changing the Wombat's built-in mouse scaling for USB-to-ADB
  mode. When the mouse wheel button is pressed and held for more than 0.5
  seconds, it switches between scale factors of 16/8/4/2/1. This is helpful for
  some USB mice where the default number of counts per inch is outside the range
  where the computer OS's mouse settings can compensate.
- Suppressed HID_ERR_BadLogicalMax while parsing the USB HID report descriptor.
  This enables some devices with errors in their report descriptors to work,
  including the Razer Basilisk v2 mouse.

0.3.8
- Fixes a problem with the latching caps lock key in ADB-to-USB mode, if you
  half-press caps lock without engaging the latch.

0.3.7
- Fixes problems with ADB devices using a Logitech chipset

0.3.6
- Fixes issue with keyup events for the Power Key

0.3.5
- Added support for remapping the Power Key for ADB-to-USB mode
- Added an option to disable 'mouse wheel arrow keys' behavior for USB-to-ADB
  mode, using the key mapping tool
- Enabled separate keycodes for left/right side modifier keys for Apple Extended
  Keyboard II

0.3.4
- Restored the USB device descriptor tables from version 0.3.2
- Changed the device's USB PID, to avoid any possible OS confusion if a
  previously-seen VID:PID unexpectedly changes its USB descriptor.

0.3.3
- Fixed caps lock LED handling in ADB-to-USB mode. Resolves problem with AEK II
  on modern MacOS systems
- Reversed the positions of the keyboard and mouse in the USB device descriptor
  tables for ADB-to-USB mode
- Changed the device's USB PID, to avoid any possible OS confusion if a
  previously-seen VID:PID unexpectedly changes its USB descriptor.

0.3.2
- Fixed USB-to-ADB compatibility problems with Apple Magic Keyboard A1644, and
  other USB keyboards with a Report ID in their Report Data

0.3.1
- Reorganized the USB device descriptor tables and HID reports that are used by
  ADB-to-USB mode. This should make the Wombat more compatible with operating
  systems like MacOS 9 that didn't like the old method of combining mouse and
  keyboard HID data in a single interface/endpoint. This required major code
  changes, so watch out for any possible new bugs.
- Changed the device's USB PID, to avoid any possible OS confusion if a
  previously-seen VID:PID unexpectedly changes its USB descriptor.

0.3.0
- Added support for custom keycode mapping tables. See keymap tool at
  https://www.bigmessowires.com/wombat-keymap.html

0.2.2
- Added factory test mode for manufacturing

0.2.1
- ADB-to-USB support for Kensington Turbo Mouse 4.0

0.2.0
- Changes to support multi-button mice, in both conversion directions
- USB mouse wheel movements send up/down arrow events to the host. Works well
  for open file dialogs and document scrolling.
- USB mouse right button can operate in one of two modes:
  1. Macintosh mode (default): right click sends control + left click event to
     the host. Works for context menus in Mac OS 8 and later.
  2. NeXT mode: right click sends a true right click event to the host.
  Toggle between Macintosh and NeXT modes by clicking the USB mouse wheel button
  (button 3).
- ADB mice and trackballs with more than one button can now use the extra
  buttons under Windows, OSX, or Linux. Tested with a 4-button Kensington Turbo
  Mouse 5 model 64210. Other multi-button ADB devices using extended Apple mouse
  protocol should work too. ADB devices using proprietary protocols may not
  work.

0.1.16
- Rebranding: updated name references to "USB Wombat"

0.1.15
- The state of the right mouse button is now passed in the standard protocol for
  USB-to-ADB mode. Is this useful for anything? Maybe works on NeXT?
- Fixed a bug that prevented ADB keyboard caps lock from functioning with macOS
  Sierra
- Fixed initilization of the ADB keyboard LEDs

0.1.14
- Changed the keymap types to US-GENERIC (ANSI QWERTY), ISO-GENERIC (UK and
  other non-US QWERTY), ISO-FR (AZERTY), and ISO-DE (QWERTZ)
- New help command Control-Shift-Capslock-G shows the current keymap type
- Fixed the output from help commands to appear correctly when using a
  non-QWERTY keyboard
- Fixed the key 3rd-right from L on Apple-brand USB ISO keyboards (UK-QWERTY
  \| key, FR-AZERTY `£, DE-QWERTZ #')

When using an ISO keyboard (USB or ADB), Retro USB needs to be set to keymap
type ISO. This will happen automatically at startup if an Apple-brand ISO
keyboard is detected (untested). If you have a non-Apple ISO keyboard, you'll
need to switch to ISO mode manually with Ctrl-Shift-Capslock-T.

Key mappings for some symbol keys may be incorrect when using a PC-type USB ISO
keyboard. This is normal, and is due to layout differences between Apple and
PC-type USB ISO keyboards. For best results, use an Apple-brand ISO keyboard or
any brand of US-ANSI keyboard.

The three variants of keymap type ISO are all equivalent for the purposes of
normal keyboard usage (typing stuff), and only affect the way output from help
commands is displayed for non-QWERTY keyboards. For normal keyboard typing,
*any* ISO keyboard will work in the ISO-GENERIC mode: Danish, Estonian, Spanish,
Swiss-German, etc.

0.1.12
- Adds support for Retro USB hardware version 1.1. Earlier firmware won't work
  with board revision 1.1.

0.1.11
- Fixed Ctrl-Shift-Capslock-I help command (displays keyboard/mouse ID) in
  USB-to-ADB mode

0.1.10
- Fixed a bug in ADB-to-USB mode that could cause missed keyboard events if the
  ADB mouse is moved while typing

0.1.9
- Fixed a bug that sometimes caused device initializations to fail when using
  multiple cascaded hubs (including keyboards with built-in hubs)
- Disabled debug logging that was accidentally left in 0.1.8

0.1.8
- Added support for ISO keyboards, commonly used outside the USA. This should
  fix the key mapping for the ^ or @ key (the key to the left of 1) and the <>
  key (the key to the right of the left shift). Mostly untested since I don't
  have any ISO keyboards.
- Keymap type can be cycled between ANSI, ISO, and JIS (currently
  non-functional) with the new help command Ctrl-Shift-Capslock-T
- The keymap type is automatically set to ISO at startup if an Apple-brand ISO
  keyboard is detected (untested). If you have a non-Apple ISO keyboard, you'll
  need to switch to ISO manually with Ctrl-Shift-Capslock-T.
- Single-function USB devices are now prioritized over composite devices.
  Prevents a mouse with a keyboard macro feature from usurping the role of
  keyboard.
- New help command shows the USB vid:pid or ADB handler ID of the keyboard and
  mouse: Ctrl-Shift-Capslock-I
- Disabled HID report descriptor parser's error check for report items with
  count = 0. Some real USB devices do this, like the Logitech RX 250 mouse.
- Added 250ms delay at startup in ADB-to-USB mode, before attempting any
  external communication

If you have an ISO keyboard, and you've previously used Retro USB with firmware
earlier than 0.1.8 on an OSX Mac, you'll need to delete the OSX keyboard
preferences to make it "forget" Retro USB. Delete the file
/Library/Preferences/com.apple.keyboardtype.plist, then restart. If you don't do
this, your key mappings may be incorrect.

0.1.7
- Permanently enables USB composite device support
- Increases mouse speed by 20% in USB-to-ADB mode

0.1.6 experimental
- Enables experimental support for USB composite devices, such as many wireless
  keyboard/mouse combos. Don't use this unless you're sure you need it, there
  are likely bugs.
- Fixes a bug introduced in 0.1.3 that broke the text output from help commands

0.1.5
- LED A now illuminates when there’s a working ADB or USB connection to the host
  computer. LED B blinks when there’s keyboard or mouse activity.
- F13 now functions as an ADB power key in standby mode, just like PRINT SCREEN.
  Some USB keyboards don’t have a PRINT SCREEN key, some don’t have F13, so you
  can’t please everybody.
- Special ADB keycodes for the right-side shift, control, and alt keys are no
  longer sent unless the host computer specifically requests them. This fixes
  some weirdness with these keys on the Apple IIGS at the BASIC prompt.

0.1.3
- Recompiled to use updated bootloader

0.1.2
- first release
