在 Win32 上,您可以使用以下方法分别检测 Left Shift 和 Right ALT 是否被按下:
use Win32::API;
my $GetKeyState = Win32::API->new('user32', 'GetKeyState', 'I', 'I');
sub is_key_pressed {
my $key_code = shift;
return (($GetKeyState->Call($key_code) >> 15) & 1) == 1;
}
sub left_shift_pressed {
return is_key_pressed(0x10);
}
sub right_alt_pressed {
return is_key_pressed(0x12);
}
print "Left Shift Pressed: " . (left_shift_pressed() ? "Yes" : "No") . "\n";
print "Right ALT Pressed: " . (right_alt_pressed() ? "Yes" : "No") . "\n";
import ctypes
GetKeyState = ctypes.windll.user32.GetKeyState
def is_key_pressed(key_code):
return (GetKeyState(key_code) >> 15) & 1 == 1
def left_shift_pressed():
return is_key_pressed(0x10)
def right_alt_pressed():
return is_key_pressed(0x12)
print("Left Shift Pressed: Yes" if left_shift_pressed() else "No")
print("Right ALT Pressed: Yes" if right_alt_pressed() else "No")
require 'fiddle'
GetKeyState = Fiddle::Function.new(Fiddle::Handle['user32'], 'GetKeyState', [Fiddle::TYPE_INT], Fiddle::TYPE_INT)
def is_key_pressed(key_code)
(GetKeyState.call(key_code) >> 15) & 1 == 1
end
def left_shift_pressed
is_key_pressed(0x10)
end
def right_alt_pressed
is_key_pressed(0x12)
end
puts "Left Shift Pressed: Yes" if left_shift_pressed
puts "Right ALT Pressed: Yes" if right_alt_pressed
#include<windows.h>
#include<stdio.h>
int is_key_pressed(int key_code) {
return (GetKeyState(key_code) >> 15) & 1 == 1;
}
int left_shift_pressed() {
return is_key_pressed(0x10);
}
int right_alt_pressed() {
return is_key_pressed(0x12);
}
int main() {
printf("Left Shift Pressed: %s\n", left_shift_pressed() ? "Yes" : "No");
printf("Right ALT Pressed: %s\n", right_alt_pressed() ? "Yes" : "No");
return 0;
}
请注意,这些示例代码仅适用于 Windows 平台。如果您需要在其他平台上检测按键状态,请考虑使用其他库或方法。
领取专属 10元无门槛券
手把手带您无忧上云