package com.shaneisrael.st.prefs.Hotkeys; import java.awt.event.KeyEvent; import com.melloware.jintellitype.JIntellitype; import com.melloware.jintellitype.JIntellitypeConstants; import com.melloware.jintellitype.JIntellitypeException; import com.shaneisrael.st.data.Logger; import com.shaneisrael.st.prefs.Preferences; public class Hotkeys { public static final String[] MODIFIER_KEYS = { "NONE", "CTRL", "ALT", "SHIFT", "WIN" }; public static final int NO_HOTKEY = 11111; public void registerHotkeys() { int[] hotkeyMods1 = Preferences.getInstance().getFirstHotkeyMods(); int[] hotkeyMods2 = Preferences.getInstance().getSecondHotkeyMods(); int[] hotkeyCodes = Preferences.getInstance().getHotkeyCodes(); JIntellitype keyhook = null; try { keyhook = JIntellitype.getInstance(); } catch (JIntellitypeException ex) { Logger.Log(ex); ex.printStackTrace(); } if (keyhook != null) { for (int i = 0; i < hotkeyMods1.length; i++) keyhook.unregisterHotKey(i); for (int i = 0; i < hotkeyMods1.length; i++) if (hotkeyCodes[i] != Hotkeys.NO_HOTKEY) keyhook.registerHotKey(i, hotkeyMods1[i] + hotkeyMods2[i], hotkeyCodes[i]); } } public static String getHotkeyComboText(int identifier) { int[] hotkeyMods1 = Preferences.getInstance().getFirstHotkeyMods(); int[] hotkeyMods2 = Preferences.getInstance().getSecondHotkeyMods(); int[] hotkeyCodes = Preferences.getInstance().getHotkeyCodes(); String text = ""; if(hotkeyMods1[identifier] != NO_HOTKEY) text += MODIFIER_KEYS[getModBoxIndex(hotkeyMods1[identifier])] + " + "; if(hotkeyMods2[identifier] != NO_HOTKEY) text += MODIFIER_KEYS[getModBoxIndex(hotkeyMods2[identifier])]+ " + "; if(hotkeyCodes[identifier] != NO_HOTKEY) text += KeyEvent.getKeyText(hotkeyCodes[identifier]); if(text.equals("")) text = "NO HOTKEY SET!"; return text; } public static int getModBoxIndex(int mod) { switch (mod) { case 0: return 0; case JIntellitypeConstants.MOD_CONTROL: return 1; case JIntellitypeConstants.MOD_ALT: return 2; case JIntellitypeConstants.MOD_SHIFT: return 3; case JIntellitypeConstants.MOD_WIN: return 4; } return 0; } public static int getHotkeyMod(int index) { switch (index) { case 0: return 0; case 1: return JIntellitypeConstants.MOD_CONTROL; case 2: return JIntellitypeConstants.MOD_ALT; case 3: return JIntellitypeConstants.MOD_SHIFT; case 4: return JIntellitypeConstants.MOD_WIN; } return 0; } public static String getKeyCharacter(int keyCode) { if (keyCode == NO_HOTKEY || keyCode == KeyEvent.VK_ESCAPE || keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_CONTROL || keyCode == KeyEvent.VK_ALT || keyCode == KeyEvent.VK_SHIFT || keyCode == KeyEvent.VK_WINDOWS) return "NONE"; else return KeyEvent.getKeyText(keyCode); } }