Как отключить привязку Ctrl + Shift (ISO 14755) в urxvt?

Это происходит потому, что по умолчанию сокеты AF_INET6 фактически работают как для IPv4, так и для IPv6. См. раздел 3.7 - Совместимость с узлами IPv4 в RFC 3493 - Расширения базового интерфейса сокетов для IPv6

Вот краткий пример кода, который может привести к подобной ситуации:

#include 
#include 
#include 

#define TEST_PORT 5555

#define xstr(s) str(s)
#define str(x) #x

int main (int argc, char **argv)
{
    int v6server;
    int v4client;
    int rc;

    struct sockaddr_in6 s6addr = {
        .sin6_family = AF_INET6,
        .sin6_flowinfo = 0,
        .sin6_port = htons(TEST_PORT),
        .sin6_addr = in6addr_any
    };

    struct sockaddr_in c4addr = {
        .sin_family = AF_INET,
        .sin_port = htons(TEST_PORT),
        .sin_addr = inet_addr("127.0.0.1")
    };

    // Open an IPv6 listener
    v6server = socket(AF_INET6, SOCK_STREAM, 0);
    if (v6server < 0) perror("socket()");

    rc = bind(v6server, (struct sockaddr *)&s6addr, sizeof(s6addr));
    if (rc != 0) perror("bind()");

    rc = listen(v6server, 0);
    if (rc != 0) perror("listen()");

    // Connect to the listener with an IPv4 socket
    v4client = socket(AF_INET, SOCK_STREAM, 0);
    if (v4client < 0) perror("socket()");

    rc = connect(v4client, (struct sockaddr *)&c4addr, sizeof(c4addr));
    if (rc != 0) perror("connect()");

    // inspect open sockets
    system("netstat -tan | grep " xstr(TEST_PORT));

    close(v4client);
    close(v6server);
}

Вывод на моей машине Ubuntu:

$ make v4v6
cc     v4v6.c   -o v4v6
$ ./v4v6 
tcp        0      0 127.0.0.1:46518         127.0.0.1:5555          ESTABLISHED
tcp6       0      0 :::5555                 :::*                    LISTEN     
tcp6       0      0 127.0.0.1:5555          127.0.0.1:46518         ESTABLISHED
$ 
  • Запись tcp6 LISTEN предназначена для сокета, прослушивающего порт 5555. Обратите внимание, что это сокет AF_INET6, поэтому он будет принимать входящие соединения IPv4 и IPv6.
  • Запись tcp ESTABLISHED является результатом подключения сокета AF_INET4 к прослушивателю (активное соединение).
  • Запись tcp6 ESTABLISHED предназначена для пассивного соединения, порожденного из сокета слушателя. Он отображается как tcp6 , поскольку порождается слушателем tcp6 ; однако он представляет собой соединение с IPv4.

Стоит отметить следующее:

  • Это особенное поведение для сокетов AF_INET6. Сокеты AF_INET (IPv4) просто не могут и не будут иметь дело ни с чем IPv6.
  • Это поведение может быть отменено параметром сокета IPV6_V6ONLY . Установка этого параметра приведет к тому, что сокет будет только обрабатывать IPv6 и не будет разрешать ничего IPv4.

8
19.05.2018, 12:09
1 ответ

Ha deshabilitado el modo de inserción de imagen de tecla, pero no el modo básico ISO 14755. Para deshabilitar ambos, establezca ambos en falso.

URxvt.iso14755: false
URxvt.iso14755_52: false

Después de cambiar ~/.Xresources, vuelva a cargar el archivo con

xrdb -merge <~/.Xresources
24
27.01.2020, 20:10

Теги

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