From c9a3d11cb8402c08b256adbc7b9ea1a3d3e7ff93 Mon Sep 17 00:00:00 2001
From: coreyhuinker <corey.huinker@gmail.com>
Date: Wed, 18 Jan 2023 16:00:10 -0500
Subject: [PATCH v1] Add javascript to enable up/next/previous navigation via
 arrow keys

---
 doc/src/sgml/stylesheet-speedup-xhtml.xsl | 6 ++++++
 doc/src/sgml/stylesheet.xsl               | 8 ++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/doc/src/sgml/stylesheet-speedup-xhtml.xsl b/doc/src/sgml/stylesheet-speedup-xhtml.xsl
index da0f2b5a97..d7e63ab38f 100644
--- a/doc/src/sgml/stylesheet-speedup-xhtml.xsl
+++ b/doc/src/sgml/stylesheet-speedup-xhtml.xsl
@@ -339,6 +339,12 @@
     </xsl:if>
 
     <xsl:call-template name="user.head.content"/>
+
+    <script>document.addEventListener("keydown", function(event) { event.preventDefault();
+      if (event.key == "ArrowLeft") { document.getElementById('nav-prev').click(); }
+      else if (event.key == "ArrowRight") { document.getElementById('nav-next').click(); }
+      else if (event.key == "ArrowUp") { document.getElementById('nav-up').click(); } });
+    </script>
   </head>
 </xsl:template>
 
diff --git a/doc/src/sgml/stylesheet.xsl b/doc/src/sgml/stylesheet.xsl
index b6141303ab..6fe3c51e18 100644
--- a/doc/src/sgml/stylesheet.xsl
+++ b/doc/src/sgml/stylesheet.xsl
@@ -72,7 +72,7 @@ Customization of header
             <tr>
               <td width="10%" align="{$direction.align.start}">
                 <xsl:if test="count($prev)>0">
-                  <a accesskey="p">
+                  <a accesskey="p" id="nav-prev">
                     <xsl:attribute name="href">
                       <xsl:call-template name="href.target">
                         <xsl:with-param name="object" select="$prev"/>
@@ -91,7 +91,7 @@ Customization of header
               <td width="10%" align="{$direction.align.start}">
                 <xsl:choose>
                   <xsl:when test="count($up)&gt;0">
-                    <a accesskey="u">
+                    <a accesskey="u" id="nav-up">
                       <xsl:attribute name="href">
                         <xsl:call-template name="href.target">
                           <xsl:with-param name="object" select="$up"/>
@@ -120,7 +120,7 @@ Customization of header
               <td width="10%" align="{$direction.align.end}">
                 <xsl:choose>
                   <xsl:when test="$home != . or $nav.context = 'toc'">
-                    <a accesskey="h">
+                    <a accesskey="h" id="nav-home">
                       <xsl:attribute name="href">
                         <xsl:call-template name="href.target">
                           <xsl:with-param name="object" select="$home"/>
@@ -143,7 +143,7 @@ Customization of header
               <td width="10%" align="{$direction.align.end}">
                 <xsl:text>&#160;</xsl:text>
                 <xsl:if test="count($next)>0">
-                  <a accesskey="n">
+                  <a accesskey="n" id="nav-next">
                     <xsl:attribute name="href">
                       <xsl:call-template name="href.target">
                         <xsl:with-param name="object" select="$next"/>
-- 
2.39.0

