diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org/connectbot/service/TerminalBridge.java | 5 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalKeyListener.java | 16 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java index 2c1c1e1..e9e69ca 100644 --- a/src/org/connectbot/service/TerminalBridge.java +++ b/src/org/connectbot/service/TerminalBridge.java @@ -151,7 +151,7 @@ public class TerminalBridge implements VDUDisplay { transport = null; - keyListener = new TerminalKeyListener(manager, this, buffer, host); + keyListener = new TerminalKeyListener(manager, this, buffer, null); } /** @@ -242,7 +242,7 @@ public class TerminalBridge implements VDUDisplay { selectionArea = new SelectionArea(); - keyListener = new TerminalKeyListener(manager, this, buffer, host); + keyListener = new TerminalKeyListener(manager, this, buffer, host.getEncoding()); } public PromptHelper getPromptHelper() { @@ -307,6 +307,7 @@ public class TerminalBridge implements VDUDisplay { public void setCharset(String encoding) { if (relay != null) relay.setCharset(encoding); + keyListener.setCharset(encoding); } /** diff --git a/src/org/connectbot/service/TerminalKeyListener.java b/src/org/connectbot/service/TerminalKeyListener.java index b63dab7..21bd218 100644 --- a/src/org/connectbot/service/TerminalKeyListener.java +++ b/src/org/connectbot/service/TerminalKeyListener.java @@ -6,7 +6,6 @@ package org.connectbot.service; import java.io.IOException; import org.connectbot.TerminalView; -import org.connectbot.bean.HostBean; import org.connectbot.bean.SelectionArea; import org.connectbot.util.PreferenceConstants; @@ -51,7 +50,6 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha private final TerminalManager manager; private final TerminalBridge bridge; private final VDUBuffer buffer; - private final HostBean host; protected KeyCharacterMap keymap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD); @@ -64,16 +62,18 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha private boolean selectingForCopy = false; private final SelectionArea selectionArea; + private String encoding; + private final SharedPreferences prefs; public TerminalKeyListener(TerminalManager manager, TerminalBridge bridge, VDUBuffer buffer, - HostBean host) { + String encoding) { this.manager = manager; this.bridge = bridge; this.buffer = buffer; - this.host = host; + this.encoding = encoding; selectionArea = new SelectionArea(); @@ -202,14 +202,14 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha else // TODO write encoding routine that doesn't allocate each time bridge.transport.write(new String(Character.toChars(key)) - .getBytes(host.getEncoding())); + .getBytes(encoding)); return true; } if (keyCode == KeyEvent.KEYCODE_UNKNOWN && event.getAction() == KeyEvent.ACTION_MULTIPLE) { - byte[] input = event.getCharacters().getBytes(host.getEncoding()); + byte[] input = event.getCharacters().getBytes(encoding); bridge.transport.write(input); return true; } @@ -483,4 +483,8 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha private void updateKeymode() { keymode = prefs.getString(PreferenceConstants.KEYMODE, PreferenceConstants.KEYMODE_RIGHT); } + + public void setCharset(String encoding) { + this.encoding = encoding; + } } |