Перехват нажатия клавиши клавиатуры и программное нажатие кнопки мыши

1. vsesam80 04.07.24 22:04 Сейчас в теме
Всем привет. Подскажите пожалуйста как перехватить нажатие клавиши клавиатуры, а еще программно спозиционировать курсор и кликнуть кнопкой мыши
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 04.07.24 22:52 Сейчас в теме
(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;
}
Показать
3. vsesam80 04.07.24 23:55 Сейчас в теме
(2)Судя по жуткому синтаксису это плюсы?
4. user1880116 05.07.24 21:17 Сейчас в теме
(3)
по жуткому
Ты испугался?
5. vsesam80 06.07.24 01:38 Сейчас в теме
(4)Безусловно. А если серьезно лет 9-ть назад я как то делал перехват нажатия клавиш, причем 1С была на заднем плане так сказать. И при этом курсором мышки управлял, менял ему координаты.
теперь не могу найти как это.
нашел только программно нажать через Шелл на кнопку клавы
6. user1880116 06.07.24 11:32 Сейчас в теме
(5)
теперь не могу найти как это.
Понимаю. Тяжело, когда не знал, да еще и забыл.

Приведенный пример чем не устраивает?
8. starik-2005 3167 17.01.25 11:19 Сейчас в теме
(6)
Приведенный пример чем не устраивает?
Так он для линуха. Вот ща тоже темой занялся, но мне надо Ctrl+C/V перехватывать, отправляя 1С-ке инфу об этом через обработчик внешнего события, а не прям вот в лоб, ибо хочу, чтобы у меня копировалось так, как я хочу, а не так, как 1С себе придумала. Ибо в табличных документах нет ничего, что могло бы перед вставкой области тебе сказать, что там вообще вставляется...
7. karamazoff 124 06.07.24 13:17 Сейчас в теме
Это наверно не в этот форум, тут с++ или дельфа поможет
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот