1. 程式人生 > >java 對應的Windows鍵值

java 對應的Windows鍵值

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 --> 50
3 --> 51
4 --> 52
5 --> 53
6 --> 54
7 --> 55
8 --> 56
9 --> 57

0 --> 48


A --> 65
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;
        }
    }
}