qmk_firmware/keyboards/converter/palm_usb
James Young a03aa301de
Remove Full Bootmagic (#13846)
* disambiguate Bootmagic rules in keymaps

The files edited by this commit were added at a point in time where `BOOTMAGIC_ENABLE = yes` enabled full Bootmagic.

This commit edits the files to specify that full Bootmagic is intended.

* remove BOOTMAGIC_ENABLE=full setting

* unify commented BOOTMAGIC_ENABLE rules in keyboards

Explicitly sets `BOOTMAGIC_ENABLE = no` in keyboards where the rule was commented out.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#[ \t]*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-zA-Z]\+\).*;\1 = no       # Virtual DIP switch configuration;g' {} +
```

* remove commented Bootmagic rules from keymap/user level

Command:

```
find keyboards/ layouts/ users/ -type f -name 'rules.mk' -exec sed -i -e '/#.*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*/d' {} +
```

* update keyboard BOOTMAGIC_ENABLE rule formatting

Sets the formatting of BOOTMAGIC_ENABLE rules to `BOOTMAGIC_ENABLE = [value]`, without the inline comments (which will be replaced later).

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
```

* update keyboards' BOOTMAGIC_ENABLE settings

Updates keyboard `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = \)full;\1lite;g' '{}' +
```

* update keymap/user BOOTMAGIC_ENABLE settings

Updates keymap/user `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
```

* remove and replace inline comments in keyboards and keymap/user files

Removes and replaces the inline comments, which have been updated to read `Enable Bootmagic Lite`.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = lite\);\1     # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = yes\);\1      # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = no\);\1       # Enable Bootmagic Lite;g' '{}' +
```

* rename improperly named makefiles

Some files intended to be used as makefiles had improper names causing them to not be used as intended when building.

This commit corrects the filenames of the affected files.

* update renamed file with new rule formatting

* update QMK's template files

Updates QMK's `rules.mk` templates to use the new inline comment.

* update QMK Docs

- remove documentation of full Bootmagic
- update links to Bootmagic Lite doc
- add doc for Magic Keycodes

* rules.mk patch for coarse/ixora and coarse/vinta
2021-08-06 23:59:56 -07:00
..
stowaway remove keyboard_folder from info.json 2021-02-27 16:17:12 -08:00
config.h Remove DESCRIPTION, B-D (#11513) 2021-01-15 05:00:04 +11:00
matrix.c Remove legacy print backward compatiblitly (#11805) 2021-02-06 16:56:13 +00:00
readme.md [Keyboard] Fix formatting on keyboard to micro connection table (#5968) 2019-05-24 14:18:57 -07:00
rules.mk Remove Full Bootmagic (#13846) 2021-08-06 23:59:56 -07:00

Stowaway Serial keyboard to USB protocol converter

A converter for Palm Pilot era Stowaway serial keyboards.

Makes extensive use of the code from cy384. Ported to QMK by milestogo.

Hardware Supported: See hardware section below
Hardware Availability: self-built

Make example for this keyboard (after setting up your build environment):

make converter/palm_usb/stowaway:default

See the build environment setup and the make instructions for more information. Brand new to QMK? Start with our Complete Newbs Guide.

Hardware

Target MCU is ATMega32u4 but other USB capable AVRs should also work.

cy843 has a very specific way of wiring in order to fit all pins in sequence. It breaks qmk because the Arduino softserial library uses different pins from QMK.

I've wired the pro micro hardware as follows.

Label TX0 RX1 GND GND 2 3 4 5 6 7
Palm * GND VCC RX NC RTS NC DCD
MCU D1 D0 C6 E6

* The RX line from the keyboard should be conected to a ~10K ohm pull down resistor to ground. RX --|--3 10K | GND

Power management is not implemented yet, this just reboots the keyboard frequently.

Keyboards:

Think Outside Stowaway Keyboards There are at least 5 different versions of these keyboards out there.

Group 1: Palm 3, Palm 5 & HP Journada 540, and Compaq iPaq keyboards. These share the same RTS protocol, but with different pinouts for each device.

Group 2: Handspring keyboards. These don't do handshaking protocol, and use TTL signal. Set HANDSPRING to 1 in config.h

Group 3: IRDA models. Untested but theoretically serial.

Connectors

See https://github.com/cy384/ppk_usb for wiring & sample 3d printable sockets.

Only Palm3 wiring has been tested.
RXD pin is output from keyboard to MCU's RX.

Viewed from left to right with the keyboard in typing position.

Palm3: [NC, VCC, RXD, RTS, NC, NC, DCD, NC, NC, GND] Palm5: [NC, VCC, RXD, RTS, NC, NC, DCD, NC, NC, GND] (same order, different connector) Handspring: [VCC/TXD, NC, NC, NC, GND, NC, NC, RXD] Journada: [NC, NC, NC, GND, NC, RTS, NC, DTR/VCC, RXD, DCD, NC] [GND-IN, VCC-IN] Ipaq: [NC, NC, DTR/VCC, NC, NC, RTS, NC, RXD, DCD, GND, NC, NC]

Protocol

Signal: Asynchronous, Negative logic, 9600baud, No Flow control
Frame format: 1-Start bit, 8-Data bits, No-Parity, 1-Stop bit

AVR USART engine expects positive logic while stowaway keyboard signal is negative.
To use AVR UART engine you need external inverter in front of RX and TX pin.
Otherwise you can software serial routine to communicate the keyboard.

This converter uses software method, you doesn't need any inverter part.

Commands From System To Keyboard none

Commands From Keyboard To System

0xFA Reset/Ready Response(followed by 0xFD)

References

Todo

  • Test on anything but a palm 3 model keyboard.
  • Change all of the soft serial to match the new Helix based code so that it is easier to switch pins.
  • The driver should check for a keyboard that pressed the delete key then disconnected. Check every MAXDROP scans that the keyboard is there, and if not, clear the matrix. Not implemented yet, since matrix scan is so much faster than serial.