Как преобразовать символ ключа X11 в строку, которая будет напечатана?

Вы можете использовать следующее, помня, чтоIfIsEvil

location = / {
  if ($arg_site) {
    return 302 /$arg_site;
  }
}
0
03.09.2020, 09:48
1 ответ

Вы должны использовать Xutf8LookupString (3 ), который также будет учитывать метод ввода и действующие правила xkb.

Не все нажатия клавиш напрямую генерируют строку.

Пример:

#include <X11/Xlib.h>
#include <stdio.h>

int main(int argc, char** argv) {

  KeySym keysym = 0x1a2;

  Display* display = XOpenDisplay(":0");

  XIM xim = XOpenIM(display, 0, 0, 0);
  XIC xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, NULL);

  XKeyPressedEvent event;
  event.type = KeyPress;
  event.display = display;
  event.state = 0;
  event.keycode = XKeysymToKeycode(display, keysym);

  char buffer[32];
  KeySym ignore;
  Status return_status;
  Xutf8LookupString(xic, &event, buffer, 32, &ignore, &return_status);
  printf("%s\n", buffer);

  XCloseDisplay(display);
  return 0;
}
1
18.03.2021, 23:07

Теги

Похожие вопросы