我如何打开/关闭大写锁定,滚动锁定,数字锁定键编程
How can I turn on/off Caps Lock, Scroll Lock, Num Lock key programatically
下面是一些linux中的代码,例如:
void set_leds(int val)
{
int fd = open ("/dev/console", O_WRONLY);
// argument (Bit 0 - Scroll Lock, Bit 1 - Num Lock, Bit 2 - Caps lock)
ioctl (fd, KDSETLED, val);
close(fd);
}
void set_leds_sequence(unsigned char * cmdSeq, int len)
{
int i;
for (i = 0; i < len; ++i)
{
set_leds( cmdSeq[i] );
}
}
void activate(void)
{
unsigned char seq_activate[3] = {3, 5, 4};
set_leds_sequence(seq_activate, 3);
}
我怎么能做这样的东西在Windows (c++ C)?我有一种感觉,keybd_event不接近我。是否有一个简单的方法来打开/关闭大写锁定,滚动锁定和Num锁定led在Windows上?
我在这里找到代码:https://github.com/ftk/kbled/blob/master/keyboard.c
#define IOCTL_KEYBOARD_SET_INDICATORS CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_KEYBOARD_QUERY_INDICATORS CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
static HANDLE kbd;
using namespace std;
void OpenKeyboardDevice()
{
if (!DefineDosDevice(DDD_RAW_TARGET_PATH, L"Kbd000000",
L"\Device\KeyboardClass0"))
{
assert(false);
}
kbd = CreateFile(L"\\.\Kbd000000", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
assert(kbd);
}
void CloseKeyboardDevice()
{
DefineDosDevice(DDD_REMOVE_DEFINITION, L"Kbd000000", NULL);
CloseHandle(kbd);
}
int set_leds(int led)
{
uint32_t input = 0;
DWORD len;
input |= led << 16;
if (!DeviceIoControl(kbd, IOCTL_KEYBOARD_SET_INDICATORS,
&input, sizeof(input),
NULL, 0,
&len, NULL))
return GetLastError();
return 0;
}
void set_leds_sequence(unsigned char * cmdSeq, int len)
{
int i;
for (i = 0; i < len; ++i)
{
set_leds(cmdSeq[i]);
}
}
相关文章:
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何找到锁定Linux futex的C++行
- G锁定铸造到基础上会释放模拟行为
- 如何检查线程是否锁定
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 我应该在锁定TBitmap画布后解锁它吗
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- 如何在不使用滚动条的情况下使视图更改
- 如何为对象生成滚动效果?
- 如何模拟不同边数的骰子滚动?
- 如何初始化升压滚动窗口累加器?
- C++ 11 中的锁定是否保证访问数据的新鲜度?
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 实现包含多个 QQuickPaintedItems 的 QQuickView 的滚动
- 如何在实时应用程序中锁定线程
- 通过水平滚动条更改标签
- 如何在C++中滚动锁定报表样式列表视图的第一列
- 问题5.3 QPlainTextEdit实现滚动锁定
- 我如何打开/关闭大写锁定,滚动锁定,数字锁定键编程