Где я нахожу ioctl EVIOCGRAB зарегистрированным?

Принимая Linux, можно использовать chvt (как в sudo chvt N) переключить виртуальный терминал, где N число, соответствующее VT для активации. Например, sudo chvt 1 для первого VT, и sudo chvt 7 для VT, где Вы будете чаще всего находить X выполнений.

Обратите внимание, что chvt требует полномочий пользователя root сделать его вещь, следовательно sudo необходим, если Вы не уже зарегистрированы как корень.

На Debian chvt обеспечивается пакетами kbd и console-tools; мой - тот от консольных инструментов. Другие дистрибутивы, вероятно, подобны.

Между прочим, это взяло меня приблизительно 15 секунд для нахождения путем ввода linux remap virtual terminal switch в Google.:-) Я ожидал находить, что что-то на самом деле повторно отображает переключатель на другое сочетание клавиш, но chvt отвечает на Ваш вопрос точно также.

5
29.04.2014, 00:54
1 ответ
[118963] A [119375] окончательное [119376] объяснение, которое, по крайней мере, можно найти в источниках ядра, а точнее [119377]драйверах/входе/evdev. c[119378]:

Как я понимаю, всё, что вычисляется как "ложь" ([119379]0[119380]), приведёт к [119381]evdev_ungrab[119382] ([119383](void*)0[119384], [119385]0[119386], ...), все, что "истинно" (а не [119387]0[119388]), вызовет [119389]evdev_grab[119390] ([119391](void*)1[119392], [119393]1[119394], [119395]0xDEADBEEF[119396]...).

Стоит упомянуть, что Ваш первый пример,

, работает только непреднамеренно. Это не значение [119397] внутри [119398] из [119399] grab[119400], а тот факт, что [119401]&grab[119402] ненулевое (Вы могли бы догадаться, так как встречный случай не [119403]grab = 0; ioctl(..., &grab);[119404], а [119405]ioctl(..., NULL);[119406]. Забавно. :)[118970].

3
27.01.2020, 20:41

Теги

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