The Standard Keyboard to go with the CoCo5 looks like this.

Figure 1

This keyboard works almost identacly to the CoCo 3 keyboard.
The keyboard interface diagram


Figure 2


For a better understanding of how this works see [ p40.] Color Computer 3 Service Manual.

To allow reduced cost for prospective buyers there are some alternative keyboard options.

  1. Standard CoCo keyboard and USB 3 button mouse.
  2. A bluetooth keyboard, On first use a setup program will run on power up and let you map the keyboard.
A jumper on the motherboard is opened if the coco is not using the standard CoCo5 keyboard.


The keyboard it's self has no particular smarts but it is directly connected to CPU#0 which passes keys on to whichever


  CoCo Five Keyboard Macro Language

  The CoCo 5 supports an enhanced keyboard where when the Fn key is depressed
  the 1 .. 0 keys across the act as programmable function keys where unsifted keys
  have a global definition and in the case of the CoCo5 the ALT function keys are set
  for each virtual coco individually.

  Keys can either be programmed by the Fn Key Configuration Screen or
  by the  SET command of Executive System Controller.

  The syntax of SET for this purpose is.

  SET Fn = $TRING
  or
  SET FOR #c aFn = $TRING

  In the above n is a number from 1 to 9 that sets the function key
  you are dealing with as F1 to F9 or ALT-F1 to ALT-F9.

  $TRING is a Quotes delimited text string that uses the Keyboard Macro
  Language to tell the Function key what to do when pressed.

  The c is the CPU number 1,2 or 3

  The a you type literally and it indicates you are programming the ALT Function.

  Also SET FOR #c1 aF(x..y) CLONED FROM #c2

  Indicates that you want the range aFx to aFy that is programmed into cpu #c1 to be
  be copped into the range aFx to aFy for cpu #c2.

  This can be undone with the command CLONE UNDO but only for the last range cloned and
  only if you have not powered down or done a FULL SYS RESET.


  The special codes { Control Strings } for the Keyboard Macro Language are listed below.

  Note ^ means literally type a Caret.

  ^A     An Arrow key follows see details below.
  ^B     The BREAK key. B must be upercase.
  ^b     Bell Sound
  ^C     The CLEAR key. C must be upercase.
  ^c$k   Types [CTRL][$k] where $k = a ... z or [CTRL][SHIFT][$k] where $k = A ... Z.
  ^D     Print out the current date optionally ^DT can be used to print both date and time.
  ^E     The ESC key.
  ^I     Pop up Info text see details below.
  ^M     Multi codes see details below.
  ^N     Enter
  ^P     Prompt for user input see details below.
  ^Q     Type a quote ie [SHIFT][2]
  ^R     Enter same as ^N
  ^T     Print out the current time.
  ^Sn    Print n blank spaces.
  ^?     Accept user input until user presses [Enter].
  ^?n    Where n=1 to 9 accepts 1 to 9 keys typed by the user before continuing the macro.
  ^^     Prints one  Caret see details below.

  All other text is passed through as-is in the Macro.


  Details about the more complex macros codes.


  ^A   This code is ignored unless followed by C U D L R H or PU PD
          These do the following.

                ^AU        = Arrow Up
                ^AD        = Arrow Down
                ^AL        = Arrow Left
                ^AR        = Arrow Right
                ^AH        = Go to start of current line.
                ^APU       = Page Up
                ^APD       = Page Down
                ^ACU       = CTRL Arrow Up
                ^ACD        = CTRL Arrow Down
                ^A>        = CTRL Arrow Left
                ^A<        = CTRL Arrow Right

  Some examples.
  ^A
       Example #1
       If you programed [ALT][Fn][5] as follows
              SET FOR #3 aF5 = "^AH ^S5^ADH ^S5^ADH ^S5^ADH.^S5^ADH ^S5^ADH ^S5^ADH ^S5^ADH ^S5^ADH ^S5^ADH ^S5^ADH ^S5^ADH"
       What would it do ?
       It would put your cursor at the start of the current line than type 5 spaces take your cursor down one line and to the beginning of the line
       then five more spaces and this would repeat 10 times, you can see how this would be useful to indent a bunch of lines in a file.

       Note that ^ADH  means the same as ^AD ^AH and the whole string would be the same because the character immediately after the arrow string is ignored.
       This is because the first character after a control string is ignored unless it is a ^  starting another control string, but arrow strings do not.

       SET FOR #3 aF5 = "^AH.^S5^ADH.^S5^ADH ^S5^ADH.^S5^ADH ^S5^ADH.^S5^ADH ^S5^ADH.^S5^ADH ^S5^ADH.^S5^ADH ^S5^ADH.^S5^ADH ^S5^ADH.^S5^ADH"

       would do exactly the same thing since all the periods would be ignored.

       Example #2
       If you programed [ALT][Fn][6] as follows
          SET FOR #3 aF6 = "^ADDDDDRRRRRRRRRR"

       When you pressed [ALT][Fn][6]  you would arrow down five times and the to the right 10 times.
       Of course this would only apply to CPU#3 "CoCo RED" if you always wanted [Fn][6]  to do this you would instead program
          SET F6 = "^ADDDDDRRRRRRRRRR"

      or run the three commands:
           SET FOR #3 aF6 = "^ADDDDDRRRRRRRRRR"
           SET FOR #2 aF6 = "^ADDDDDRRRRRRRRRR"
           SET FOR #1 aF6 = "^ADDDDDRRRRRRRRRR"
       witch will program [ALT][Fn][6] the same for all three CPU's.

  ^I
         I is for information
         If  you programed [ALT][Fn][5] as follows
         SET FOR #3 aF6 = "^C^b^I BASIC USER You have Cleared the Screen !.OS9  USER You have switched screens!."  
 
         If you programed [ALT][Fn][6] as follows

         SET FOR #3 aF6 = "^IPYou Will Arrow Down 5 rows and right 10. Press BREAK to ABORT or any alpha key to continue..^ADDDDDRRRRRRRRRR"
         Now when you press [ALT][Fn][6] you will get a popup in the middle of your screen that says

         You Will Arrow Down 5 rows and right 10.
         Press BREAK to ABORT or any alpha key to continue.

Note single dots are echoed and followed by a carriage return double dots are echoed as a single dot and conclude the popup message and !. : and ?. echo ! , : and ? respectively and then conclude the popup message. Note that while ^I would only display the prompt and follow with the action of  no mater what key you typed ^IP responds to the BREAK key to abort the rest of the macro.

   ^M   
       M is for multi:
         To allow your macro code to be more compact you can for example replace
        ^C^b^I Type member name:.Then Press Right Shift..^S8^?. is a new member of our club as of ^D^T .^R
         with
        ^MCbI Type member name:.Then Press Right Shift..S8P?. is a new member of our club as of ^DT .^R
         Note we have saved 3 characters by replacing 5 Carets with ^MCbI...S8? note also that all codes being compressed must be consucitive in order to
         be included. We also further save one character by replaceing ^D^T with ^DT.

         Suppose instead we wanted to follow with 4 carriage returns we could have ended with

                 " of ^D^T^R^R^R^R" or with
                 " of ^DT M^RRRR"
                 
   ^P   
       P is for prompt

         The Macro stops and waits for user input in a popup box there are two forms

         Pn where n = 1 to 9

         In this case the user types the number of characters specified for example P7 would be prompting for 7 characters like say a phone
         number 5552323 for example. The Popup Box says "Type n Characters" and then has a box 1xn input box below.

         P. or P^ on the other-hand will let you type until you have typed 256 characters or have ended your input by either pressing the Right Shift Key
         or pressing [CTRL][S] so it is similar to ^I^? except that you can type more then one line of input because you can type an [ENTER] without ending the input.

         Note [CTRL][R] clears what you typed so you can Redo what you are typing and BREAK aborts input and the rest of the macro.

              
     
   ^^ 

       This is what you type to type one Caret
       ^^n types n  Carets.


If in the Executive Settings Control Interface Program you type the command START KEYMACGUI you will get a gui interface for reprogramming the keyboard. If you are on a vga monitor capable of 960x600 or higher resolution the current screen will hide and be replaced by the screen shown in Figure 3 below. 

Figure 3






Figure 4

If your monitor is limited to 800x600 or lower resolution or is a composite monitor then  the current screen will hide and be replaced by the screen shown in Figure 4 above. For VGA screens higher then  960x720 as well as  800x600 VGA  the rest of the screen is filled by the background wallpaper. For composite monitors mode F03  720x576 is forced.

In dual monitor systems the other monitor continues to display what it was displaying before.
Also in dual monitor systems the command  START KEYMACGUI ON COMPOSITE causes the keyboard macro interface to be displayed on the composite interface even though a VGA screen is available.