From 348c5cc05179b88a10d21bc490bacf4e4d13b549 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Wed, 15 Dec 2021 20:17:23 +0000 Subject: [PATCH] Implement detection of arrow keys. --- src/sig/SigTerm.java | 43 +++++++++++++++++++++++++++---- target/SigTerm-0.jar | Bin 704095 -> 704297 bytes target/classes/sig/SigTerm.class | Bin 5869 -> 6178 bytes 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/sig/SigTerm.java b/src/sig/SigTerm.java index 8520c42..77c2b64 100644 --- a/src/sig/SigTerm.java +++ b/src/sig/SigTerm.java @@ -9,6 +9,8 @@ import org.jline.utils.NonBlockingReader; public class SigTerm{ static boolean RUNNING=true; static String storedVal=""; + static boolean is27 = false; + static boolean is91 = false; final static String ESC = "\u001b"; final static String CSI = "["; final static String CSICODE = ESC+CSI; @@ -165,6 +167,11 @@ public class SigTerm{ CursorSetPosition(1,8); System.out.println(RESET); } + + static void RefreshScreen() { + CursorLineDown(1); + ScrollUp(1); + } public static void main(String[] args) { try { @@ -177,12 +184,38 @@ public class SigTerm{ while (RUNNING) { int ch = r.peek(250); if (ch!=NonBlockingReader.READ_EXPIRED) { - Text(Integer.toString(r.read())); - } else { - Text("..."); + if (!is27&&!is91&&ch==27) { + is27=true; + } else + if (is27&&!is91&&ch==91) { + is91=true; + } else + if (is27&&is91) { + //Possible special code. + switch (ch) { + case 65:{ + Text("UP"); + }break; + case 66:{ + Text("DOWN"); + }break; + case 67:{ + Text("RIGHT"); + }break; + case 68:{ + Text("LEFT"); + }break; + } + is27=false; + is91=false; + } else + { + //Text(Integer.toString(ch)); + is27=is91=false; + } + r.read(); } - CursorLineDown(1); - ScrollUp(1); + RefreshScreen(); } r.shutdown(); term.close(); diff --git a/target/SigTerm-0.jar b/target/SigTerm-0.jar index 39b15e8a65566329933b8909711a3d4d64bdef45..956f85477e633dc6ebca910c4b95483474d419af 100644 GIT binary patch delta 3145 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 TK6`?E_Ox)@DB4dhXvXxqL0x=E9*27jJ>#5RH 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 PV7)7G?uUR=L=XQT