@@ -647,26 +647,38 @@ pub const Page = struct {
647647 };
648648 }
649649
650- fn _keydownCallback (page : * Page , event : * parser.Event ) ! void {
651- const kbe : * parser.KeyboardEvent = @ptrCast (event );
650+ fn _keydownCallback (self : * Page , event : * parser.Event ) ! void {
652651 const target = (try parser .eventTarget (event )) orelse return ;
653652 const node = parser .eventTargetToNode (target );
654653 const tag = (try parser .nodeHTMLGetTagType (node )) orelse return ;
654+
655+ const kbe : * parser.KeyboardEvent = @ptrCast (event );
656+ var new_key = try parser .keyboardEventGetKey (kbe );
657+ if (std .mem .eql (u8 , new_key , "Dead" )) {
658+ return ;
659+ }
660+
655661 switch (tag ) {
656662 .input = > {
657663 const element : * parser.Element = @ptrCast (node );
658664 const input_type = (try parser .elementGetAttribute (element , "type" )) orelse "text" ;
659665 if (std .mem .eql (u8 , input_type , "text" )) {
666+ if (std .mem .eql (u8 , new_key , "Enter" )) {
667+ const form = (try self .formForElement (element )) orelse return ;
668+ return self .submitForm (@ptrCast (form ), null );
669+ }
670+
660671 const value = try parser .inputGetValue (@ptrCast (element ));
661- const new_key = try parser .keyboardEventGetKey (kbe );
662- const new_value = try std .mem .concat (page .arena , u8 , &.{ value , new_key });
672+ const new_value = try std .mem .concat (self .arena , u8 , &.{ value , new_key });
663673 try parser .inputSetValue (@ptrCast (element ), new_value );
664674 }
665675 },
666676 .textarea = > {
667677 const value = try parser .textareaGetValue (@ptrCast (node ));
668- const new_key = try parser .keyboardEventGetKey (kbe );
669- const new_value = try std .mem .concat (page .arena , u8 , &.{ value , new_key });
678+ if (std .mem .eql (u8 , new_key , "Enter" )) {
679+ new_key = "\n " ;
680+ }
681+ const new_value = try std .mem .concat (self .arena , u8 , &.{ value , new_key });
670682 try parser .textareaSetValue (@ptrCast (node ), new_value );
671683 },
672684 else = > {},
@@ -734,7 +746,6 @@ pub const Page = struct {
734746 } else {
735747 action = try URL .concatQueryString (transfer_arena , action , buf .items );
736748 }
737-
738749 try self .navigateFromWebAPI (action , opts );
739750 }
740751
0 commit comments