Hi Chris,
I read your blog post about Keyboard Events a little while back which is what prompted me to make the change. The fact is, with the old constructor setting keyIdentifier didn't really even work because it wasn't cross-browser compatible. It only worked on webkit/blink-based browsers. KeyboardEvent is intended to expose the base level data, and be consistent across platforms. So rather than giving you functionality that isn't reliable, you get... nothing! No, I'm just kidding. I've added the functionality back in a different place.
What I think you'd like is the new functionality going into KeyEvent. I have a CL to add this to KeyEvent that is aaaaalmost ready to go in:
https://codereview.chromium.org/23455033/ that will add this functionality. It does some crazy polyfilling (who knew creating your own keyboard events consistently across all browsers could be so hard?) but it will allow you to programmatically create key(board) event. It uses the charCode/keyCode system, which is better for understanding what keys are actually pressed on different international keyboards:
var stream = KeyEvent.keyPressEvent.forTarget(document.body);
var subscription = stream.listen((keyEvent) {
print(keyEvent.charCode);
print(keyEvent.keyCode);
});
var k = new KeyEvent('keypress', keyCode: 65, charCode: 97);
stream.add(k);
I apologize for the current lapse in functionality, but this change should be in by the end of the week, and come out in the next version of the SDK!