83Plus:OS:TI Keyboard

From WikiTI
Jump to: navigation, search

The 83+ family's OS (versions 1.15 and greater) have built-in support for the TI Keyboard. The default action is to translate some key combinations into calculator key codes (for example, Diamond+` is the same as pressing the APPS key). You can set a flag to disable this behavior and retrieve the raw key codes from the keyboard, as shown below.

Key Translation

The following is what the OS normally does with key combinations.

Diamond+` (backqoute) APPS
Diamond+1 Y=
Diamond+2 WINDOW
Diamond+3 ZOOM
Diamond+4 TRACE
Diamond+5 GRAPH
Diamond+- (hyphen) (-) (negate)
Diamond+= (equals)  != (not equals)
Diamond+Backspace CLEAR
Tab " " (space)
Diamond+Q [QUIT]
Diamond+' (quote) [CATALOG]
Diamond+, (comma) <= (less than or equal to)
Diamond+. (period) >= (greater than or equal to)
Diamond+DEL [INS]
Diamond+LEFT BOL (beginning of line; same as 2nd+LEFT)
Diamond+RIGHT EOL (end of line; same as 2nd+RIGHT)

Also note:

  • PgUp and PgDn behave the same as Alpha+Up and Alpha+Down.
  • Backspace behaves like LEFT, DEL would provided you are not at the beginning of the edit buffer. In that case, it does nothing.
  • Caps Lock never sends a key code to the calculator; it simply sets (enabled) or resets (disabled) the most significant bit of every key code byte sent to the calculator. It is up to the receiving device to handle Caps Lock (which the TI-OS does).

Key Codes

The TI-OS only supports the Keyboard with GetKey bcall and the RawKey hook. The GetCSC bcall and the GetCSC hook do not support the Keyboard; they only support the keys on the calculator's keypad. Please see your latest copy of ti83plus.inc for the bulk of these codes. To keep things simple, I'll only put confusing or not obvious equates here.

All of the keys or key combinations (ie, shift+key) that result in a key that is present on the calculator (be it the keypad or a menu) return the same code as said other way. (For example, Shift+/ returns kQuote, the same as Alpha ["].) All other keys return a two-byte key code, the first byte being kGROUP3. All keys in this group are from the keyboard.

When lowercase is disabled (bit 3, (iy+24h) is reset), pressing the letter keys always results in capital input. When lowercase is enabled (that flag is set), pressing letter keys alone produces lowercase letters, and with shift or caps lock produces capital letters.

The following is a list of potentially confusing equates:

  • kVertSlash is the pipe |.
  • kDiaAdd would make more sense as kDiaEquals, since kDiaAdd implies shift is also pressed. Likewise for kSqrAdd.
  • kDiaDecPnt would be easier to understand as kDiaPeriod. Likewise for kSqrDecPnt.
  • Square+T is not kSqrT, but rather kSquareT -- this is to avoid ambiguity with kSqrt (square root).

Note that there are no keycodes for Diamond+Shift+Key, Diamond+Square+Key, or Square+Shift+Key. The TI-OS doesn't handle them. The keyboard itself, however, can support two modifier keys at once.

When extended key code reporting is off (bit 6,(iy+3Dh) reset), the OS does not return any of these extended codes.