It looks like the best way to save/set/restore keyboard buffering (and anything else that is editable throught the control panel) is to use GETBPARAM to save current values, to use SETBPARAM to update the battery RAM buffer with appropriate values, and then to call $E1/0094 to set the system into the state indicated by the battery RAM buffer. Restoration is similar: use SETBPARAM to update the battery RAM buffer with the saved values, and call $E1/0094 to set the system to its original state. This works well, and uses only documented tool calls and entry points. [Note that $E1/0094 needs to be called in 8 bit native mode - which the firmware reference does not tell you]. Bit Value Description --- ----- ------------------------------- 6 $40 Shift+CapsLock=Lowercase mode 4 $10 Keyboard buffering 3 $08 Dual-speed keys 2 $04 Fast space/delete keys For example, to turn off keyboard buffering without altering the user's Battery RAM, you can do the following: pea 1 ;number of data bytes pushlong #modesToClear ;pointer to data byte pea 5 ;modeCmd = clearModes _SendInfo ... modesToClear dc.b $10 ;bit 4 = keyboard buffering Note that the user's control panel setting will become current again if they hit Command-Ctrl-Esc (the system calls the TOBRAMSETUP vector at $E10094 to update the system from Battery RAM).