@@ -645,26 +645,38 @@ pub const Page = struct {
645645 };
646646 }
647647
648- fn _keydownCallback (page : * Page , event : * parser.Event ) ! void {
649- const kbe : * parser.KeyboardEvent = @ptrCast (event );
648+ fn _keydownCallback (self : * Page , event : * parser.Event ) ! void {
650649 const target = (try parser .eventTarget (event )) orelse return ;
651650 const node = parser .eventTargetToNode (target );
652651 const tag = (try parser .nodeHTMLGetTagType (node )) orelse return ;
652+
653+ const kbe : * parser.KeyboardEvent = @ptrCast (event );
654+ var new_key = try parser .keyboardEventGetKey (kbe );
655+ if (std .mem .eql (u8 , new_key , "Dead" )) {
656+ return ;
657+ }
658+
653659 switch (tag ) {
654660 .input = > {
655661 const element : * parser.Element = @ptrCast (node );
656662 const input_type = (try parser .elementGetAttribute (element , "type" )) orelse "text" ;
657663 if (std .mem .eql (u8 , input_type , "text" )) {
664+ if (std .mem .eql (u8 , new_key , "Enter" )) {
665+ const form = (try self .formForElement (element )) orelse return ;
666+ return self .submitForm (@ptrCast (form ), null );
667+ }
668+
658669 const value = try parser .inputGetValue (@ptrCast (element ));
659- const new_key = try parser .keyboardEventGetKey (kbe );
660- const new_value = try std .mem .concat (page .arena , u8 , &.{ value , new_key });
670+ const new_value = try std .mem .concat (self .arena , u8 , &.{ value , new_key });
661671 try parser .inputSetValue (@ptrCast (element ), new_value );
662672 }
663673 },
664674 .textarea = > {
665675 const value = try parser .textareaGetValue (@ptrCast (node ));
666- const new_key = try parser .keyboardEventGetKey (kbe );
667- const new_value = try std .mem .concat (page .arena , u8 , &.{ value , new_key });
676+ if (std .mem .eql (u8 , new_key , "Enter" )) {
677+ new_key = "\n " ;
678+ }
679+ const new_value = try std .mem .concat (self .arena , u8 , &.{ value , new_key });
668680 try parser .textareaSetValue (@ptrCast (node ), new_value );
669681 },
670682 else = > {},
@@ -728,7 +740,6 @@ pub const Page = struct {
728740 } else {
729741 action = try URL .concatQueryString (transfer_arena , action , buf .items );
730742 }
731-
732743 try self .navigateFromWebAPI (action , opts );
733744 }
734745
0 commit comments