Merge branch 'subtree'
[fanfix.git] / src / jexer / TKeypress.java
index 2470bdfba892196348016f85f0633489413352c5..20db8bb267ebc43389f2d900c49aa5b3462d22d1 100644 (file)
@@ -3,7 +3,7 @@
  *
  * The MIT License (MIT)
  *
- * Copyright (C) 2017 Kevin Lamonte
+ * Copyright (C) 2019 Kevin Lamonte
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -31,7 +31,7 @@ package jexer;
 /**
  * This class represents keystrokes.
  */
-public final class TKeypress {
+public class TKeypress {
 
     // ------------------------------------------------------------------------
     // Constants --------------------------------------------------------------
@@ -174,7 +174,6 @@ public final class TKeypress {
      */
     public static final int ESC         = 43;
 
-
     // Special "no-key" keypress, used to ignore undefined keystrokes
     public static final TKeypress kbNoKey = new TKeypress(true,
             TKeypress.NONE, ' ', false, false, false);
@@ -488,6 +487,26 @@ public final class TKeypress {
             0, 'y', true, false, false);
     public static final TKeypress kbAltZ = new TKeypress(false,
             0, 'z', true, false, false);
+    public static final TKeypress kbAlt0 = new TKeypress(false,
+            0, '0', true, false, false);
+    public static final TKeypress kbAlt1 = new TKeypress(false,
+            0, '1', true, false, false);
+    public static final TKeypress kbAlt2 = new TKeypress(false,
+            0, '2', true, false, false);
+    public static final TKeypress kbAlt3 = new TKeypress(false,
+            0, '3', true, false, false);
+    public static final TKeypress kbAlt4 = new TKeypress(false,
+            0, '4', true, false, false);
+    public static final TKeypress kbAlt5 = new TKeypress(false,
+            0, '5', true, false, false);
+    public static final TKeypress kbAlt6 = new TKeypress(false,
+            0, '6', true, false, false);
+    public static final TKeypress kbAlt7 = new TKeypress(false,
+            0, '7', true, false, false);
+    public static final TKeypress kbAlt8 = new TKeypress(false,
+            0, '8', true, false, false);
+    public static final TKeypress kbAlt9 = new TKeypress(false,
+            0, '9', true, false, false);
     public static final TKeypress kbCtrlA = new TKeypress(false,
             0, 'A', false, true, false);
     public static final TKeypress kbCtrlB = new TKeypress(false,
@@ -593,6 +612,41 @@ public final class TKeypress {
     public static final TKeypress kbAltShiftZ = new TKeypress(false,
             0, 'Z', true, false, true);
 
+    public static final TKeypress kbAltShiftHome = new TKeypress(true,
+            TKeypress.HOME, ' ', true, false, true);
+    public static final TKeypress kbAltShiftEnd = new TKeypress(true,
+            TKeypress.END, ' ', true, false, true);
+    public static final TKeypress kbAltShiftPgUp = new TKeypress(true,
+            TKeypress.PGUP, ' ', true, false, true);
+    public static final TKeypress kbAltShiftPgDn = new TKeypress(true,
+            TKeypress.PGDN, ' ', true, false, true);
+    public static final TKeypress kbAltShiftUp = new TKeypress(true,
+            TKeypress.UP, ' ', true, false, true);
+    public static final TKeypress kbAltShiftDown = new TKeypress(true,
+            TKeypress.DOWN, ' ', true, false, true);
+    public static final TKeypress kbAltShiftLeft = new TKeypress(true,
+            TKeypress.LEFT, ' ', true, false, true);
+    public static final TKeypress kbAltShiftRight = new TKeypress(true,
+            TKeypress.RIGHT, ' ', true, false, true);
+
+    public static final TKeypress kbCtrlShiftHome = new TKeypress(true,
+            TKeypress.HOME, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftEnd = new TKeypress(true,
+            TKeypress.END, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftPgUp = new TKeypress(true,
+            TKeypress.PGUP, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftPgDn = new TKeypress(true,
+            TKeypress.PGDN, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftUp = new TKeypress(true,
+            TKeypress.UP, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftDown = new TKeypress(true,
+            TKeypress.DOWN, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftLeft = new TKeypress(true,
+            TKeypress.LEFT, ' ', false, true, true);
+    public static final TKeypress kbCtrlShiftRight = new TKeypress(true,
+            TKeypress.RIGHT, ' ', false, true, true);
+
+
     /**
      * Backspace as ^H.
      */
@@ -603,7 +657,7 @@ public final class TKeypress {
      * Backspace as ^?.
      */
     public static final TKeypress kbBackspaceDel = new TKeypress(false,
-            0, (char)0x7F, false, false, false);
+            0, (char) 0x7F, false, false, false);
 
     // ------------------------------------------------------------------------
     // Variables --------------------------------------------------------------
@@ -637,7 +691,7 @@ public final class TKeypress {
     /**
      * The character received.
      */
-    private char ch;
+    private int ch;
 
     // ------------------------------------------------------------------------
     // Constructors -----------------------------------------------------------
@@ -653,7 +707,7 @@ public final class TKeypress {
      * @param ctrl if true, CTRL was pressed with this keystroke
      * @param shift if true, SHIFT was pressed with this keystroke
      */
-    public TKeypress(final boolean isKey, final int fnKey, final char ch,
+    public TKeypress(final boolean isKey, final int fnKey, final int ch,
             final boolean alt, final boolean ctrl, final boolean shift) {
 
         this.isFunctionKey = isKey;
@@ -718,7 +772,7 @@ public final class TKeypress {
      *
      * @return the character (only valid if isKey is false)
      */
-    public char getChar() {
+    public int getChar() {
         return ch;
     }
 
@@ -797,6 +851,23 @@ public final class TKeypress {
      */
     @Override
     public String toString() {
+        // Special case: Enter is "<arrow> <line> <angle>"
+        if (equals(kbEnter)) {
+            return "\u25C0\u2500\u2518";
+        }
+
+        // Special case: Space is "Space"
+        if (equals(kbSpace)) {
+            return "Space";
+        }
+
+        if (equals(kbShiftLeft)) {
+            return "Shift+\u2190";
+        }
+        if (equals(kbShiftRight)) {
+            return "Shift+\u2192";
+        }
+
         if (isFunctionKey) {
             switch (keyCode) {
             case F1: