servo/components/script/dom
bors-servo 68fb9ebc41 Auto merge of #11950 - jdm:keylayout2, r=emilio
Support non-QWERTY keyboards

Using the ReceivedCharacter event from glutin, we can obtain the actual key characters that the user is pressing and releasing. This gets passed to the script thread along with the physical key data, since KeyboardEvent needs both pieces of information, where they get merged into a single logical key that gets processed by clients like TextInput without any special changes.

Tested by switching my macbook keyboard to dvorak and looking at the output of keypress/keyup/keydown event listeners, as well as playing with tests/html/textarea.html. Non-content keybindings like reload work as expected, too - the remapped keybinding triggers the reload action.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #4144
- [X] These changes do not require tests because I can't think of a way to test remapped keyboard input

Fixes  #11991.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11950)
<!-- Reviewable:end -->
2016-07-06 02:51:50 -07:00
..
bindings Make textinput handle actual key values. Don't restrict character values to a single byte. 2016-07-06 00:10:24 -04:00
webgl_validations webgl: Refactor texture validations to take advantage of rust type system 2016-06-25 00:03:15 +02:00
webidls Auto merge of #11948 - stshine:flex-shorthand-properties, r=emilio 2016-07-05 20:08:07 -07:00
abstractworker.rs implement related sw interface and register method 2016-06-02 04:09:39 +05:30
abstractworkerglobalscope.rs implement related sw interface and register method 2016-06-02 04:09:39 +05:30
activation.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
attr.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
beforeunloadevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
blob.rs Remove DataSlice, fix #12249 2016-07-05 17:51:53 +08:00
bluetooth.rs Fix an incorect behavior, when converting optional services. 2016-06-06 10:12:31 +02:00
bluetoothadvertisingdata.rs Fix value types 2016-05-03 10:17:38 +02:00
bluetoothcharacteristicproperties.rs WebBluetooth API classes 2016-03-16 10:34:48 +01:00
bluetoothdevice.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
bluetoothremotegattcharacteristic.rs Add WebBluetooth Blacklist support 2016-05-31 17:05:45 +02:00
bluetoothremotegattdescriptor.rs Add WebBluetooth Blacklist support 2016-05-31 17:05:45 +02:00
bluetoothremotegattserver.rs Add WebBluetooth Blacklist support 2016-05-31 17:05:45 +02:00
bluetoothremotegattservice.rs Add blacklist check to GetIncludedSevice(s) functions 2016-06-07 10:38:28 +02:00
bluetoothuuid.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
browsingcontext.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
canvasgradient.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
canvaspattern.rs Add origin-clean flag tracking for canvas 2015-12-17 11:40:38 -08:00
canvasrenderingcontext2d.rs Move util::vec::byte_swap to canvas_traits 2016-07-04 16:48:15 +02:00
characterdata.rs Make /dom/nodes/CharacterData-surrogates.html not panic. 2016-05-24 16:08:01 +02:00
client.rs implement related sw interface and register method 2016-06-02 04:09:39 +05:30
closeevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
comment.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
console.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
create.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
crypto.rs Say farewell to in-tree HeapSizeOf 2016-02-04 22:03:32 +01:00
css.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
cssstyledeclaration.rs Auto merge of #11428 - g-k:csstext, r=SimonSapin 2016-06-01 01:59:12 -05:00
customevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
dedicatedworkerglobalscope.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
document.rs Make textinput handle actual key values. Don't restrict character values to a single byte. 2016-07-06 00:10:24 -04:00
documentfragment.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
documenttype.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
domexception.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
domimplementation.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
domparser.rs Added support for additional xml types to DOMParser::parseFromString 2016-06-01 20:55:27 -05:00
dompoint.rs Add DOMQuad element 2015-12-18 17:37:10 +01:00
dompointreadonly.rs Rustfmt some of script. 2015-11-18 11:14:05 +01:00
domquad.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
domrect.rs Rustfmt some of script. 2015-11-18 11:14:05 +01:00
domrectlist.rs Remove JS::from_rooted 2016-05-31 14:43:58 +02:00
domrectreadonly.rs Rustfmt some of script. 2015-11-18 11:14:05 +01:00
domstringmap.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
domtokenlist.rs Move util::str to style 2016-07-05 10:43:54 +02:00
element.rs Upgrade rust-selectors. 2016-07-05 18:03:40 -07:00
errorevent.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
event.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
eventdispatcher.rs Use a stack guard and a macro for RootedVec instead of return_address. 2016-07-04 20:59:06 +03:00
eventsource.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
eventtarget.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
file.rs Remove DataSlice, fix #12249 2016-07-05 17:51:53 +08:00
filelist.rs Remove JS::from_rooted 2016-05-31 14:43:58 +02:00
filereader.rs Remove DataSlice, fix #12249 2016-07-05 17:51:53 +08:00
focusevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
forcetouchevent.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
formdata.rs Remove DataSlice, fix #12249 2016-07-05 17:51:53 +08:00
hashchangeevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlanchorelement.rs Refactor util::prefs operations to be methods on static struct. 2016-07-02 16:43:39 -04:00
htmlappletelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmlareaelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmlaudioelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlbaseelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmlbodyelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmlbrelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlbuttonelement.rs delete suffixes 2016-06-04 09:23:55 -04:00
htmlcanvaselement.rs Move HTMLCanvasData to script_layout_interface. 2016-06-20 19:04:41 +02:00
htmlcollection.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmldataelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmldatalistelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmldetailselement.rs Clean up DOMManipulationTaskSource 2016-06-02 15:27:08 -04:00
htmldialogelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmldirectoryelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmldivelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmldlistelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlelement.rs fixup! Fixed issue #11651 (Do not fire a blur event when calling .focus() on a focused element) 2016-06-10 11:36:08 +02:00
htmlembedelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlfieldsetelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlfontelement.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmlformcontrolscollection.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlformelement.rs Auto merge of #12258 - izgzhen:remove-data-slice, r=Manishearth 2016-07-05 06:24:46 -07:00
htmlframeelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlframesetelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlheadelement.rs Add meta-referrer support for documents 2016-06-02 21:48:09 -04:00
htmlheadingelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlhrelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmlhtmlelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmliframeelement.rs Auto merge of #11872 - eddyb:back-to-roots, r=Ms2ger 2016-07-04 11:03:35 -07:00
htmlimageelement.rs Don't crash when <img> fails to parse its src 2016-07-05 21:52:18 +05:30
htmlinputelement.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmllabelelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmllegendelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmllielement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmllinkelement.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmlmapelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlmediaelement.rs Add style check, test, and code fixes for an else brace check. 2016-07-04 18:38:13 -04:00
htmlmetaelement.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmlmeterelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlmodelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlobjectelement.rs Move is_image_data to script_layout_interface. 2016-06-20 19:08:11 +02:00
htmlolistelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmloptgroupelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmloptionelement.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmloutputelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlparagraphelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlparamelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlpreelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlprogresselement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlquoteelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlscriptelement.rs Move util::str to style 2016-07-05 10:43:54 +02:00
htmlselectelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmlsourceelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlspanelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlstyleelement.rs Move the remainder of layout_interface into script_layout_interface. 2016-06-20 19:08:12 +02:00
htmltablecaptionelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltablecellelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmltablecolelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltabledatacellelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltableelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmltableheadercellelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltablerowelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmltablesectionelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmltemplateelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltextareaelement.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
htmltimeelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltitleelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmltrackelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlulistelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlunknownelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
htmlvideoelement.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
imagedata.rs Update SpiderMonkey 2016-05-03 18:36:11 +02:00
keyboardevent.rs Make textinput handle actual key values. Don't restrict character values to a single byte. 2016-07-06 00:10:24 -04:00
location.rs Ensure that a navigation to the same URL is aborted. Fixes #10952. 2016-06-29 13:40:16 -04:00
macros.rs Use a stack guard and a macro for RootedVec instead of return_address. 2016-07-04 20:59:06 +03:00
mediaerror.rs Tidy fixes. 2016-05-03 18:05:27 -04:00
messageevent.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
mimetype.rs Report use statements that use {} with only one entry 2016-05-27 10:18:44 +01:00
mimetypearray.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
mod.rs webgl: Refactor texture validations to take advantage of rust type system 2016-06-25 00:03:15 +02:00
mouseevent.rs Refactor util::prefs operations to be methods on static struct. 2016-07-02 16:43:39 -04:00
namednodemap.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
navigator.rs implement related sw interface and register method 2016-06-02 04:09:39 +05:30
navigatorinfo.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
node.rs Auto merge of #11872 - eddyb:back-to-roots, r=Ms2ger 2016-07-04 11:03:35 -07:00
nodeiterator.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
nodelist.rs Update to rustc 2016-06-14. 2016-06-15 00:27:36 +01:00
pagetransitionevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
performance.rs Remove JS::from_rooted 2016-05-31 14:43:58 +02:00
performancetiming.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
plugin.rs Report use statements that use {} with only one entry 2016-05-27 10:18:44 +01:00
pluginarray.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
popstateevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
processinginstruction.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
progressevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
radionodelist.rs Remove JS::from_rooted 2016-05-31 14:43:58 +02:00
range.rs Use a stack guard and a macro for RootedVec instead of return_address. 2016-07-04 20:59:06 +03:00
screen.rs more refactoring 2015-10-30 20:26:29 +09:00
serviceworker.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
serviceworkercontainer.rs implement related sw interface and register method 2016-06-02 04:09:39 +05:30
serviceworkerglobalscope.rs Auto merge of #11872 - eddyb:back-to-roots, r=Ms2ger 2016-07-04 11:03:35 -07:00
serviceworkerregistration.rs implement related sw interface and register method 2016-06-02 04:09:39 +05:30
servohtmlparser.rs Print out useful SSL-related information on SSL error page. 2016-06-29 14:21:12 -04:00
servoxmlparser.rs Auto merge of #10647 - ConnorGBrewster:parse_xml, r=jdm 2016-04-27 07:50:54 -07:00
storage.rs Clean up DOMManipulationTaskSource 2016-06-02 15:27:08 -04:00
storageevent.rs Report use statements that use {} with only one entry 2016-05-27 10:18:44 +01:00
stylesheet.rs Report use statements that use {} with only one entry 2016-05-27 10:18:44 +01:00
stylesheetlist.rs servo: Clean up unused variables and imports 2016-04-02 16:30:18 +02:00
testbinding.rs Remove DataSlice, fix #12249 2016-07-05 17:51:53 +08:00
testbindingproxy.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
text.rs Report use statements that use {} with only one entry 2016-05-27 10:18:44 +01:00
textdecoder.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
textencoder.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
touch.rs more refactoring 2015-10-30 20:26:29 +09:00
touchevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
touchlist.rs merge from master 2015-11-03 19:01:23 +09:00
treewalker.rs Get rid of a bunch of explicit derefs 2015-11-03 19:51:46 -08:00
uievent.rs Fix all the links to the UI Events spec 2016-06-04 16:04:35 +02:00
url.rs Integration and improvements of File API backends 2016-07-04 23:02:03 +08:00
urlhelper.rs Upgrade to rust-url 1.0 and hyper 0.9 2016-04-23 20:27:58 +02:00
urlsearchparams.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
userscripts.rs Report use statements that use {} with only one entry 2016-05-27 10:18:44 +01:00
validation.rs Implement initial pieces of form validation. 2016-03-24 09:07:38 -04:00
validitystate.rs Remove empty lines following braces. 2016-05-27 13:32:05 -04:00
values.rs
virtualmethods.rs Stop re-exporting AttrValue. 2016-06-07 13:15:23 +02:00
webglactiveinfo.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
webglbuffer.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
webglcontextevent.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
webglframebuffer.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
webglobject.rs more refactoring 2015-10-30 20:26:29 +09:00
webglprogram.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
webglrenderbuffer.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
webglrenderingcontext.rs Auto merge of #12224 - nox:die-util-die, r=Ms2ger 2016-07-04 12:57:00 -07:00
webglshader.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
webglshaderprecisionformat.rs more refactoring 2015-10-30 20:26:29 +09:00
webgltexture.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
webgluniformlocation.rs Use wrappers for GL IDs 2016-06-28 20:11:55 +02:00
websocket.rs Remove DataSlice, fix #12249 2016-07-05 17:51:53 +08:00
window.rs Auto merge of #12256 - nox:die-util-die, r=Ms2ger 2016-07-05 02:04:42 -07:00
worker.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
workerglobalscope.rs Switch to using the new rooted!/RootedGuard API for rooting. 2016-07-04 20:59:01 +03:00
workerlocation.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
workernavigator.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
xmldocument.rs Move DOMString back to script 2016-05-24 10:54:57 +02:00
xmlhttprequest.rs Auto merge of #12258 - izgzhen:remove-data-slice, r=Manishearth 2016-07-05 06:24:46 -07:00
xmlhttprequesteventtarget.rs Introduce trait Castable 2015-10-21 11:37:16 +02:00
xmlhttprequestupload.rs more refactoring 2015-10-30 20:26:29 +09:00