Commit Graph

92 Commits

Author SHA1 Message Date
David Fenyes
d2d0c4c673 Add 3D model to Cherry MX footprint. 2020-03-16 13:35:41 -05:00
David Fenyes
6e21b96519 SOL keyboard adjustments
- Fixed position offset error in first three rows of the SOL keyboard

- moved key matrix interface connector to bottom of board so the parallel output
connector can be at the top of the keyboard.

- Adjusted size of mounting slots to accommodate #6 screws.

- ongoing clean up of traces.
2020-03-16 13:27:09 -05:00
David Fenyes
93349ed6e9 Add support for "hi-z when low" outputs
The apple 1 CLEAR input requires a high-impedance inactive state to avoid
conflict with the pin output of the 7404 at D12 (via CR4). So, to cover this
condition most generally, this patch changes the adds a Hi-Z when low physical
device for each output line, to complement the Hi-Z-when-high open collector
emulation. The nomenclature is changed from OUT*_OC (emulated open collector) to
OUT*_OPEN_HI and OUT*_OPEN_LO to indicate which condition gets the Hi-Z state.

- added the set() functions to the asdf_arch_atmega328p.[ch] files and applied
the above nomenclature.

- Added the set() functions to the asdf_physical.[ch] files and applied the
above nomenclature

- Modified the SCREEN_CLEAR device to PHYSICAL_OUT1_OPEN_LO in the apple2 and
ascii keymaps.

- Changed the RESET from PHYSICAL_OUT1_OC to PHYSICAL_OUT1_OPEN_HI in the apple2
and ascii keymaps.
2020-03-16 12:56:21 -05:00
David Fenyes
702ed71d60 add a clear-screen (ACTION_CLEAR) to the Shift-RESET combination. 2020-03-14 21:55:03 -05:00
Dave
68d2dfb115 Fix typo 2020-03-14 10:40:20 -05:00
Dave
04321da29c Fix typecast for key repeat timer, and some header fixes. 2020-03-14 10:37:43 -05:00
Dave
ed761974e6 Modifiers cleanup
- asdf_modifiers.[ch]: Replace asdf_modifier_shiftlock_activate() with
  asdf_modifier_shiftlock_on_activate() and
  asdf_modifier_shiftlock_toggle_activate().  Instead of a configurateion
  setting for shiftlock state to switch between SHIFTLOCK locks on, SHIFT turns
  off, vs SHIFTLOCK toggles, and SHIFT turns off, create two different
  SHIFTLOCK functions, one for each behavior, and allow the keymap to bind the
  desired function.

- asdf.h: replace ACTION_SHIFTLOCK with ACTION_SHIFTLOCK_ON and
  ACTION_SHIFTLOCK_TOGGLE.

- asdf.h: move start of ACTION codes from 0x80 to 0x90, since SOL-20 uses codes
  from 0x80-0x8f.

- asdf.c: test for ACTION code using (code > ASDF_ACTION) instead of (code &
  ASDF_ACTION), since ASDF_ACTION need not be a power of 2.

- asdf_modifiers.[ch] and other files: remove
  asdf_modifiers_shiftlock_deactivate() and
  asdf_modifiers_capslock_deactivate(), and any references to these functions
  since they are null functions anyway.
2020-03-14 00:11:29 -05:00
David Fenyes
aeaac665af Comment fixes for accurate descriptions. 2020-03-13 21:51:19 -05:00
David Fenyes
bd7b2167fb Removed extraneous definitions from Apple2 keymap file. 2020-03-13 00:51:31 -05:00
David Fenyes
abc462e711 Improved comments
- Added physical PCB key mapping for reference
- Make sure CAPSLOCK LED doesn't toggle in the ALL CAPS keymaps.
2020-03-13 00:48:05 -05:00
dfnr2
bf4bca76ed Update README.md 2020-03-13 00:09:08 -05:00
David Fenyes
8740ab3262 Comment and nomenclature cleanups
- fix and clarify various function header comments
- use consistent nomenclature for virtual layer.
2020-03-12 23:56:09 -05:00
David Fenyes
01008af937 Break out physical resource functions into asdf_physical.[ch]
- Split asdf_virtual.c into asdf_physical.c and asdf_virtual.c, moving the
functions that handle the physical resources to asdf_physical.c

- cleaned up nomenclature to be more consistent and less confusing.

- fixed keymap files and tests to use asdf_physical.c/h and new nomenclature.

- added asdf_physical.c to Makefiles.
2020-03-12 00:45:59 -05:00
David Fenyes
5c2235e79c Apple 2 map fixes
Set the lamp under the caps lock key (next to RETURN, not in apple2 layout) to
off.

Remove the right square bracket "]" from the apple 2 map.
2020-03-11 02:08:37 -05:00
David Fenyes
5bbdbe1c49 remove ACTION_RESET and ACTION_CLEAR
These are now implemented through virtual outputs, defined in the keymap files.
2020-03-11 01:54:41 -05:00
David Fenyes
72a84f0363 add safeguards for virtual device assignment
Disallow assignment of invalid virtual or real devices
Disallow assignment of a real devices that have already been assigned.
add unit test cases for virtual devices
2020-03-11 01:52:47 -05:00
David Fenyes
73e2760d94 Add more unit tests for virtual layer
- use macros to designate which keymaps are used to setup the tests.
2020-03-11 01:50:27 -05:00
David Fenyes
23237fae88 Added unit tests for virtual outputs. 2020-03-09 05:16:52 -05:00
David Fenyes
5a6a64dd55 Remove #include "asdf_actions.h" from asdf.c 2020-03-08 15:08:10 -05:00
David Fenyes
3940b96e0d Remove asdf_actions.[ch] files, no longer used. 2020-03-08 15:06:06 -05:00
David Fenyes
1b388bc591 Add virtual output device module (compiles without warning)
* Created test fixture for virtual outputs

* Added virtual output configuration to keymap definitions removed special
actions_send_reset() and actions_send_screenclear() functions, and replaced with
virtual output definitions.

* asdf_actions.c is removed from build.

* asdf_arch_atmega328p.c: added functions to set/clear each real output

* asdf_arch_atmega328p.c: added pulse_delay() function

* asdf_arch_test.c: added mock machinery to emulate outputs, test output
settings, and detect properly and improperly-formed pulses on the outputs.

* asdf_keymaps.c: allocate initialzer array. asdf_keymaps_select_keymap() calls
asdf_virtual_init() with initializer list for the keymap to set up the LEDS and
outputs every time a new keymap is selected.
2020-03-08 14:45:40 -05:00
David Fenyes
44a49afdae modify the SHIFTLOCK and CAPSLOCK led functions to use virtual LEDs 2020-03-06 13:46:27 -06:00
David Fenyes
cff7f6052a Changes for virtual LED and output mapping.
Rough first cut, have not yet tried to compile or test.
2020-03-06 13:24:03 -06:00
David Fenyes
63e733c18d Moved spare LED from caps-lock to @ (OSI shift LOCK)
This allows the keymap to determine which LED is used, rather than requiring the
decision to be hardwired in at the time of assembly.  For the OSI keyboard, the
LED could be placed on the SHIFTLOCK key, at the far right LED, or in the
CAPSLOCK position, which is just to the left of the RETURN and not otherwise
populated in the OSI layout.
2020-03-04 20:24:06 -06:00
David Fenyes
0bd2fa0330 Move DIP switch to row 8 (9th row) 2020-02-28 21:02:30 -06:00
David Fenyes
eb28b7b59f update screen shot to 2.4 2020-02-28 03:38:46 -06:00
David Fenyes
9550331adf PCB cleanups
- swap numbering of row select protection diodes for cleaner PCB labeling
- clarify labeling on GPIO pins on the MCU
- bump rev to 2.4 to indicate work in progress. Release will be 2.5.
2020-02-28 03:31:48 -06:00
David Fenyes
96a4c4f806 Fix font size for alphanumerics to 0.187" instead of 0.150" 2020-02-28 03:30:21 -06:00
David Fenyes
92816e64e8 Update README for ASCII interface 2020-02-28 03:24:48 -06:00
David Fenyes
8247e4224e fix typo 2020-02-21 00:29:12 -06:00
David Fenyes
d0648019d6 Add the Apple 2 keymaps. 2020-02-21 00:28:36 -06:00
David Fenyes
a598eaaee1 Add support for LEDs
- asdf_modifier.c: refactor CAPS LOCK setting and add LED setting
- asdf_arch_atmega328p.[ch]: add in LED definitions and functions
- add dummy asdf_arch_caps_led() function to arch files so test can compile.
2020-02-20 16:48:17 -06:00
David Fenyes
919a422d57 ASCII Keymap fixes
Updated keymap definitions to fit current keyboard matrix PCB rev (1.3).
2020-02-20 01:54:31 -06:00
David Fenyes
e53ca053c9 add ASCII NULL
- add ASCII_NULL to ascii table
- attach ASCII_NULL to ctrl-@
2020-02-20 01:25:21 -06:00
David Fenyes
b8cf2a339a formatting fix 2020-02-20 01:18:37 -06:00
David Fenyes
adc9f92b75 Update firmware README to mention multiple keymap support. 2020-02-20 01:15:24 -06:00
David Fenyes
6e462589cc Arch file support for 4-bit row address. 2020-02-19 23:32:14 -06:00
David Fenyes
a2a6be49a4 Add tests for multiple keymap support. 2020-02-19 23:31:17 -06:00
David Fenyes
16dc913f74 Added functions to change keymaps
- asdf_keymaps_select_keymap() function to select a keymap
- asdf_keymaps_select_n_{set|clear} functions to set a bit in keymap number,
  to support dip switches.
2020-02-19 23:28:14 -06:00
David Fenyes
97cda49e31 Modifications for multiple keymap support.
- Added C preprocessor macros to determine largest key matrix, so enough space
  may be allocated

- Cleaned up keymap definition macros for readability

- Created master keymap file to aggregate individual keymaps

- Modified make files to copy the specified master keymap
  to asdf_keymap_defs.h during build.

- Added template keymap file.
2020-02-19 23:22:23 -06:00
David Fenyes
c30deb3442 OUT3 is /RESET on Apple1 and Apple2 connectors.
OUT3 is RESET on both Apple 1 and Apple 2 connectors
Fix comment on the OUT1, OUT2, and OUT3 functions.
2020-02-16 12:55:53 -06:00
David Fenyes
cde8c54e6d removed extraneous hole outside keyboard outline. 2020-02-16 12:53:08 -06:00
David Fenyes
c4b26cbe86 Update rev to 1.4
pcb: ajust cutout to account for 1.5u wide LEFT SHIFT
schematic: minor text format cleanup
2020-01-31 23:22:21 -06:00
David Fenyes
5ba0c228aa Update the spacing comment to include spacing for keyboard cutout 2020-01-31 14:35:28 -06:00
David Fenyes
5a7ccc1c38 Adjustments to keyboard cutout outline on B.Fab layer. 2020-01-31 14:31:05 -06:00
David Fenyes
f5c8803586 Fixed details of keycap sets
- SOL-20: Specify SA profile, row 3
- classic: Specify SA profile, row 3 (incorrectly specified DSA)
- classic: add 8u spacebar.  whoops.
2020-01-30 16:59:23 -06:00
David Fenyes
ef068a1ae5 fix typo 2020-01-29 09:10:48 -06:00
David Fenyes
7839af3eba Add README.md file 2020-01-29 09:09:38 -06:00
David Fenyes
76098140ef Moved connector to top of board
Reduces required extra space at bottom of board.  Needed to fit in case.
2020-01-29 08:57:20 -06:00
David Fenyes
203ff558c0 Initial rev of SOL-20 keyboard PCB 2020-01-28 20:24:35 -06:00