Windows键盘键值转java KeyEvent键值方法:
/**
* Windows键盘键值转java KeyEvent键值
*
* @param keyValue
* @return
*/
public static Integer winKeyTurnKeyEvent(Integer keyValue) {
switch (keyValue) {
case 13: // 回车键
return 10;
case 91: // Windows键
return 524;
case 188: // ,键
return 44;
case 189: // -键
return 45;
case 190: // .键
return 46;
case 191: // /键
return 47;
case 186: // ;键
return 59;
case 219: // [键
return 91;
case 220: // \键
return 92;
case 221: // ]键
return 93;
case 46: // delete键
return 127;
case 45: // insert键
return 155;
default:
return keyValue;
}
}
java 对应的Windows键值
1 --> 49
2 --> 503 --> 51
4 --> 52
5 --> 53
6 --> 54
7 --> 55
8 --> 56
9 --> 57
0 --> 48
B --> 66
C --> 67
D --> 68
E --> 69
F --> 70
G --> 71
H --> 72
I --> 73
J --> 74
K --> 75
L --> 76
M --> 77
N --> 78
O --> 79
P --> 80
Q --> 81
R --> 82
S --> 83
T --> 84
U --> 85
V --> 86
W --> 87
X --> 88
Y --> 89
Z --> 90
Backspace --> 8
Tab --> 9
Enter --> 10
Shift --> 16
Ctrl --> 17
Alt --> 18
Caps Lock --> 20
Esc --> 27
空格键 -->32
Windows --> 524
向左箭头 --> 37
向上箭头 --> 38
向右箭头 --> 39
向下箭头 --> 40
逗号 --> 44
减号 --> 45
句点 --> 46
斜杠 --> 47
分号 --> 59
等号 --> 61
左方括号 --> 91
反斜杠 --> 92
右方括号 --> 93
后引号 --> 192
引号 --> 222
Pause --> 19
Page Up --> 33
Page Down --> 34
End --> 35
Home --> 36
Delete --> 127
Scroll Lock --> 145
Insert --> 155
NumPad-0 --> 96
NumPad-1 --> 97
NumPad-2 --> 98
NumPad-3 --> 99
NumPad-4 --> 100
NumPad-5 --> 101
NumPad-6 --> 102
NumPad-7 --> 103
NumPad-8 --> 104
NumPad-9 --> 105
NumPad * --> 106
NumPad + --> 107
NumPad - --> 109
NumPad . --> 110
NumPad / --> 111
Num Lock --> 144
F1 --> 112
F2 --> 113
F3 --> 114
F4 --> 115
F5 --> 116
F6 --> 117
F7 --> 118
F8 --> 119
F9 --> 120
F10 --> 121
F11 --> 122
F12 --> 123
电脑控制工具类
package com.chen.utils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.OutputStream;
public class ComputerControlUtils {
private static Robot rb = null;
private static Integer screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
private static Integer screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
static {
try {
rb = new Robot();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取屏幕分辨率 下标0:屏幕宽度 下标1:屏幕高低
*
* @return
*/
public static Integer[] getScreenSize() {
Integer[] integers = {screenWidth, screenHeight};
return integers;
}
/**
* 获取当前屏幕宽度(像素)
*
* @return
*/
public static Integer getScreenSizeWidth() {
return screenWidth;
}
/**
* 获取当前屏幕高度(像素)
*
* @return
*/
public static Integer getScreenSizeHeight() {
return screenHeight;
}
/**
* 电脑截屏图片
*
* @param pathANdName
* @param outputStream
*/
public static void captureScreen(String pathANdName, OutputStream outputStream) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screenRectangle = new Rectangle(screenSize);
Robot robot = null;
try {
robot = new Robot();
if (pathANdName != null) {
File f = new File(pathANdName);
ImageIO.write(image, "png", f);
}
if (outputStream != null) {
ImageIO.write(image, "png", outputStream);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 写路径
*
* @param path
* @param fileName
*/
public static void captureScreenPath(String path, String fileName) {
captureScreen(path + fileName, null);
}
/**
* 写输出流
*
* @param outputStream
*/
public static void captureScreenOut(OutputStream outputStream) {
captureScreen(null, outputStream);
}
/**
* 单击一个或多个键盘键
*
* @param keyValues(可增长变量)
*/
public static void clickKey(Integer... keyValues) {
pressKey(keyValues);
rb.delay(200);
putKey(keyValues);
}
/**
* 睡眠指定的时间。
* @param ms
*/
public static void delay(Integer ms){
rb.delay(ms);
}
/**
* 按下一个或多个按钮
*
* @param keyValues
*/
public static void pressKey(Integer... keyValues) {
for (Integer i : keyValues) {
rb.keyPress(i);
}
}
/**
* 放开一个或多个按钮
*
* @param keyValues
*/
public static void putKey(Integer... keyValues) {
for (Integer i : keyValues) {
rb.keyRelease(i);
}
}
/**
* 将鼠标指针移动到给定屏幕坐标
*
* @param x
* @param y
*/
public static void mouseMove(Integer x, Integer y) {
System.out.println(x + " " + y);
rb.mouseMove(x, y);
}
/**
* 获取本机的分辨率,再根据传入的分辨率调整鼠标位置
* @param width
* @param height
* @param x
* @param y
*/
public static void proportionAdjustMouseMove(Integer width, Integer height, Integer x, Integer y){
System.out.println(screenWidth + " " + screenHeight);
mouseMove((int)Math.round(screenWidth * 1.0 / width * x), (int)Math.round(screenHeight * 1.0 / height * y));
}
/**
* 获取当前鼠标位置
*
* @param
*/
public static Point getMouseLocation() {
return java.awt.MouseInfo.getPointerInfo().getLocation();
}
/**
* 获取当前鼠标位置X
*
* @param
*/
public static Integer getMouseLocationX() {
return getMouseLocation().x;
}
/**
* 获取当前鼠标位置Y
*
* @param
*/
public static Integer getMouseLocationY() {
return getMouseLocation().y;
}
/**
* 按下一个或多个鼠标按钮
*
* @param buttons
*/
public static void mousePress(Integer buttons) {
rb.mousePress(buttons);
}
/**
* 释放一个或多个鼠标按钮
*
* @param buttons
*/
public static void mouseRelease(Integer buttons) {
rb.mouseRelease(buttons);
}
/**
* 点击一个或多个鼠标按钮
* @param buttons
*/
public static void clickMouse(Integer buttons){
mousePress(buttons);
rb.delay(200);
mouseRelease(buttons);
}
/**
* 鼠标滑轮滚动
*
* @param wheelAmt
*/
public static void mouseWheel(Integer wheelAmt) {
rb.mouseWheel(wheelAmt);
}
/**
* Windows鼠标键值转java InputEvent(注:这里只有三个键)
*
* @param mouseValue
* @return
*/
public static Integer winMouseTurnMouseEvent(Integer mouseValue) {
switch (mouseValue) {
case 1: // 鼠标左键
return 16;
case 2: // 鼠标中键
return 8;
case 3: //鼠标右键
return 4;
default:
return mouseValue;
}
}
/**
* Windows键盘键值转java KeyEvent键值
*
* @param keyValue
* @return
*/
public static Integer winKeyTurnKeyEvent(Integer keyValue) {
switch (keyValue) {
case 13: // 回车键
return 10;
case 91: // Windows键
return 524;
case 188: // ,键
return 44;
case 189: // -键
return 45;
case 190: // .键
return 46;
case 191: // /键
return 47;
case 186: // ;键
return 59;
case 219: // [键
return 91;
case 220: // \键
return 92;
case 221: // ]键
return 93;
case 46: // delete键
return 127;
case 45: // insert键
return 155;
default:
return keyValue;
}
}
}