diff src/com/five_ten_sg/connectbot/service/TerminalMonitor.java @ 113:cb3b9b660b3d

depress() keys from the terminal monitor go straight thru buffer.keyPressed() rather than detour though the key listener
author Carl Byington <carl@five-ten-sg.com>
date Wed, 18 Jun 2014 14:24:00 -0700
parents 77ac18bc1b2f
children 13cea57ac61e
line wrap: on
line diff
--- a/src/com/five_ten_sg/connectbot/service/TerminalMonitor.java	Wed Jun 18 13:03:01 2014 -0700
+++ b/src/com/five_ten_sg/connectbot/service/TerminalMonitor.java	Wed Jun 18 14:24:00 2014 -0700
@@ -6,7 +6,6 @@
 import android.content.ServiceConnection;
 import android.os.IBinder;
 import android.util.Log;
-import android.view.KeyEvent;
 import android.view.View;
 import de.mud.terminal.vt320;
 import java.io.IOException;
@@ -39,7 +38,6 @@
 
     private Context             parent       = null;
     private vt320               buffer       = null;
-    private TerminalKeyListener keyListener  = null;
     private View                view         = null;
     private String              init         = null;
     private int                 start_line   = 0;       // monitor part of the screen for changes
@@ -50,7 +48,7 @@
     private boolean             moved        = false;   // used to delay cursor moved notifications
     private int                 to_line      = 0;       // ""
     private int                 to_column    = 0;       // ""
-    private HashMap<Integer, Integer>  keymap = null;
+    private HashMap<Integer, Integer>  keymap = null;   // map MS VK_ keys to vt320 virtual keys
     private IBinder             bound        = null;
     private Socket              monitor_socket = null;
     private InputStream         monitor_in     = null;
@@ -173,42 +171,40 @@
     };
 
 
-    public TerminalMonitor(Context parent, vt320 buffer, TerminalKeyListener keyListener, View view, String init) {
+    public TerminalMonitor(Context parent, vt320 buffer, View view, String init) {
         this.parent      = parent;
         this.buffer      = buffer;
-        this.keyListener = keyListener;
         this.view        = view;
         this.init        = init;
         // setup the windows->android keymapping
         // http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731
-        // http://developer.android.com/reference/android/view/KeyEvent.html
         keymap      = new HashMap<Integer, Integer>();
-        keymap.put(0x08, KeyEvent.KEYCODE_BACK);        // vk_back
-        keymap.put(0x09, KeyEvent.KEYCODE_TAB);         // vk_tab
-        keymap.put(0x0d, KeyEvent.KEYCODE_ENTER);       // vk_return
-        keymap.put(0x1b, KeyEvent.KEYCODE_ESCAPE);      // vk_escape
-        keymap.put(0x21, KeyEvent.KEYCODE_PAGE_UP);     // vk_prior
-        keymap.put(0x22, KeyEvent.KEYCODE_PAGE_DOWN);   // vk_next
-        keymap.put(0x23, KeyEvent.KEYCODE_MOVE_END);    // vk_end
-        keymap.put(0x24, KeyEvent.KEYCODE_MOVE_HOME);   // vk_home
-        keymap.put(0x25, KeyEvent.KEYCODE_DPAD_LEFT);   // vk_left
-        keymap.put(0x26, KeyEvent.KEYCODE_DPAD_UP);     // vk_up
-        keymap.put(0x27, KeyEvent.KEYCODE_DPAD_RIGHT);  // vk_right
-        keymap.put(0x28, KeyEvent.KEYCODE_DPAD_DOWN);   // vk_down
-        keymap.put(0x2d, KeyEvent.KEYCODE_INSERT);      // vk_insert
-        keymap.put(0x2e, KeyEvent.KEYCODE_DEL);         // vk_delete
-        keymap.put(0x70, KeyEvent.KEYCODE_F1);          // vk_f1
-        keymap.put(0x71, KeyEvent.KEYCODE_F2);          // vk_f2
-        keymap.put(0x72, KeyEvent.KEYCODE_F3);          // vk_f3
-        keymap.put(0x73, KeyEvent.KEYCODE_F4);          // vk_f4
-        keymap.put(0x74, KeyEvent.KEYCODE_F5);          // vk_f5
-        keymap.put(0x75, KeyEvent.KEYCODE_F6);          // vk_f6
-        keymap.put(0x76, KeyEvent.KEYCODE_F7);          // vk_f7
-        keymap.put(0x77, KeyEvent.KEYCODE_F8);          // vk_f8
-        keymap.put(0x78, KeyEvent.KEYCODE_F9);          // vk_f9
-        keymap.put(0x79, KeyEvent.KEYCODE_F10);         // vk_f10
-        keymap.put(0x7a, KeyEvent.KEYCODE_F11);         // vk_f11
-        keymap.put(0x7b, KeyEvent.KEYCODE_F12);         // vk_f12
+        keymap.put(0x08, vt320.KEY_BACK_SPACE);  // vk_back
+        keymap.put(0x09, vt320.KEY_TAB);         // vk_tab
+        keymap.put(0x0d, vt320.KEY_ENTER);       // vk_return
+        keymap.put(0x1b, vt320.KEY_ESCAPE);      // vk_escape
+        keymap.put(0x21, vt320.KEY_PAGE_UP);     // vk_prior
+        keymap.put(0x22, vt320.KEY_PAGE_DOWN);   // vk_next
+        keymap.put(0x23, vt320.KEY_END);         // vk_end
+        keymap.put(0x24, vt320.KEY_HOME);        // vk_home
+        keymap.put(0x25, vt320.KEY_LEFT);        // vk_left
+        keymap.put(0x26, vt320.KEY_UP);          // vk_up
+        keymap.put(0x27, vt320.KEY_RIGHT);       // vk_right
+        keymap.put(0x28, vt320.KEY_DOWN);        // vk_down
+        keymap.put(0x2d, vt320.KEY_INSERT);      // vk_insert
+        keymap.put(0x2e, vt320.KEY_DELETE);      // vk_delete
+        keymap.put(0x70, vt320.KEY_F1);          // vk_f1
+        keymap.put(0x71, vt320.KEY_F2);          // vk_f2
+        keymap.put(0x72, vt320.KEY_F3);          // vk_f3
+        keymap.put(0x73, vt320.KEY_F4);          // vk_f4
+        keymap.put(0x74, vt320.KEY_F5);          // vk_f5
+        keymap.put(0x75, vt320.KEY_F6);          // vk_f6
+        keymap.put(0x76, vt320.KEY_F7);          // vk_f7
+        keymap.put(0x77, vt320.KEY_F8);          // vk_f8
+        keymap.put(0x78, vt320.KEY_F9);          // vk_f9
+        keymap.put(0x79, vt320.KEY_F10);         // vk_f10
+        keymap.put(0x7a, vt320.KEY_F11);         // vk_f11
+        keymap.put(0x7b, vt320.KEY_F12);         // vk_f12
         // bind to the monitor service
         Intent intent = new Intent("com.five_ten_sg.connectbot.monitor.MonitorService");
         parent.bindService(intent, monitor_connection, Context.BIND_AUTO_CREATE);
@@ -400,10 +396,6 @@
     public synchronized void depress(int vk_key) {
         Log.i(TAG, String.format("depress() %d", vk_key));
         Integer x = keymap.get(new Integer(vk_key));
-
-        if (x != null) {
-            KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, x.intValue());
-            keyListener.onKey(view, event.getKeyCode(), event);
-        }
+        if (x != null) buffer.keyPressed(x, ' ', 0);
     }
 }