mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-05 16:07:46 -04:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
709
Documentation/input/atarikbd.txt
Normal file
709
Documentation/input/atarikbd.txt
Normal file
|
@ -0,0 +1,709 @@
|
|||
Intelligent Keyboard (ikbd) Protocol
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
||||
The Atari Corp. Intelligent Keyboard (ikbd) is a general purpose keyboard
|
||||
controller that is flexible enough that it can be used in a variety of
|
||||
products without modification. The keyboard, with its microcontroller,
|
||||
provides a convenient connection point for a mouse and switch-type joysticks.
|
||||
The ikbd processor also maintains a time-of-day clock with one second
|
||||
resolution.
|
||||
The ikbd has been designed to be general enough that it can be used with a
|
||||
variety of new computer products. Product variations in a number of
|
||||
keyswitches, mouse resolution, etc. can be accommodated.
|
||||
The ikbd communicates with the main processor over a high speed bi-directional
|
||||
serial interface. It can function in a variety of modes to facilitate
|
||||
different applications of the keyboard, joysticks, or mouse. Limited use of
|
||||
the controller is possible in applications in which only a unidirectional
|
||||
communications medium is available by carefully designing the default modes.
|
||||
|
||||
3. Keyboard
|
||||
|
||||
The keyboard always returns key make/break scan codes. The ikbd generates
|
||||
keyboard scan codes for each key press and release. The key scan make (key
|
||||
closure) codes start at 1, and are defined in Appendix A. For example, the
|
||||
ISO key position in the scan code table should exist even if no keyswitch
|
||||
exists in that position on a particular keyboard. The break code for each key
|
||||
is obtained by ORing 0x80 with the make code.
|
||||
|
||||
The special codes 0xF6 through 0xFF are reserved for use as follows:
|
||||
0xF6 status report
|
||||
0xF7 absolute mouse position record
|
||||
0xF8-0xFB relative mouse position records (lsbs determined by
|
||||
mouse button states)
|
||||
0xFC time-of-day
|
||||
0xFD joystick report (both sticks)
|
||||
0xFE joystick 0 event
|
||||
0xFF joystick 1 event
|
||||
|
||||
The two shift keys return different scan codes in this mode. The ENTER key
|
||||
and the RETurn key are also distinct.
|
||||
|
||||
4. Mouse
|
||||
|
||||
The mouse port should be capable of supporting a mouse with resolution of
|
||||
approximately 200 counts (phase changes or 'clicks') per inch of travel. The
|
||||
mouse should be scanned at a rate that will permit accurate tracking at
|
||||
velocities up to 10 inches per second.
|
||||
The ikbd can report mouse motion in three distinctly different ways. It can
|
||||
report relative motion, absolute motion in a coordinate system maintained
|
||||
within the ikbd, or by converting mouse motion into keyboard cursor control
|
||||
key equivalents.
|
||||
The mouse buttons can be treated as part of the mouse or as additional
|
||||
keyboard keys.
|
||||
|
||||
4.1 Relative Position Reporting
|
||||
|
||||
In relative position mode, the ikbd will return relative mouse position
|
||||
records whenever a mouse event occurs. A mouse event consists of a mouse
|
||||
button being pressed or released, or motion in either axis exceeding a
|
||||
settable threshold of motion. Regardless of the threshold, all bits of
|
||||
resolution are returned to the host computer.
|
||||
Note that the ikbd may return mouse relative position reports with
|
||||
significantly more than the threshold delta x or y. This may happen since no
|
||||
relative mouse motion events will be generated: (a) while the keyboard has
|
||||
been 'paused' ( the event will be stored until keyboard communications is
|
||||
resumed) (b) while any event is being transmitted.
|
||||
|
||||
The relative mouse position record is a three byte record of the form
|
||||
(regardless of keyboard mode):
|
||||
%111110xy ; mouse position record flag
|
||||
; where y is the right button state
|
||||
; and x is the left button state
|
||||
X ; delta x as twos complement integer
|
||||
Y ; delta y as twos complement integer
|
||||
|
||||
Note that the value of the button state bits should be valid even if the
|
||||
MOUSE BUTTON ACTION has set the buttons to act like part of the keyboard.
|
||||
If the accumulated motion before the report packet is generated exceeds the
|
||||
+127...-128 range, the motion is broken into multiple packets.
|
||||
Note that the sign of the delta y reported is a function of the Y origin
|
||||
selected.
|
||||
|
||||
4.2 Absolute Position reporting
|
||||
|
||||
The ikbd can also maintain absolute mouse position. Commands exist for
|
||||
resetting the mouse position, setting X/Y scaling, and interrogating the
|
||||
current mouse position.
|
||||
|
||||
4.3 Mouse Cursor Key Mode
|
||||
|
||||
The ikbd can translate mouse motion into the equivalent cursor keystrokes.
|
||||
The number of mouse clicks per keystroke is independently programmable in
|
||||
each axis. The ikbd internally maintains mouse motion information to the
|
||||
highest resolution available, and merely generates a pair of cursor key events
|
||||
for each multiple of the scale factor.
|
||||
Mouse motion produces the cursor key make code immediately followed by the
|
||||
break code for the appropriate cursor key. The mouse buttons produce scan
|
||||
codes above those normally assigned for the largest envisioned keyboard (i.e.
|
||||
LEFT=0x74 & RIGHT=0x75).
|
||||
|
||||
5. Joystick
|
||||
|
||||
5.1 Joystick Event Reporting
|
||||
|
||||
In this mode, the ikbd generates a record whenever the joystick position is
|
||||
changed (i.e. for each opening or closing of a joystick switch or trigger).
|
||||
|
||||
The joystick event record is two bytes of the form:
|
||||
%1111111x ; Joystick event marker
|
||||
; where x is Joystick 0 or 1
|
||||
%x000yyyy ; where yyyy is the stick position
|
||||
; and x is the trigger
|
||||
|
||||
5.2 Joystick Interrogation
|
||||
|
||||
The current state of the joystick ports may be interrogated at any time in
|
||||
this mode by sending an 'Interrogate Joystick' command to the ikbd.
|
||||
|
||||
The ikbd response to joystick interrogation is a three byte report of the form
|
||||
0xFD ; joystick report header
|
||||
%x000yyyy ; Joystick 0
|
||||
%x000yyyy ; Joystick 1
|
||||
; where x is the trigger
|
||||
; and yyy is the stick position
|
||||
|
||||
5.3 Joystick Monitoring
|
||||
|
||||
A mode is available that devotes nearly all of the keyboard communications
|
||||
time to reporting the state of the joystick ports at a user specifiable rate.
|
||||
It remains in this mode until reset or commanded into another mode. The PAUSE
|
||||
command in this mode not only stop the output but also temporarily stops
|
||||
scanning the joysticks (samples are not queued).
|
||||
|
||||
5.4 Fire Button Monitoring
|
||||
|
||||
A mode is provided to permit monitoring a single input bit at a high rate. In
|
||||
this mode the ikbd monitors the state of the Joystick 1 fire button at the
|
||||
maximum rate permitted by the serial communication channel. The data is packed
|
||||
8 bits per byte for transmission to the host. The ikbd remains in this mode
|
||||
until reset or commanded into another mode. The PAUSE command in this mode not
|
||||
only stops the output but also temporarily stops scanning the button (samples
|
||||
are not queued).
|
||||
|
||||
5.5 Joystick Key Code Mode
|
||||
|
||||
The ikbd may be commanded to translate the use of either joystick into the
|
||||
equivalent cursor control keystroke(s). The ikbd provides a single breakpoint
|
||||
velocity joystick cursor.
|
||||
Joystick events produce the make code, immediately followed by the break code
|
||||
for the appropriate cursor motion keys. The trigger or fire buttons of the
|
||||
joysticks produce pseudo key scan codes above those used by the largest key
|
||||
matrix envisioned (i.e. JOYSTICK0=0x74, JOYSTICK1=0x75).
|
||||
|
||||
6. Time-of-Day Clock
|
||||
|
||||
The ikbd also maintains a time-of-day clock for the system. Commands are
|
||||
available to set and interrogate the timer-of-day clock. Time-keeping is
|
||||
maintained down to a resolution of one second.
|
||||
|
||||
7. Status Inquiries
|
||||
|
||||
The current state of ikbd modes and parameters may be found by sending status
|
||||
inquiry commands that correspond to the ikbd set commands.
|
||||
|
||||
8. Power-Up Mode
|
||||
|
||||
The keyboard controller will perform a simple self-test on power-up to detect
|
||||
major controller faults (ROM checksum and RAM test) and such things as stuck
|
||||
keys. Any keys down at power-up are presumed to be stuck, and their BREAK
|
||||
(sic) code is returned (which without the preceding MAKE code is a flag for a
|
||||
keyboard error). If the controller self-test completes without error, the code
|
||||
0xF0 is returned. (This code will be used to indicate the version/release of
|
||||
the ikbd controller. The first release of the ikbd is version 0xF0, should
|
||||
there be a second release it will be 0xF1, and so on.)
|
||||
The ikbd defaults to a mouse position reporting with threshold of 1 unit in
|
||||
either axis and the Y=0 origin at the top of the screen, and joystick event
|
||||
reporting mode for joystick 1, with both buttons being logically assigned to
|
||||
the mouse. After any joystick command, the ikbd assumes that joysticks are
|
||||
connected to both Joystick0 and Joystick1. Any mouse command (except MOUSE
|
||||
DISABLE) then causes port 0 to again be scanned as if it were a mouse, and
|
||||
both buttons are logically connected to it. If a mouse disable command is
|
||||
received while port 0 is presumed to be a mouse, the button is logically
|
||||
assigned to Joystick1 (until the mouse is reenabled by another mouse command).
|
||||
|
||||
9. ikbd Command Set
|
||||
|
||||
This section contains a list of commands that can be sent to the ikbd. Command
|
||||
codes (such as 0x00) which are not specified should perform no operation
|
||||
(NOPs).
|
||||
|
||||
9.1 RESET
|
||||
|
||||
0x80
|
||||
0x01
|
||||
|
||||
N.B. The RESET command is the only two byte command understood by the ikbd.
|
||||
Any byte following an 0x80 command byte other than 0x01 is ignored (and causes
|
||||
the 0x80 to be ignored).
|
||||
A reset may also be caused by sending a break lasting at least 200mS to the
|
||||
ikbd.
|
||||
Executing the RESET command returns the keyboard to its default (power-up)
|
||||
mode and parameter settings. It does not affect the time-of-day clock.
|
||||
The RESET command or function causes the ikbd to perform a simple self-test.
|
||||
If the test is successful, the ikbd will send the code of 0xF0 within 300mS
|
||||
of receipt of the RESET command (or the end of the break, or power-up). The
|
||||
ikbd will then scan the key matrix for any stuck (closed) keys. Any keys found
|
||||
closed will cause the break scan code to be generated (the break code arriving
|
||||
without being preceded by the make code is a flag for a key matrix error).
|
||||
|
||||
9.2. SET MOUSE BUTTON ACTION
|
||||
|
||||
0x07
|
||||
%00000mss ; mouse button action
|
||||
; (m is presumed = 1 when in MOUSE KEYCODE mode)
|
||||
; mss=0xy, mouse button press or release causes mouse
|
||||
; position report
|
||||
; where y=1, mouse key press causes absolute report
|
||||
; and x=1, mouse key release causes absolute report
|
||||
; mss=100, mouse buttons act like keys
|
||||
|
||||
This command sets how the ikbd should treat the buttons on the mouse. The
|
||||
default mouse button action mode is %00000000, the buttons are treated as part
|
||||
of the mouse logically.
|
||||
When buttons act like keys, LEFT=0x74 & RIGHT=0x75.
|
||||
|
||||
9.3 SET RELATIVE MOUSE POSITION REPORTING
|
||||
|
||||
0x08
|
||||
|
||||
Set relative mouse position reporting. (DEFAULT) Mouse position packets are
|
||||
generated asynchronously by the ikbd whenever motion exceeds the setable
|
||||
threshold in either axis (see SET MOUSE THRESHOLD). Depending upon the mouse
|
||||
key mode, mouse position reports may also be generated when either mouse
|
||||
button is pressed or released. Otherwise the mouse buttons behave as if they
|
||||
were keyboard keys.
|
||||
|
||||
9.4 SET ABSOLUTE MOUSE POSITIONING
|
||||
|
||||
0x09
|
||||
XMSB ; X maximum (in scaled mouse clicks)
|
||||
XLSB
|
||||
YMSB ; Y maximum (in scaled mouse clicks)
|
||||
YLSB
|
||||
|
||||
Set absolute mouse position maintenance. Resets the ikbd maintained X and Y
|
||||
coordinates.
|
||||
In this mode, the value of the internally maintained coordinates does NOT wrap
|
||||
between 0 and large positive numbers. Excess motion below 0 is ignored. The
|
||||
command sets the maximum positive value that can be attained in the scaled
|
||||
coordinate system. Motion beyond that value is also ignored.
|
||||
|
||||
9.5 SET MOUSE KEYCODE MOSE
|
||||
|
||||
0x0A
|
||||
deltax ; distance in X clicks to return (LEFT) or (RIGHT)
|
||||
deltay ; distance in Y clicks to return (UP) or (DOWN)
|
||||
|
||||
Set mouse monitoring routines to return cursor motion keycodes instead of
|
||||
either RELATIVE or ABSOLUTE motion records. The ikbd returns the appropriate
|
||||
cursor keycode after mouse travel exceeding the user specified deltas in
|
||||
either axis. When the keyboard is in key scan code mode, mouse motion will
|
||||
cause the make code immediately followed by the break code. Note that this
|
||||
command is not affected by the mouse motion origin.
|
||||
|
||||
9..6 SET MOUSE THRESHOLD
|
||||
|
||||
0x0B
|
||||
X ; x threshold in mouse ticks (positive integers)
|
||||
Y ; y threshold in mouse ticks (positive integers)
|
||||
|
||||
This command sets the threshold before a mouse event is generated. Note that
|
||||
it does NOT affect the resolution of the data returned to the host. This
|
||||
command is valid only in RELATIVE MOUSE POSITIONING mode. The thresholds
|
||||
default to 1 at RESET (or power-up).
|
||||
|
||||
9.7 SET MOUSE SCALE
|
||||
|
||||
0x0C
|
||||
X ; horizontal mouse ticks per internal X
|
||||
Y ; vertical mouse ticks per internal Y
|
||||
|
||||
This command sets the scale factor for the ABSOLUTE MOUSE POSITIONING mode.
|
||||
In this mode, the specified number of mouse phase changes ('clicks') must
|
||||
occur before the internally maintained coordinate is changed by one
|
||||
(independently scaled for each axis). Remember that the mouse position
|
||||
information is available only by interrogating the ikbd in the ABSOLUTE MOUSE
|
||||
POSITIONING mode unless the ikbd has been commanded to report on button press
|
||||
or release (see SET MOSE BUTTON ACTION).
|
||||
|
||||
9.8 INTERROGATE MOUSE POSITION
|
||||
|
||||
0x0D
|
||||
Returns:
|
||||
0xF7 ; absolute mouse position header
|
||||
BUTTONS
|
||||
0000dcba ; where a is right button down since last interrogation
|
||||
; b is right button up since last
|
||||
; c is left button down since last
|
||||
; d is left button up since last
|
||||
XMSB ; X coordinate
|
||||
XLSB
|
||||
YMSB ; Y coordinate
|
||||
YLSB
|
||||
|
||||
The INTERROGATE MOUSE POSITION command is valid when in the ABSOLUTE MOUSE
|
||||
POSITIONING mode, regardless of the setting of the MOUSE BUTTON ACTION.
|
||||
|
||||
9.9 LOAD MOUSE POSITION
|
||||
|
||||
0x0E
|
||||
0x00 ; filler
|
||||
XMSB ; X coordinate
|
||||
XLSB ; (in scaled coordinate system)
|
||||
YMSB ; Y coordinate
|
||||
YLSB
|
||||
|
||||
This command allows the user to preset the internally maintained absolute
|
||||
mouse position.
|
||||
|
||||
9.10 SET Y=0 AT BOTTOM
|
||||
|
||||
0x0F
|
||||
|
||||
This command makes the origin of the Y axis to be at the bottom of the
|
||||
logical coordinate system internal to the ikbd for all relative or absolute
|
||||
mouse motion. This causes mouse motion toward the user to be negative in sign
|
||||
and away from the user to be positive.
|
||||
|
||||
9.11 SET Y=0 AT TOP
|
||||
|
||||
0x10
|
||||
|
||||
Makes the origin of the Y axis to be at the top of the logical coordinate
|
||||
system within the ikbd for all relative or absolute mouse motion. (DEFAULT)
|
||||
This causes mouse motion toward the user to be positive in sign and away from
|
||||
the user to be negative.
|
||||
|
||||
9.12 RESUME
|
||||
|
||||
0x11
|
||||
|
||||
Resume sending data to the host. Since any command received by the ikbd after
|
||||
its output has been paused also causes an implicit RESUME this command can be
|
||||
thought of as a NO OPERATION command. If this command is received by the ikbd
|
||||
and it is not PAUSED, it is simply ignored.
|
||||
|
||||
9.13 DISABLE MOUSE
|
||||
|
||||
0x12
|
||||
|
||||
All mouse event reporting is disabled (and scanning may be internally
|
||||
disabled). Any valid mouse mode command resumes mouse motion monitoring. (The
|
||||
valid mouse mode commands are SET RELATIVE MOUSE POSITION REPORTING, SET
|
||||
ABSOLUTE MOUSE POSITIONING, and SET MOUSE KEYCODE MODE. )
|
||||
N.B. If the mouse buttons have been commanded to act like keyboard keys, this
|
||||
command DOES affect their actions.
|
||||
|
||||
9.14 PAUSE OUTPUT
|
||||
|
||||
0x13
|
||||
|
||||
Stop sending data to the host until another valid command is received. Key
|
||||
matrix activity is still monitored and scan codes or ASCII characters enqueued
|
||||
(up to the maximum supported by the microcontroller) to be sent when the host
|
||||
allows the output to be resumed. If in the JOYSTICK EVENT REPORTING mode,
|
||||
joystick events are also queued.
|
||||
Mouse motion should be accumulated while the output is paused. If the ikbd is
|
||||
in RELATIVE MOUSE POSITIONING REPORTING mode, motion is accumulated beyond the
|
||||
normal threshold limits to produce the minimum number of packets necessary for
|
||||
transmission when output is resumed. Pressing or releasing either mouse button
|
||||
causes any accumulated motion to be immediately queued as packets, if the
|
||||
mouse is in RELATIVE MOUSE POSITION REPORTING mode.
|
||||
Because of the limitations of the microcontroller memory this command should
|
||||
be used sparingly, and the output should not be shut of for more than <tbd>
|
||||
milliseconds at a time.
|
||||
The output is stopped only at the end of the current 'even'. If the PAUSE
|
||||
OUTPUT command is received in the middle of a multiple byte report, the packet
|
||||
will still be transmitted to conclusion and then the PAUSE will take effect.
|
||||
When the ikbd is in either the JOYSTICK MONITORING mode or the FIRE BUTTON
|
||||
MONITORING mode, the PAUSE OUTPUT command also temporarily stops the
|
||||
monitoring process (i.e. the samples are not enqueued for transmission).
|
||||
|
||||
0.15 SET JOYSTICK EVENT REPORTING
|
||||
|
||||
0x14
|
||||
|
||||
Enter JOYSTICK EVENT REPORTING mode (DEFAULT). Each opening or closure of a
|
||||
joystick switch or trigger causes a joystick event record to be generated.
|
||||
|
||||
9.16 SET JOYSTICK INTERROGATION MODE
|
||||
|
||||
0x15
|
||||
|
||||
Disables JOYSTICK EVENT REPORTING. Host must send individual JOYSTICK
|
||||
INTERROGATE commands to sense joystick state.
|
||||
|
||||
9.17 JOYSTICK INTERROGATE
|
||||
|
||||
0x16
|
||||
|
||||
Return a record indicating the current state of the joysticks. This command
|
||||
is valid in either the JOYSTICK EVENT REPORTING mode or the JOYSTICK
|
||||
INTERROGATION MODE.
|
||||
|
||||
9.18 SET JOYSTICK MONITORING
|
||||
|
||||
0x17
|
||||
rate ; time between samples in hundredths of a second
|
||||
Returns: (in packets of two as long as in mode)
|
||||
%000000xy ; where y is JOYSTICK1 Fire button
|
||||
; and x is JOYSTICK0 Fire button
|
||||
%nnnnmmmm ; where m is JOYSTICK1 state
|
||||
; and n is JOYSTICK0 state
|
||||
|
||||
Sets the ikbd to do nothing but monitor the serial command line, maintain the
|
||||
time-of-day clock, and monitor the joystick. The rate sets the interval
|
||||
between joystick samples.
|
||||
N.B. The user should not set the rate higher than the serial communications
|
||||
channel will allow the 2 bytes packets to be transmitted.
|
||||
|
||||
9.19 SET FIRE BUTTON MONITORING
|
||||
|
||||
0x18
|
||||
Returns: (as long as in mode)
|
||||
%bbbbbbbb ; state of the JOYSTICK1 fire button packed
|
||||
; 8 bits per byte, the first sample if the MSB
|
||||
|
||||
Set the ikbd to do nothing but monitor the serial command line, maintain the
|
||||
time-of-day clock, and monitor the fire button on Joystick 1. The fire button
|
||||
is scanned at a rate that causes 8 samples to be made in the time it takes for
|
||||
the previous byte to be sent to the host (i.e. scan rate = 8/10 * baud rate).
|
||||
The sample interval should be as constant as possible.
|
||||
|
||||
9.20 SET JOYSTICK KEYCODE MODE
|
||||
|
||||
0x19
|
||||
RX ; length of time (in tenths of seconds) until
|
||||
; horizontal velocity breakpoint is reached
|
||||
RY ; length of time (in tenths of seconds) until
|
||||
; vertical velocity breakpoint is reached
|
||||
TX ; length (in tenths of seconds) of joystick closure
|
||||
; until horizontal cursor key is generated before RX
|
||||
; has elapsed
|
||||
TY ; length (in tenths of seconds) of joystick closure
|
||||
; until vertical cursor key is generated before RY
|
||||
; has elapsed
|
||||
VX ; length (in tenths of seconds) of joystick closure
|
||||
; until horizontal cursor keystrokes are generated
|
||||
; after RX has elapsed
|
||||
VY ; length (in tenths of seconds) of joystick closure
|
||||
; until vertical cursor keystrokes are generated
|
||||
; after RY has elapsed
|
||||
|
||||
In this mode, joystick 0 is scanned in a way that simulates cursor keystrokes.
|
||||
On initial closure, a keystroke pair (make/break) is generated. Then up to Rn
|
||||
tenths of seconds later, keystroke pairs are generated every Tn tenths of
|
||||
seconds. After the Rn breakpoint is reached, keystroke pairs are generated
|
||||
every Vn tenths of seconds. This provides a velocity (auto-repeat) breakpoint
|
||||
feature.
|
||||
Note that by setting RX and/or Ry to zero, the velocity feature can be
|
||||
disabled. The values of TX and TY then become meaningless, and the generation
|
||||
of cursor 'keystrokes' is set by VX and VY.
|
||||
|
||||
9.21 DISABLE JOYSTICKS
|
||||
|
||||
0x1A
|
||||
|
||||
Disable the generation of any joystick events (and scanning may be internally
|
||||
disabled). Any valid joystick mode command resumes joystick monitoring. (The
|
||||
joystick mode commands are SET JOYSTICK EVENT REPORTING, SET JOYSTICK
|
||||
INTERROGATION MODE, SET JOYSTICK MONITORING, SET FIRE BUTTON MONITORING, and
|
||||
SET JOYSTICK KEYCODE MODE.)
|
||||
|
||||
9.22 TIME-OF-DAY CLOCK SET
|
||||
|
||||
0x1B
|
||||
YY ; year (2 least significant digits)
|
||||
MM ; month
|
||||
DD ; day
|
||||
hh ; hour
|
||||
mm ; minute
|
||||
ss ; second
|
||||
|
||||
All time-of-day data should be sent to the ikbd in packed BCD format.
|
||||
Any digit that is not a valid BCD digit should be treated as a 'don't care'
|
||||
and not alter that particular field of the date or time. This permits setting
|
||||
only some subfields of the time-of-day clock.
|
||||
|
||||
9.23 INTERROGATE TIME-OF-DAT CLOCK
|
||||
|
||||
0x1C
|
||||
Returns:
|
||||
0xFC ; time-of-day event header
|
||||
YY ; year (2 least significant digits)
|
||||
MM ; month
|
||||
DD ; day
|
||||
hh ; hour
|
||||
mm ; minute
|
||||
ss ; second
|
||||
|
||||
All time-of-day is sent in packed BCD format.
|
||||
|
||||
9.24 MEMORY LOAD
|
||||
|
||||
0x20
|
||||
ADRMSB ; address in controller
|
||||
ADRLSB ; memory to be loaded
|
||||
NUM ; number of bytes (0-128)
|
||||
{ data }
|
||||
|
||||
This command permits the host to load arbitrary values into the ikbd
|
||||
controller memory. The time between data bytes must be less than 20ms.
|
||||
|
||||
9.25 MEMORY READ
|
||||
|
||||
0x21
|
||||
ADRMSB ; address in controller
|
||||
ADRLSB ; memory to be read
|
||||
Returns:
|
||||
0xF6 ; status header
|
||||
0x20 ; memory access
|
||||
{ data } ; 6 data bytes starting at ADR
|
||||
|
||||
This command permits the host to read from the ikbd controller memory.
|
||||
|
||||
9.26 CONTROLLER EXECUTE
|
||||
|
||||
0x22
|
||||
ADRMSB ; address of subroutine in
|
||||
ADRLSB ; controller memory to be called
|
||||
|
||||
This command allows the host to command the execution of a subroutine in the
|
||||
ikbd controller memory.
|
||||
|
||||
9.27 STATUS INQUIRIES
|
||||
|
||||
Status commands are formed by inclusively ORing 0x80 with the
|
||||
relevant SET command.
|
||||
|
||||
Example:
|
||||
0x88 (or 0x89 or 0x8A) ; request mouse mode
|
||||
Returns:
|
||||
0xF6 ; status response header
|
||||
mode ; 0x08 is RELATIVE
|
||||
; 0x09 is ABSOLUTE
|
||||
; 0x0A is KEYCODE
|
||||
param1 ; 0 is RELATIVE
|
||||
; XMSB maximum if ABSOLUTE
|
||||
; DELTA X is KEYCODE
|
||||
param2 ; 0 is RELATIVE
|
||||
; YMSB maximum if ABSOLUTE
|
||||
; DELTA Y is KEYCODE
|
||||
param3 ; 0 if RELATIVE
|
||||
; or KEYCODE
|
||||
; YMSB is ABSOLUTE
|
||||
param4 ; 0 if RELATIVE
|
||||
; or KEYCODE
|
||||
; YLSB is ABSOLUTE
|
||||
0 ; pad
|
||||
0
|
||||
|
||||
The STATUS INQUIRY commands request the ikbd to return either the current mode
|
||||
or the parameters associated with a given command. All status reports are
|
||||
padded to form 8 byte long return packets. The responses to the status
|
||||
requests are designed so that the host may store them away (after stripping
|
||||
off the status report header byte) and later send them back as commands to
|
||||
ikbd to restore its state. The 0 pad bytes will be treated as NOPs by the
|
||||
ikbd.
|
||||
|
||||
Valid STATUS INQUIRY commands are:
|
||||
|
||||
0x87 mouse button action
|
||||
0x88 mouse mode
|
||||
0x89
|
||||
0x8A
|
||||
0x8B mnouse threshold
|
||||
0x8C mouse scale
|
||||
0x8F mouse vertical coordinates
|
||||
0x90 ( returns 0x0F Y=0 at bottom
|
||||
0x10 Y=0 at top )
|
||||
0x92 mouse enable/disable
|
||||
( returns 0x00 enabled)
|
||||
0x12 disabled )
|
||||
0x94 joystick mode
|
||||
0x95
|
||||
0x96
|
||||
0x9A joystick enable/disable
|
||||
( returns 0x00 enabled
|
||||
0x1A disabled )
|
||||
|
||||
It is the (host) programmer's responsibility to have only one unanswered
|
||||
inquiry in process at a time.
|
||||
STATUS INQUIRY commands are not valid if the ikbd is in JOYSTICK MONITORING
|
||||
mode or FIRE BUTTON MONITORING mode.
|
||||
|
||||
|
||||
10. SCAN CODES
|
||||
|
||||
The key scan codes returned by the ikbd are chosen to simplify the
|
||||
implementation of GSX.
|
||||
|
||||
GSX Standard Keyboard Mapping.
|
||||
|
||||
Hex Keytop
|
||||
01 Esc
|
||||
02 1
|
||||
03 2
|
||||
04 3
|
||||
05 4
|
||||
06 5
|
||||
07 6
|
||||
08 7
|
||||
09 8
|
||||
0A 9
|
||||
0B 0
|
||||
0C -
|
||||
0D ==
|
||||
0E BS
|
||||
0F TAB
|
||||
10 Q
|
||||
11 W
|
||||
12 E
|
||||
13 R
|
||||
14 T
|
||||
15 Y
|
||||
16 U
|
||||
17 I
|
||||
18 O
|
||||
19 P
|
||||
1A [
|
||||
1B ]
|
||||
1C RET
|
||||
1D CTRL
|
||||
1E A
|
||||
1F S
|
||||
20 D
|
||||
21 F
|
||||
22 G
|
||||
23 H
|
||||
24 J
|
||||
25 K
|
||||
26 L
|
||||
27 ;
|
||||
28 '
|
||||
29 `
|
||||
2A (LEFT) SHIFT
|
||||
2B \
|
||||
2C Z
|
||||
2D X
|
||||
2E C
|
||||
2F V
|
||||
30 B
|
||||
31 N
|
||||
32 M
|
||||
33 ,
|
||||
34 .
|
||||
35 /
|
||||
36 (RIGHT) SHIFT
|
||||
37 { NOT USED }
|
||||
38 ALT
|
||||
39 SPACE BAR
|
||||
3A CAPS LOCK
|
||||
3B F1
|
||||
3C F2
|
||||
3D F3
|
||||
3E F4
|
||||
3F F5
|
||||
40 F6
|
||||
41 F7
|
||||
42 F8
|
||||
43 F9
|
||||
44 F10
|
||||
45 { NOT USED }
|
||||
46 { NOT USED }
|
||||
47 HOME
|
||||
48 UP ARROW
|
||||
49 { NOT USED }
|
||||
4A KEYPAD -
|
||||
4B LEFT ARROW
|
||||
4C { NOT USED }
|
||||
4D RIGHT ARROW
|
||||
4E KEYPAD +
|
||||
4F { NOT USED }
|
||||
50 DOWN ARROW
|
||||
51 { NOT USED }
|
||||
52 INSERT
|
||||
53 DEL
|
||||
54 { NOT USED }
|
||||
5F { NOT USED }
|
||||
60 ISO KEY
|
||||
61 UNDO
|
||||
62 HELP
|
||||
63 KEYPAD (
|
||||
64 KEYPAD /
|
||||
65 KEYPAD *
|
||||
66 KEYPAD *
|
||||
67 KEYPAD 7
|
||||
68 KEYPAD 8
|
||||
69 KEYPAD 9
|
||||
6A KEYPAD 4
|
||||
6B KEYPAD 5
|
||||
6C KEYPAD 6
|
||||
6D KEYPAD 1
|
||||
6E KEYPAD 2
|
||||
6F KEYPAD 3
|
||||
70 KEYPAD 0
|
||||
71 KEYPAD .
|
||||
72 KEYPAD ENTER
|
Loading…
Add table
Add a link
Reference in a new issue