📄 kvmmanager.java
字号:
/*
* KVMManager.java
*
* Created on May 1, 2007, 10:57 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package hk.haha.onet.ajaxvnc;
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.image.*;
import java.util.HashMap;
/**
*
* @author heic
*/
public class KVMManager {
private boolean DEBUG = true;
private Robot robot;
private BufferedImage screenimage;
private Rectangle screenbound;
private HashMap keymap;
/** Creates a new instance of KVMManager */
public KVMManager() {
if (DEBUG) System.out.println(getClass().getName() + ": KVMManager created.");
setScreenBound(getDefaultScreenBound());
robot = createRobot();
screenimage = null;
keymap = new HashMap();
assignKeyMap();
}
private void assignKeyMap() {
// First row
keymap.put(new Integer(27 ), new Integer(KeyEvent.VK_ESCAPE)); // Esc
keymap.put(new Integer(192 ), new Integer(KeyEvent.VK_BACK_QUOTE)); // `
keymap.put(new Integer(49 ), new Integer(KeyEvent.VK_1)); // 1
keymap.put(new Integer(50 ), new Integer(KeyEvent.VK_2)); // 2
keymap.put(new Integer(51 ), new Integer(KeyEvent.VK_3)); // 3
keymap.put(new Integer(52 ), new Integer(KeyEvent.VK_4)); // 4
keymap.put(new Integer(53 ), new Integer(KeyEvent.VK_5)); // 5
keymap.put(new Integer(54 ), new Integer(KeyEvent.VK_6)); // 6
keymap.put(new Integer(55 ), new Integer(KeyEvent.VK_7)); // 7
keymap.put(new Integer(56 ), new Integer(KeyEvent.VK_8)); // 8
keymap.put(new Integer(57 ), new Integer(KeyEvent.VK_9)); // 9
keymap.put(new Integer(48 ), new Integer(KeyEvent.VK_0)); // 0
keymap.put(new Integer(189 ), new Integer(KeyEvent.VK_MINUS)); // -
keymap.put(new Integer(187 ), new Integer(KeyEvent.VK_EQUALS)); // =
keymap.put(new Integer(8 ), new Integer(KeyEvent.VK_BACK_SPACE)); // Backspace
// Second row
keymap.put(new Integer(9 ), new Integer(KeyEvent.VK_TAB)); // Tab
keymap.put(new Integer(81 ), new Integer(KeyEvent.VK_Q)); // Q
keymap.put(new Integer(87 ), new Integer(KeyEvent.VK_W)); // W
keymap.put(new Integer(69 ), new Integer(KeyEvent.VK_E)); // E
keymap.put(new Integer(82 ), new Integer(KeyEvent.VK_R)); // R
keymap.put(new Integer(84 ), new Integer(KeyEvent.VK_T)); // T
keymap.put(new Integer(89 ), new Integer(KeyEvent.VK_Y)); // Y
keymap.put(new Integer(85 ), new Integer(KeyEvent.VK_U)); // U
keymap.put(new Integer(73 ), new Integer(KeyEvent.VK_I)); // I
keymap.put(new Integer(79 ), new Integer(KeyEvent.VK_O)); // O
keymap.put(new Integer(80 ), new Integer(KeyEvent.VK_P)); // P
keymap.put(new Integer(219 ), new Integer(KeyEvent.VK_OPEN_BRACKET)); // [
keymap.put(new Integer(221 ), new Integer(KeyEvent.VK_CLOSE_BRACKET)); // ]
keymap.put(new Integer(220 ), new Integer(KeyEvent.VK_BACK_SLASH)); // \
keymap.put(new Integer(65 ), new Integer(KeyEvent.VK_A)); // A
keymap.put(new Integer(83 ), new Integer(KeyEvent.VK_S)); // S
keymap.put(new Integer(68 ), new Integer(KeyEvent.VK_D)); // D
keymap.put(new Integer(70 ), new Integer(KeyEvent.VK_F)); // F
keymap.put(new Integer(71 ), new Integer(KeyEvent.VK_G)); // G
keymap.put(new Integer(72 ), new Integer(KeyEvent.VK_H)); // H
keymap.put(new Integer(74 ), new Integer(KeyEvent.VK_J)); // J
keymap.put(new Integer(75 ), new Integer(KeyEvent.VK_K)); // K
keymap.put(new Integer(76 ), new Integer(KeyEvent.VK_L)); // L
keymap.put(new Integer(186 ), new Integer(KeyEvent.VK_SEMICOLON)); // ;
keymap.put(new Integer(222 ), new Integer(KeyEvent.VK_QUOTE)); // '
keymap.put(new Integer(13 ), new Integer(KeyEvent.VK_ENTER)); // Enter
keymap.put(new Integer(90 ), new Integer(KeyEvent.VK_Z)); // Z
keymap.put(new Integer(88 ), new Integer(KeyEvent.VK_X)); // X
keymap.put(new Integer(67 ), new Integer(KeyEvent.VK_C)); // C
keymap.put(new Integer(86 ), new Integer(KeyEvent.VK_V)); // V
keymap.put(new Integer(66 ), new Integer(KeyEvent.VK_B)); // B
keymap.put(new Integer(78 ), new Integer(KeyEvent.VK_N)); // N
keymap.put(new Integer(77 ), new Integer(KeyEvent.VK_M)); // M
keymap.put(new Integer(188 ), new Integer(KeyEvent.VK_COMMA)); // ,
keymap.put(new Integer(190 ), new Integer(KeyEvent.VK_DECIMAL)); // .
keymap.put(new Integer(191 ), new Integer(KeyEvent.VK_SLASH)); // /
keymap.put(new Integer(32 ), new Integer(KeyEvent.VK_SPACE)); // Space
keymap.put(new Integer(112 ), new Integer(KeyEvent.VK_F1)); // F1
keymap.put(new Integer(113 ), new Integer(KeyEvent.VK_F2)); // F2
keymap.put(new Integer(114 ), new Integer(KeyEvent.VK_F3)); // F3
keymap.put(new Integer(115 ), new Integer(KeyEvent.VK_F4)); // F4
keymap.put(new Integer(116 ), new Integer(KeyEvent.VK_F5)); // F5
keymap.put(new Integer(117 ), new Integer(KeyEvent.VK_F6)); // F6
keymap.put(new Integer(118 ), new Integer(KeyEvent.VK_F7)); // F7
keymap.put(new Integer(119 ), new Integer(KeyEvent.VK_F8)); // F8
keymap.put(new Integer(120 ), new Integer(KeyEvent.VK_F9)); // F9
keymap.put(new Integer(121 ), new Integer(KeyEvent.VK_F10)); // F10
keymap.put(new Integer(122 ), new Integer(KeyEvent.VK_F11)); // F11
keymap.put(new Integer(123 ), new Integer(KeyEvent.VK_F12)); // F12
keymap.put(new Integer(111 ), new Integer(KeyEvent.VK_SLASH)); // /
keymap.put(new Integer(42 ), new Integer(KeyEvent.VK_ASTERISK)); // *
keymap.put(new Integer(45 ), new Integer(KeyEvent.VK_MINUS)); // -
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_7)); // 7
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_8)); // 8
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_9)); // 9
keymap.put(new Integer(43 ), new Integer(KeyEvent.VK_PLUS)); // +
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_4)); // 4
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_5)); // 5
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_6)); // 6
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_1)); // 1
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_2)); // 2
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_3)); // 3
keymap.put(new Integer(0 ), new Integer(KeyEvent.VK_0)); // 0
keymap.put(new Integer(46 ), new Integer(KeyEvent.VK_DELETE)); // Del
keymap.put(new Integer(13 ), new Integer(KeyEvent.VK_ENTER)); // Enter
keymap.put(new Integer(36 ), new Integer(KeyEvent.VK_HOME)); // Home
keymap.put(new Integer(38 ), new Integer(KeyEvent.VK_UP)); // Up
keymap.put(new Integer(33 ), new Integer(KeyEvent.VK_PAGE_UP)); // PgUp
keymap.put(new Integer(37 ), new Integer(KeyEvent.VK_LEFT)); // Left
keymap.put(new Integer(39 ), new Integer(KeyEvent.VK_RIGHT)); // Right
keymap.put(new Integer(35 ), new Integer(KeyEvent.VK_END)); // End
keymap.put(new Integer(40 ), new Integer(KeyEvent.VK_DOWN)); // Down
keymap.put(new Integer(34 ), new Integer(KeyEvent.VK_PAGE_DOWN)); // PgDn
keymap.put(new Integer(45 ), new Integer(KeyEvent.VK_INSERT)); // Ins
keymap.put(new Integer(46 ), new Integer(KeyEvent.VK_DELETE)); // Del
}
private int convAscii(int ascii) {
Integer scancode;
scancode = (Integer)keymap.get(new Integer(ascii));
if (scancode==null)
return -1;
else
return scancode.intValue();
}
private Robot createRobot() {
try {
return new Robot();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public void keyPress(int keycode) {
int scancode = convAscii(keycode);
if (scancode >= 0)
robot.keyPress(scancode);
}
public void keyRelease(int keycode) {
int scancode = convAscii(keycode);
if (scancode >= 0)
robot.keyRelease(scancode);
}
public void keyStroke(int keycode) {
keyPress(keycode);
keyRelease(keycode);
}
public void mouseMove(int x, int y) {
robot.mouseMove(x, y);
}
public void mousePress(int buttons) {
int mask = 0;
System.out.println("mousePress:"+buttons);
if ((buttons & 1) != 0) mask |= InputEvent.BUTTON1_MASK;
if ((buttons & 2) != 0) mask |= InputEvent.BUTTON3_MASK;
if ((buttons & 4) != 0) mask |= InputEvent.BUTTON2_MASK;
robot.mousePress(mask);
}
public void mouseRelease(int buttons) {
int mask = 0;
if ((buttons & 1) != 0) mask |= InputEvent.BUTTON1_MASK;
if ((buttons & 2) != 0) mask |= InputEvent.BUTTON3_MASK;
if ((buttons & 4) != 0) mask |= InputEvent.BUTTON2_MASK;
robot.mouseRelease(mask);
}
public void mouseStroke(int buttons) {
mousePress(buttons);
mouseRelease(buttons);
}
public void setScreenBound(Rectangle bound) {
screenbound = bound;
if (DEBUG) System.out.println(getClass().getName() + ": Screen setup at " + screenbound.width + "x" + screenbound.height);
}
public Rectangle getScreenBound() {
return screenbound;
}
public Rectangle getDefaultScreenBound() {
// get screen bound
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
return gd.getDefaultConfiguration().getBounds();
}
public BufferedImage captureScreen() {
screenimage = robot.createScreenCapture(screenbound);
return screenimage;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -