Перехват нажатия клавиши клавиатуры и программное нажатие кнопки мыши
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
нажатие клавиши
При помощи XGrabKeyboard. Примерно так:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <cstdio>
#include <ctime>
#include <cstring>
int main(int argc, char **argv)
{
Display *display;
XEvent event;
bool quit = false;
if (NULL==(display=XOpenDisplay(NULL))) {
return 1;
}
XGrabKeyboard(display, DefaultRootWindow(display),
True, GrabModeAsync, GrabModeAsync, CurrentTime);
char *s;
unsigned int kcode;
while(!quit)
{
XNextEvent(display, &event);
switch (event.type) {
case KeyPress:
kcode = ((XKeyPressedEvent*)&event)->keycode;
s = XKeysymToString(XKeycodeToKeysym(display, kcode, 0));
if (s)
cout << "KEY:"<<kcode<<" "<<s<<"\n";
if (kcode == 24)
quit=true;
break;
case ButtonPress:
cout << "bp";
break;
case ButtonRelease:
cout << "br";
break;
case KeyRelease:
cout << "kr";
break;
default:
break;
}
XSendEvent(display, NULL, 0, 0, &event);//посылаем куда-то
}
XUngrabKeyboard(display, CurrentTime);
if (XCloseDisplay(display)) {
return 1;
}
return 0;
}
Показать
(4)Безусловно. А если серьезно лет 9-ть назад я как то делал перехват нажатия клавиш, причем 1С была на заднем плане так сказать. И при этом курсором мышки управлял, менял ему координаты.
теперь не могу найти как это.
нашел только программно нажать через Шелл на кнопку клавы
теперь не могу найти как это.
нашел только программно нажать через Шелл на кнопку клавы
(6)
Приведенный пример чем не устраивает?
Так он для линуха. Вот ща тоже темой занялся, но мне надо Ctrl+C/V перехватывать, отправляя 1С-ке инфу об этом через обработчик внешнего события, а не прям вот в лоб, ибо хочу, чтобы у меня копировалось так, как я хочу, а не так, как 1С себе придумала. Ибо в табличных документах нет ничего, что могло бы перед вставкой области тебе сказать, что там вообще вставляется...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот