This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch fix/CAMEL-24003-tui-fkey-passthrough
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 823273d37c791eb3672d39e940c9aaf3e8d566ef
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jul 13 21:50:42 2026 +0200

    CAMEL-24003: Pass F-keys through AI panel to global TUI handlers
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../org/apache/camel/dsl/jbang/core/commands/tui/AiPanel.java | 11 +++++++++++
 .../camel/dsl/jbang/core/commands/tui/CamelMonitor.java       |  4 +++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AiPanel.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AiPanel.java
index 40c10e68adef..882c7401cd4a 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AiPanel.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AiPanel.java
@@ -354,6 +354,9 @@ class AiPanel {
             close();
             return true;
         }
+        if (isFunctionKey(ke)) {
+            return false;
+        }
         if (ke.hasCtrl() && ke.isCharIgnoreCase('p') && !thinking.get() && 
activeCliCommand == null) {
             openProviderSwitch();
             return true;
@@ -1236,6 +1239,14 @@ class AiPanel {
         frame.renderWidget(Paragraph.from(new dev.tamboui.text.Text(lines, 
dev.tamboui.layout.Alignment.LEFT)), area);
     }
 
+    private static boolean isFunctionKey(KeyEvent ke) {
+        KeyCode code = ke.code();
+        return code == KeyCode.F1 || code == KeyCode.F2 || code == KeyCode.F3
+                || code == KeyCode.F4 || code == KeyCode.F5 || code == 
KeyCode.F6
+                || code == KeyCode.F7 || code == KeyCode.F9 || code == 
KeyCode.F10
+                || code == KeyCode.F11 || code == KeyCode.F12;
+    }
+
     private static String toHardBreaks(String text) {
         if (text == null) {
             return "";
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
index 95d1e3ce11d6..1250b66c7fc0 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
@@ -620,7 +620,9 @@ public class CamelMonitor extends CamelCommand {
                     }
                     return true;
                 }
-                return aiPanel.handleKeyEvent(ke);
+                if (aiPanel.handleKeyEvent(ke)) {
+                    return true;
+                }
             }
             if (actionsPopup.isVisible()) {
                 return actionsPopup.handleKeyEvent(ke);

Reply via email to