#==============================================================================
# ** Key Simulator
#------------------------------------------------------------------------------
# by Fantasist
# Version: 0.1
# Date: 11-Dec-2008
#------------------------------------------------------------------------------
# Version History:
#
# 0.1 - First version
#------------------------------------------------------------------------------
# Description:
#
# This script can simulate the pressing of the keyboard and mouse keys.
# You can use this, for example, to switch to fullscreen by simulating the
# ALT and ENTER keys.
#------------------------------------------------------------------------------
# Compatibility:
#
# Should be compatible with almost everything.
# Might not be compatible with similar scripts.
#------------------------------------------------------------------------------
# Instructions:
#
# This script can simulate most of the common keyboard and mouse presses.
# You can simulate three things: "key down" (press), "key up" (release) and
# "trigger key" (press and release)
#
# Syntax:
# VK.down(VIRTUAL_KEY)
# VK.up(VIRTUAL_KEY)
# VK.trigger(VIRTUAL_KEY)
#
# where VIRTUAL_KEY is the constant representing the required key.
# For the exact name of the constant, scroll down and find the required key.
#
# Number keys work a little different. For the number n, VIRTUAL_KEY is:#
# NUM[n]
# So 2, 6 and 0 are NUM[2], NUM[6], NUM[0] respectively.
# Note that this is only the case with the number keys above the letter keys.
# Numpad keys have individual constants. Numpad 4 is NUMPAD4
#
# Example: Simulating "Alt + Enter"
#
# Scroll down to find the constants for alt and enter keys. They are ALT
# and ENTER respectively. Now, we need to simulate "alt down", "enter down",
# "enter up", "alt up". The following code does that:
#
# VK.down(VK::ALT) # ALT down
# VK.down(VK::ENTER) # ENTER down
# VK.up(VK::ENTER) # ENTER up
# VK.up(VK::ALT) # ALT up
#
#------------------------------------------------------------------------------
# Issues:
#
# I have very limited experience in this area, so I don't know what some
# keys are (for example the OEM keys and such). The constants here are used
# directly from the microsoft MSDN page regarding virtual keys.
#------------------------------------------------------------------------------
# Credits and Thanks:
#
# Credits: Fantasist for making this.
# Thanks: Memor-X for requesting this.
#------------------------------------------------------------------------------
# Notes:
#
# If you have any questions, suggestions or comments, you can
# find me (Fantasist) at:
#
# - www.chaos-project.com
# - www.quantumcore.forumotion.com
#
# Enjoy ^_^
#==============================================================================
#==============================================================================
# ** module VK (Virtual Keys)
#==============================================================================
module VK
V_KEYBD = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
def self.down(vk)
V_KEYBD.call(vk, 0, 0, 0)
end
def self.up(vk)
V_KEYBD.call(vk, 0, 2, 0)
end
def self.trigger(vk)
V_KEYBD.call(vk, 0, 0, 0)
V_KEYBD.call(vk, 0, 2, 0)
end
LBUTTON = 0x01 # Left mouse button
RBUTTON = 0x02 # Right mouse button
CANCEL = 0X03 # Control-break processing
MBUTTON = 0x04 # Middle mouse button (Three-button mouse)
XBUTTON1 = 0x05 # Windows 2000/XP: X1 mouse button
XBUTTON2 = 0x06 # Windows 2000/XP: X2 mouse button
BACK = 0x08 # BACKSPACE key
TAB = 0x09 # TAB key
CLEAR = 0x0C # CLEAR key
ENTER = 0x0D # ENTER key
SHIFT = 0x10 # SHIFT key
CONTROL = 0x11 # CTRL key
ALT = 0x12 # ALT key
PAUSE = 0x13 # PAUSE key
CAPITAL = 0x14 # CAPS LOCK key
ESCAPE = 0x1B # ESC key
SPACE = 0x20 # SPACEBAR
PRIOR = 0x21 # PAGE UP key
NEXT = 0x22 # PAGE DOWN key
END_ = 0x23 # END key
HOME = 0x24 # HOME key
LEFT = 0x25 # LEFT ARROW key
UP = 0x26 # UP ARROW key
RIGHT = 0x27 # RIGHT ARROW key
DOWN = 0x28 # DOWN ARROW key
SELECT = 0x29 # SELECT key
PRINT = 0x2A # PRINT key
EXECUTE = 0x2B # EXECUTE key
SNAPSHOT = 0x2C # PRINT SCREEN key
INSERT = 0x2D # INS key
DELETE = 0x2E # DEL key
HELP = 0x2F # HELP key
NUM = [0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39]
A = 0x41 # A key
B = 0x42 # B key
C = 0x43 # C key
D = 0x44 # D key
E = 0x45 # E key
F = 0x46 # F key
G = 0x47 # G key
H = 0x48 # H key
I = 0x49 # I key
J = 0x4A # J key
K = 0x4B # K key
L = 0x4C # L key
M = 0x4D # M key
N = 0x4E # N key
O = 0x4F # O key
P = 0x50 # P key
Q = 0x51 # Q key
R = 0x52 # R key
S = 0x53 # S key
T = 0x54 # T key
U = 0x55 # U key
V = 0x56 # V key
W = 0x57 # W key
X = 0x58 # X key
Y = 0x59 # Y key
Z = 0x5A # Z key
LWIN = 0x5B # Left Windows key (Microsoft Natural keyboard)
RWIN = 0x5C # Right Windows key (Natural keyboard)
APPS = 0x5D # Applications key (Natural keyboard)
SLEEP = 0x5F # Computer Sleep key
NUMPAD0 = 0x60 # Numeric keypad 0 key
NUMPAD1 = 0x61 # Numeric keypad 1 key
NUMPAD2 = 0x62 # Numeric keypad 2 key
NUMPAD3 = 0x63 # Numeric keypad 3 key
NUMPAD4 = 0x64 # Numeric keypad 4 key
NUMPAD5 = 0x65 # Numeric keypad 5 key
NUMPAD6 = 0x66 # Numeric keypad 6 key
NUMPAD7 = 0x67 # Numeric keypad 7 key
NUMPAD8 = 0x68 # Numeric keypad 8 key
NUMPAD9 = 0x69 # Numeric keypad 9 key
MULTIPLY = 0x6A # Multiply key
ADD = 0x6B # Add key
SEPARATOR = 0x6C # Separator key
SUBTRACT = 0x6D # Subtract key
DECIMAL = 0x6E # Decimal key
DIVIDE = 0x6F # Divide key
F1 = 0x70 # F1 key
F2 = 0x71 # F2 key
F3 = 0x72 # F3 key
F4 = 0x73 # F4 key
F5 = 0x74 # F5 key
F6 = 0x75 # F6 key
F7 = 0x76 # F7 key
F8 = 0x77 # F8 key
F9 = 0x78 # F9 key
F10 = 0x79 # F10 key
F11 = 0x7A # F11 key
F12 = 0x7B # F12 key
F13 = 0x7C # F13 key
F14 = 0x7D # F14 key
F15 = 0x7E # F15 key
F16 = 0x7F # F16 key
NUMLOCK = 0x90 # NUM LOCK key
SCROLL = 0x91 # SCROLL LOCK key
LSHIFT = 0xA0 # Left SHIFT key
RSHIFT = 0xA1 # Right SHIFT key
LCONTROL = 0xA2 # Left CONTROL key
RCONTROL = 0xA3 # Right CONTROL key
LMENU = 0xA4 # Left MENU key
RMENU = 0xA5 # Right MENU key
BROWSER_BACK = 0xA6 # Windows 2000/XP: Browser Back key
BROWSER_FORWARD = 0xA7 # Windows 2000/XP: Browser Forward key
BROWSER_REFRESH = 0xA8 # Windows 2000/XP: Browser Refresh key
BROWSER_STOP = 0xA9 # Windows 2000/XP: Browser Stop key
BROWSER_SEARCH = 0xAA # Windows 2000/XP: Browser Search key
BROWSER_FAVORITES = 0xAB # Windows 2000/XP: Browser Favorites key
BROWSER_HOME = 0xAC # Windows 2000/XP: Browser Start and Home key
VOLUME_MUTE = 0xAD # Windows 2000/XP: Volume Mute key
VOLUME_DOWN = 0xAE # Windows 2000/XP: Volume Down key
VOLUME_UP = 0xAF # Windows 2000/XP: Volume Up key
MEDIA_NEXT_TRACK = 0xB0 # Windows 2000/XP: Next Track key
MEDIA_PREV_TRACK = 0xB1 # Windows 2000/XP: Previous Track key
MEDIA_STOP = 0xB2 # Windows 2000/XP: Stop Media key
MEDIA_PLAY_PAUSE = 0xB3 # Windows 2000/XP: Play/Pause Media key
LAUNCH_MAIL = 0xB4 # Windows 2000/XP: Start Mail key
LAUNCH_MEDIA_SELECT = 0xB5 # Windows 2000/XP: Select Media key
LAUNCH_APP1 = 0xB6 # Windows 2000/XP: Start Application 1 key
LAUNCH_APP2 = 0xB7 # Windows 2000/XP: Start Application 2 key
OEM_1 = 0xBA # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the ';:' key
OEM_PLUS = 0xBB # Windows 2000/XP: For any country/region, the '+' key
OEM_COMMA = 0xBC # Windows 2000/XP: For any country/region, the ',' key
OEM_MINUS = 0xBD # Windows 2000/XP: For any country/region, the '-' key
OEM_PERIOD = 0xBE # Windows 2000/XP: For any country/region, the '.' key
OEM_2 = 0xBF # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the '/?' key
OEM_3 = 0xC0 # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the '`~' key
OEM_4 = 0xDB # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the '[{' key
OEM_5 = 0xDC # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the '|' key
OEM_6 = 0xDD # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the ']}' key
OEM_7 = 0xDE # Used for miscellaneous characters; it can vary by keyboard.
#Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key
OEM_8 = 0xDF # Used for miscellaneous characters; it can vary by keyboard.
OEM_102 = 0xE2 # Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
PROCESSKEY = 0xE5 # Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
PLAY = 0xFA # Play key
ZOOM = 0xFB # Zoom key
OEM_CLEAR = 0xFE # Clear key
end
강제 키입력을 가능하게 하는 스크립트입니다.
사용예시)
ALT + Enter를 누른 것처럼 하려면
VK.down(VK::ALT) # ALT down
VK.down(VK::ENTER) # ENTER down
VK.up(VK::ENTER) # ENTER up
VK.up(VK::ALT) # ALT up
이렇게 하시면 됩니다.