最近自己在用SWT做个小插件,需要用到系统热键,但是热键只能在当前shell激活的状态下才有效,于是网上各种找。。。终于找到了JIntellitype 。
用JIntellitype 注册热键参考代码如下:
//第二个参数为组合键,如果为0,则认为是没有组合键,118代表了F8
JIntellitype.getInstance().registerHotKey(1, 0, 118);//hide shell
//组合键的应用
//JIntellitype.getInstance().registerHotKey(1, JIntellitype.MOD_CONTROL, (int)'1');//hide shell
JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {
public void onHotKey(int identifier) {
if(identifier == 1) {
} else if(identifier == 2) {
}
}
});
备忘按键的数值:
public static final int F1 = 112;
public static final int F2 = 113;
public static final int F3 = 114;
public static final int F4 = 115;
public static final int F5 = 116;
public static final int F6 = 117;
public static final int F7 = 118;
public static final int F8 = 119;
public static final int F9 = 120;
public static final int F10 = 121;
public static final int F11 = 122;
public static final int F12 = 123;
public static final int ESC = 27;
public static final int TAB = 9;
public static final int CAPSLOCK = 20;
public static final int SHIFT = 16;
public static final int CTRL = 17;
public static final int START_LEFT = 91;
public static final int START_RIGHT = 92;
public static final int CONTEXT_MENU = 93;
public static final int ALT = 18;
public static final int SPACE = 32;
public static final int CARRIAGE_RETURN = 13;
public static final int LINE_FEED = 10;
public static final int BACK_SLASH = 220;
public static final int BACK_SPACE = 8;
public static final int INSERT = 45;
public static final int DEL = 46;
public static final int HOME = 36;
public static final int END = 35;
public static final int PAGE_UP = 33;
public static final int PAGE_DOWN = 34;
public static final int PRINT_SCREEN = 44;
public static final int SCR_LK = 145;
public static final int PAUSE = 19;
public static final int LEFT_ARROW_KEY = 37;
public static final int UP_ARROW_KEY = 38;
public static final int RIGHT_ARROW_KEY = 39;
public static final int DOWN_ARROW_KEY = 40;