From e9c6c564889f94da3449e4470177867cbb55d62e Mon Sep 17 00:00:00 2001 From: Brian Frank Date: Tue, 19 Mar 2024 17:32:30 -0400 Subject: [PATCH] dom: Event.keyChar --- src/doc/docIntro/doc/ChangeLog.fandoc | 1 + src/dom/es/EventPeer.js | 6 +++++- src/dom/fan/Event.fan | 4 ++++ src/dom/js/EventPeer.js | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/doc/docIntro/doc/ChangeLog.fandoc b/src/doc/docIntro/doc/ChangeLog.fandoc index 7e56d1a46..8bfa004c6 100644 --- a/src/doc/docIntro/doc/ChangeLog.fandoc +++ b/src/doc/docIntro/doc/ChangeLog.fandoc @@ -11,6 +11,7 @@ - Move fwt pods into separate repo - Actor queue overflow limits - Add Doc.elemFromPos, elemsFromPos +- Add Event.keyChar - Add new dom HttpSocket API - New concurrent Lock API - Add Graphics.drawEllipse,fillEllipse diff --git a/src/dom/es/EventPeer.js b/src/dom/es/EventPeer.js index 7c1a4e069..0d95b8f52 100644 --- a/src/dom/es/EventPeer.js +++ b/src/dom/es/EventPeer.js @@ -73,7 +73,10 @@ class EventPeer extends sys.Obj { button(self) { return this.event.button; } $key; - key(self) { return this.$key } + key(self) { return this.$key } + + $keyChar; + keyChar(self) { return this.$keyChar } #delta; delta(self) @@ -144,6 +147,7 @@ class EventPeer extends sys.Obj { const x = Event.make(); x.peer.event = event; if (event.keyCode) x.peer.$key = Key.fromCode(event.keyCode); + if (event.key) x.peer.$keyChar = event.key; return x; } } \ No newline at end of file diff --git a/src/dom/fan/Event.fan b/src/dom/fan/Event.fan index 855a1895e..7b40045b1 100644 --- a/src/dom/fan/Event.fan +++ b/src/dom/fan/Event.fan @@ -179,6 +179,10 @@ class Event ** Key instance for key pressed. native Key? key() + ** Character string for key event that represents text typed. + ** For example Shift + Key.b would return "B". + native Str? keyChar() + ** Err instance if available for 'window.onerror'. native Err? err() diff --git a/src/dom/js/EventPeer.js b/src/dom/js/EventPeer.js index 1d53e1aa6..ac6ac6466 100644 --- a/src/dom/js/EventPeer.js +++ b/src/dom/js/EventPeer.js @@ -66,6 +66,7 @@ fan.dom.EventPeer.prototype.meta = function(self) { return this.event.metaKey; fan.dom.EventPeer.prototype.button = function(self) { return this.event.button; } fan.dom.EventPeer.prototype.key = function(self) { return this.$key } +fan.dom.EventPeer.prototype.keyChar = function(self) { return this.$keyChar } fan.dom.EventPeer.prototype.delta = function(self) { @@ -136,5 +137,6 @@ fan.dom.EventPeer.make = function(event) var x = fan.dom.Event.make(); x.peer.event = event; if (event.keyCode) x.peer.$key = fan.dom.Key.fromCode(event.keyCode); + if (event.key) x.peer.$keyChar = event.key; return x; } \ No newline at end of file