I don't think web developers are going to have any lasting interest in the peculiarities of iCab 3's event handling code, so I have removed all discussion of it from the main documents. In the unlikely event that anyone ever cares again, I've stuck the removed data here. Much of this document consists of rows and columns clipped out of the tables in the main documents referenced above.
This data is based on tests done with iCab version 3.0.3. That was not the final release of iCab 3, but I have no plans to ever update this document.
When keys were held down long enough to autorepeat, iCab 3 generated three events for each autorepeat.
Browser Events triggered on each autoreapeat iCab 3 keyup
If you are installing your own handlers for key events, then sometimes you won't want the browser default action to occur (such as having the character appear in a text entry area). To prevent this in iCab, you need to surpress defaults on the keydown event.
Browser Which event handlers need to suppress defaults to prevent key from appearing in text box iCab 3 keydown
If you suppress defaults on the keydown event then neither the keypress nor the keyup event will occur.
Browser Side effect if keydown handler returns false iCab 3 keypress event never occurs.
keyup event never occurs.
This is actually problematical. If you want to suppress default handling of the key, you need the keydown handler to return false. But if you do that, both keypress and keyup events disappear. So you can't do either keypress handling or keyup.
So, in summary, if we press the [Shift] key, then press the [A] key, holding it down long enough to auto-repeat just once, then release [A], and the release [Shift] we see the events shown below. Events marked in red do not occur if there is a keydown handler that returns false.
This is, of course, different than any other browser.
iCab 3 [Shift] pressed [A] pressed keydown
[A] autorepeats keyup
[A] released keyup [Shift] released
Many browsers return ambiguous values for arrow keys on keypress events. iCab avoided this problem, but the values it returned were unlike those returned by any other browser.
event.keyCode event.which event.charCode iCab 3 keydown/keyup: Pseudo-ASCII code
keypress: ASCII code
same as event.keyCode ASCII code
Browser "ASCII" values sent for arrow keys up arrow down arrow left arrow right arrow iCab 3 30 31 28 29
Weirdly, iCab three perfectly emulated the Gecko bug in which zero keycode values were returned for many symbol keys on keydown and keyup events. Characters that give a zero keycode when typed include those listed below, as well as any key when the Alt/Option key is held down.
- _ ~ ! @ # $ % ^ & * ( ) + | : < > ?