User:RDBrown/AAC Morse
- Lubin, Jim (2020). "Morse Codes for Computer Access".
- "Morse Code". Ace Centre (UK ACC Charity).
- "EZ Keys Morse Code Character Set". Jouse2 — User’s Guide. Revision 2.2a (PDF). Compusult Limited. 2008. pp. E-1 (p.75 in PDF). Document No. 01235-000.
- Jouse2 2008, F-1 (p.79 in PDF)
- Hajihassan, Milad (2019). "EasyMorse: A light weight Morse Arduino code library". GitHub.
- Anson, Denis K. (2018). "5. Input Strategies: Morse Strategies". Assitive Technology for People with Disabilies. ABC-CLIO. pp. 74–74. ISBN 978-1-4408-3512-4.
For people with severe disabilities, both one- and two-switch Morse can be difficult because both depend, to some extent, on timing. ... access products can also offer "three-switch Morse.". In three-switch Morse code, one switch signals dit, while another signals dah, just like two-switch Morse. But a third switch is used to indicate that the letter is complete. This removes the necessity of timing to send Morse code.
- King, Thomas W. (2000). Modern Morse code in rehabilitation and education: New applications in assistive technology. Allyn & Bacon. ISBN 9780205287512. OCLC 41070880.
- Oxer, Jonathan; Fryer, Chris (2020). "Mini Open Adaptive Controller". SuperHouse – via GitHub.
- Olliver, Vik (2019). "Microwriter: A reboot of the 80's Microwriter accessible chord keyboard done using an Arduino". GitHub.
- "Keyboard". Reference: Language: Functions: Usb. Arduino. 2022.
- "Mouse". Reference: Language: Functions: Usb. Arduino. 2022.
- "ESP8685 Datasheet: UltraLowPower SoC ... supporting ... (2.4 GHz WiFi) and Bluetooth 5 (LE)" (PDF). Espressif Systems. 2021.
{{cite web}}
: soft hyphen character in|title=
at position 25 (help)
- "morAce: Arduino/CircuitPython 1, 2, or 3 switch morse".
- "Adafruit Feather nRF52840 Express". – ARM Cortex M4 1 MB of FLASH and 256KB of SRAM
- "Adafruit ItsyBitsy nRF52840 Express — Bluetooth LE". Adafruit. This seems to use the same chip, so if the pinouts match, it might work since it is in stock.
morAce appears to be immediately usable, ... if the Adafruit Feather was in stock. Thanks to Jim Lubin for pointing it out.
The following is an attempt at the union of the Morse codes from Jim Lubin's list, EasyMorse (mostly the same) and the EZ Morse, tab separated. The JLE tag is for Jim Lubin/EasyMorse Mouse mode, EZN for EZ Morse Numeric Pad mode. The KEY_ values are from the Arduino Keyboard.h file mapping I think to the USB HID values. Where multiple keys must be sent, or another action taken, the list is enclosed in braces. The MOUSE_ & OPN_ values are yet to be enumerated. The leading 3-digit octal value encodes the Morse. Skip the most significant 1 bit, then the following bits are the Morse 0 for dot, 1 for dash, reading from the most significant down (left to right). This would seem to be the logical encoding, with octal being a bit easier to read than hex perhaps.
002 'e' JLE {MOUSE_REPEAT_OPN} EZN KEY_KP_1 "1 NumPad" 003 't' JLE {MOUSE_UP} EZN KEY_KP_2 "2 NumPad" 004 'i' JLE {MOUSE_LEFT} EZN KEY_KP_4 "4 NumPad" 005 'a' JLE {MOUSE_LEFT_CLICK} EZN KEY_KP_3 "3 NumPad" 006 'n' JLE {MOUSE_LEFT_CLICK_HOLD_TOGGLE} EZN KEY_KP_5 "5 NumPad" 007 KEY_BACKSPACE "Backspace" 1 {MOUSE_DOWN} EZN KEY_KP_6 "6_NumPad" 010 's' JLE {MOUSE_RIGHT} EZN KEY_KP_9 "9 NumPad" 011 'u' JLE {MOUSE_LEFT_DOUBLE_CLICK} EZN KEY_KP_8 "8 NumPad" 012 'r' EZN KEY_KP_ASTERISK "* NumPad" 013 'w' JLE {MOUSE_RIGHT_CLICK} EZN KEY_KP_7 "7 NumPad" 014 'd' JLE {MOUSE_RIGHT_CLICK_HOLD_TOGGLE} EZN KEY_KP_0 "0 NumPad" 015 'k' EZN KEY_KP_SLASH "/ NumPad" 016 'g' EZN KEY_KP_PLUS "+ NumPad" 017 'o' EZN KEY_KP_MINUS "- NumPad" 020 'h' 021 'v' 022 'f' 023 ' ' "Space ␣" JLE {MOUSE_RIGHT_DOUBLE_CLICK} !00C4 mouse-zoom-1 ..-- 024 'l' 025 KEY_RETURN "Enter" 026 'p' 027 'j' 030 'b' 031 'x' 032 KEY_LEFT_CTRL "Ctrl" 033 'y' 034 'z' 035 'q' 036 'c' 037 'm' EZN KEY_BACKSPACE "Backspace" 040 '5' 041 '4' 042 {OPN_Win_Group} EZ KEY_KP_ENTER 043 '3' 044 {OPN_Repeat} 046 '{' 047 '2' {MOUSE_ZOOM_8} 051 KEY_UP_ARROW "↑" 052 KEY_RIGHT_ARROW "Right Arrow →" 054 KEY_DOWN_ARROW "↓" 056 '-' 057 '1' 060 '6' 061 '+' 063 '*' 064 KEY_INSERT "Ins" 070 '7' 071 '}' 072 {KEY_LEFT_ALT,KEY_ESC} "Alt-Esc" 073 KEY_LEFT_ALT "Alt" 074 '8' 075 '=' 076 '9' 077 '0' 101 KEY_PAGE_UP "Page_Up" 102 '|' 103 '/' 104 KEY_PAGE_DOWN "Page_Down" 105 '%' 106 '"' 107 ')' 110 '\'' 111 KEY_PAUSE "Pause_Break" 114 '>' 116 '#' 117 '$' 120 '!' 124 KEY_LEFT_ARROW "← Left Arrow" 127 {OPN_Toggle_Repeat} 130 '[' 134 '&' 136 ':' 137 '.' 140 ',' 141 ';' 143 '^' 145 {OPN_Exit_Morse_Code} 147 ']' 154 KEY_DELETE "Del" 157 '?' 160 KEY_ESC "Esc" 161 KEY_LEFT_SHIFT "Shift" 163 '<' 164 KEY_SCROLL_LOCK "Scroll Lock" 166 KEY_PRINT_SCREEN "Print Screen" 167 '`' 170 '(' 171 '@' 172 {KEY_LEFT_SHIFT,KEY_TAB} "Shift-Tab (BackTab)" 173 '~' 174 '\\' 175 '_' 176 KEY_CAPS_LOCK "Caps_Lock" 200 KEY_HOME "Home" 210 KEY_END "End" 224 {KEY_LEFT_CTRL,KEY_LEFT_ALT,KEY_DELETE} "Ctl-Alt-Del" 237 KEY_F12 "F12" 277 KEY_F11 "F11" 322 {KEY_LEFT_CTRL,KEY_LEFT_ALT,KEY_DELETE} "Ctrl-Alt-Del" 340 KEY_F5 "F5" 341 KEY_F4 "F4" 343 KEY_F3 "F3" 347 KEY_F2 "F2" 350 {KEY_LEFT_ALT,' '} "Alt-Space" 351 {KEY_LEFT_ALT,KEY_UP_ARROW} "Alt ↑ Up Arrow" 354 Alt-Down_*_Repeat_Off 355 {KEY_LEFT_ALT,KEY_TAB} "Alt-Tab" 357 KEY_F1 "F1" 360 KEY_F6 "F6" 361 KEY_NUM_LOCK "Num_Lock" EZ {KEY_NUM_LOCK,OPN_TOGGLE_EZ_NUM} 372 {KEY_LEFT_SHIFT,KEY_RIGHT_ARROW} "Shift Right Arrow →" 373 {KEY_LEFT_SHIFT,KEY_DOWN_ARROW} "Shift ↓ Down Arrow" 374 KEY_F8 "F8" 375 KEY_RIGHT_CTRL "Ctrl" 376 KEY_F9 "F9" 377 KEY_F10 "F10" 720 {KEY_LEFT_ALT,'-'} "Alt-Minus" 764 {KEY_LEFT_SHIFT,KEY_LEFT_ARROW} "Shift ← Left Arrow" 774 KEY_LEFT_GUI "⊞ Windows/Apple" 775 {KEY_LEFT_CTRL,KEY_TAB} "Ctrl-Tab"
With this binary encoding all Morse strings from 1 to 7 long would be encoded in 8 bits (2..255 == 0377 == 0xFF) In the above list of 120 codes, the last 4 are 8 term Morse strings (from EZ Morse). Only 24 of the 32 5 term strings are used, 39 of the 64 6 term strings and 26 of 128 7 term strings. So there's room for expansion.
Suggestions — common Trigrams and Bigrams. Just running the Morse for the letters together will work for some of these, which may be useful for 3-switch Morse users by saving some key presses. ie. 'and' 'ing', 'fo' 'ion'. Collisions for 'the' and 'tio' mean you could choose 'tthe' and 'ttio' perhaps. The Cut and Paste, etc control sequences may be worth providing, but the Ctrl Morse and the 'c','v','x','z' characters are all 4 Morse term strings. But using 'rc', 'rv', 'rx', 'rz' would give 7 term Morse, with some mnemonic value. But so would CTRL and two-bit values with 00=ZZ, .. 11=V (corresponding to position on a normal keyboard.
Jim Lubin's tables seem to have 023 (normally space), duplicated as MOUSE_RIGHT_DOUBLE_CLICK and MOUSE_USE_ZOOM_1. It might be worthwhile to have MOUSE_ZOOM_IN and MOUSE_ZOOM_OUT to halve/double the mouse movement increment. 'dm' and 'hm' seem to be free to use, and somewhat mnemonic. More mnemonic choices collide. Middle-click (== chorded left-right mouse click) may be worth adding. And perhaps some easy way to act like a scroll wheel.
Advice would be welcome, since I'm neither disabled nor a Morse user.
Jon Oxer's Open Hardware "Mini Open Adaptive Controller" and Vik Olliver's MicroWriter both use an AVR ATMega32U4 microcontroller as used in Arduiono, which don't support Bluetooth. The 32kB of Flash and 2.5kB SRAM would support Morse. The new ESP8685 supports Bluetooth and is much more capable. A version of the "Mini Open Adaptive Controller" based on it, perhaps with an upgraded display could be quite capable. The MicroWriter code could also run on it ... just plug in the needed 6 microswitches.
Thoughts Needs to show mode. — on display or LEDs (Normal morse, Mouse mode, Numeric pad if used) Bluetooth & USB connection (HID Like Bluetooth) Bluetooth Profiles
- Human Interface Device Profile (HID) (Needs security)
- Object Push Profile (OPP) using OBject EXchange
- Send/Receive file over Bluetooth (ie VCard or other Calendar)
- [Transfer Profile (FTP)]
Expose flash as USB @
Show small files as QR-Code on display