LINUX.ORG.RU

$ cat x11shit.c
// x11shit.c -- Die X.Org shit!

#include <X11/XKBlib.h>
#include <X11/extensions/XInput2.h>

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void main(void) {
  Display *disp = XOpenDisplay(":0");
  int xiOpcode, queryEvent, queryError, major = 2, minor = 0;
  XQueryExtension(disp, "XInputExtension", &xiOpcode, &queryEvent, &queryError);
  XIQueryVersion(disp, &major, &minor);

  Window root = DefaultRootWindow(disp);
  XIEventMask m;
  m.deviceid = XIAllMasterDevices;
  m.mask_len = XIMaskLen(XI_LASTEVENT);
  m.mask = calloc(m.mask_len, sizeof(char));
  XISetMask(m.mask, XI_RawKeyPress);
  XISelectEvents(disp, root, &m, 1);
  XSync(disp, 0);
  free(m.mask);

  while ("X.Org is shit") {
    XEvent event;
    XGenericEventCookie *cookie = (XGenericEventCookie*)&event.xcookie;
    XNextEvent(disp, &event);
    if (XGetEventData(disp, cookie) && cookie->type == GenericEvent && cookie->extension == xiOpcode) {
      switch (cookie->evtype) {
        case XI_RawKeyPress: {
          XIRawEvent *ev = cookie->data;
          KeySym s = XkbKeycodeToKeysym(disp, ev->detail, 0, 0);
          if (s == NoSymbol) continue;
          char *str = XKeysymToString(s);
          if (str == NULL) continue;
          if (strncmp(str, "Escape", 6) == 0) {
            fprintf(stderr, "Esc получен. Выход из программы.\n", str);
            exit(0);
          } else
            fprintf(stderr, "В дырявые иксы утёк keyEvent: \'%s\'. Нажми \'Esc\' для выхода.\n", str);
        }
      }
    }
  }
}


$ gcc x11shit.c -lX11 -lXi
$ ./a.out 
В дырявые иксы утёк keyEvent: 'f'. Нажми 'Esc' для выхода.
В дырявые иксы утёк keyEvent: 'u'. Нажми 'Esc' для выхода.
В дырявые иксы утёк keyEvent: 'c'. Нажми 'Esc' для выхода.
В дырявые иксы утёк keyEvent: 'k'. Нажми 'Esc' для выхода.
Esc получен. Выход из программы.
EXL ★★★★★ ()
Ответ на: комментарий от EXL

В дырявые иксы утёк keyEvent

Будете продолжать везде тащить этот код? Не вижу ничего криминального, в WinAPI, HaikuAPI так тоже можно. А вот в Wayland замучаешься делать утилиту с глобальными сочетаниями клавиш или например индикатор нажатых клавиш для записи обучающих видео.

X512 ★★ ()
Ответ на: комментарий от burato

Фор грейт джастис, если под забанься добил Вы меня подразумеваете, то спешу Вас огорчить, в столь «искусно» поставленном ханипоте я отписался в первой тройке. Но Вы не осилили и в это. Что касаемо забанить. Забаньте! По тородиции я вернусь года через три и/или с какой-то эпохальной вехой в сообществе. А все эти сопли ваших побратимов - это вторично.

anonymous ()
Ответ на: комментарий от xDShot

В преддверии кернел паника

Им ночью не до сна

Одмины сервер держат, одмины с бодуна…

А щас у них с этим как? Бодун от ночных посиделог с котегами?

anonymous ()
Ответ на: комментарий от burato

Хм. Что-то не припомню, чтобы мне кто-то ответил хотя бы на один мой вопрос. Ни по линахсу, ни по питону… Как так вышла та? На кокой технический вопрос я не ответил? Можно посмотреть?

anonymous ()
Ответ на: комментарий от hobbit

О сэр, в чем я должен перед Вами оправдаться? В том что вы практически все игнорируете реальное положение вещей? И сидите на попе ровно патамушта у /бсдей/хохлов/москалей/пендосов хуже? За это я должен оправдываться. Да, мне стыдно.

anonymous ()
Ответ на: комментарий от anonymous

Если кто-то меня пытается вяло и глупо косплеить, причем тут я? Внимательный читатель всегда увидит разницу. Для чего они меня косплеят я не понимаю. Ведь меня не было и нет. Я анон. Я приходил и уходил на долгое время. У меня нет ни звезд, ни ников, ни авушек. Почему кто-то это делает, ну на этот вопрос отвечают определенные разделы психиатрии. Я был в трэде пистонов. Бсди. Сборки генты под железо. И даже омг в к8с. Кокая из тем Ваша?

anonymous ()
Ответ на: комментарий от anonymous

И да, Легион тоже уже не торт (особенно внезапно разлогинившиеся некоторые регистранты, за дело получившие по шапке). Как было тут полтора анонимуса с 20 лет назад, так и полку и не прибыло. К сожалению. Может и за это оправдываться должен я? Я то оправдаюсь, а станет ли всем вам от этого легче? Посмотрите чуть чуть в завтрашний день…

anonymous ()
Ответ на: комментарий от anonymous

И опять парадигма: юниксоиды, каклы, маскали…блджа. я за спо. И я прекрасно понимаю, что если имеют пингвина - это утрата для всех. И никто не отсидитмя в сторонке? Или всем уже наплевать на положение дел с безопасностью, с дырами? И мы просто про венде капец внезапно перестали кричать, дескать мы выросли не наше это? Так? А то то я помню в былые годы мы легко сравнивали кол-во багов ядра с ос вынь в пользу сами знаете кого. А теперь молодняк говорит ты охренел? В венде же ничего нет! Ядро большое омг. Почему все молчат? Я оправдываться должен? Кто в этом виноват? Доколе блджа?

anonymous ()
Ответ на: комментарий от anonymous

И таки да, пруф плиз где меня кто-то ногами побил. Как раз трагизм ситуации в том, что этого сделать не смогло пополнение наше. Всей кодлой на меня одного. Так не должно быть, понимаете?! Меня должны были побить, но вышло все иначе. И мне грустно от этого.

anonymous ()
Ответ на: комментарий от anonymous

Это явление называется деградация. Пастух долгожитель с альпийскими коровами на альпийских предгорьях кавказского хребта через весь северный кавказ. Вот до чего мы дожили. Это привет всем нам. Всем! И то ли еще будет. Я должен оправдываться? Тьфу.

anonymous ()

Ну шо посоны. Хочу напомнить вам известную цитату:

«Не бойтесь врагов — они могут только убить; не бойтесь друзей — они могут только предать; бойтесь людей равнодушных — именно с их молчаливого согласия происходят все самые ужасные преступления на свете. … Люди, я любил вас. Будьте бдительны!»

Продолжайте в том же духе. Молодцы.

Мир всем!

#добилзобанилсо.

anonymous ()
Ответ на: комментарий от X512

А вот в Wayland замучаешься делать утилиту с глобальными сочетаниями клавиш или например индикатор нажатых клавиш для записи обучающих видео

Утилиты с глобальными кнопалками должны получать отдельные права. Особо бесючая фича конкретно винды — это когда какая-то прога внезапно начинает решать, что ты можешь делать с курсором мыши, а что — нет. Я однажды даже попотел денек, чтобы сделать тулзу. которая запускает утилиту в песочнице, из которой эта утилита не может читать кнопки, состояние мышки, и картинку экрана. То есть, возможности для изоляции даже в самой винде есть, но их не используют. Потому же, почему многие юзеры запускают веб-браузер и просто случайно скачанные из интерната файлы с правами админа.

byko3y ★★★ ()
Ответ на: комментарий от byko3y

Утилиты с глобальными кнопалками должны получать отдельные права.

В Wayland насколько я знаю никакого механизма запроса прав не предусмотрено. Боль в голове решается отрубанием головы.

X512 ★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

В Wayland насколько я знаю никакого механизма запроса прав не предусмотрено. Боль в голове решается отрубанием головы.

Оно могло бы быть предусмотрено в той Вселенной где разработчики GNOME адекватны. Возможно в KDE реализуют, как сделали SSD вопреки хотелкам GNOME-разработчиков.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Оно могло бы быть предусмотрено в той Вселенной где разработчики GNOME адекватны.

В нашей Вселенной X11 – наименьшее из зол и наиболее адекватное решение для Линукса. Проблемы там есть, но у других проблем ещё больше и они серьёзнее.

X512 ★★ ()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

В нашей Вселенной X11 – наименьшее из зол

Те кто его развивали перестали фактически это делать, а OpenSource-сообщество способно родить ядро и ОС, но не способно родить оконную систему и вменяемый графический тулкит.

EXL ★★★★★ ()