java 對應的Windows鍵值
阿新 • • 發佈:2018-12-06
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;
}
}
}