Я не уверен, но если вы находитесь в пользовательском пространстве, должно быть достаточно переключиться на неиспользуемую виртуальную консоль, а затем перевести клавиатуру в режим raw.Это заблокирует комбинации клавиш, которые обычно переключаются обратно в другую виртуальную консоль.Это не отключит мышь, но X должен игнорировать мышь, если это не текущий VT (просто убедитесь, что gpm не работает).
Вы также должны отключить комбинацию клавиш magic-sysrq, еслиэто включено, так как есть клавиша sysrq, чтобы вывести клавиатуру из режима raw, что в противном случае могло бы обойти это.
РЕДАКТИРОВАТЬ: должно быть возможно сделать все это из пространства ядра,при условии, что вы находитесь в нормальном контексте задачи.Я думаю, что поток ядра подойдет.
Вы можете открывать файлы и устройства из ядра, это просто не рекомендуется.Задача с пространством имен, содержащим / dev (я не уверен, что задачи ядра выполняются).Вы можете вызвать filp_open (я думаю) и получить файл *, который затем можно вызвать соответствующими методами для его file_operations (f_op).Это должно включать ioctl, необходимые для выполнения вышеупомянутых действий.
Может быть способ открыть устройство напрямую, а не через filp_open.
Короче говоря, это должно быть возможно.Это очень хитрая вещь из пространства ядра.