Существует ли межплатформенный низкий уровень Python API, чтобы получить или генерировать события клавиатуры?

Я не могу проверить этот код прямо сейчас, но я считаю, что это или что-то похожее должно сработать.

Вот способ генерировать случайную матрицу и затем извлекать столбцы матрицы. Я не знаю, хотите ли вы представить столбцы как векторы столбцов или как строки строк. У Maxima нет способа представления векторов строк и столбцов как отдельных типов. Вместо вектора столбца я получу матрицу из 1 столбца, а для вектора строки получу список.

[m, n]: [2 + random(5), 2 + random(5)];
h: lambda ([i, j], random(11) - 5) $
M: genmatrix (h, m, n);

Вот список, содержащий столбцы M в виде матриц с 1 столбцом:

makelist (col (M, k), k, 1, n);

Вот список, содержащий столбцы M в виде списков:

args (transpose (M));
11
задан Community 23 May 2017 в 12:16
поделиться

6 ответов

Нет такого API. Мое решение состояло в том, чтобы записать модуль помощника, который будет использовать другого помощника в зависимости от значения os.name.

В Windows используйте расширения Win32.

На Linux вещи немного более сложны, так как реальные Ose защищают своих пользователей от клавиатурных перехватчиков [*]. Таким образом, здесь, Вам будет нужен корневой процесс, который наблюдает один из [] дескрипторы в /dev/input/. Ваш лучший выбор, вероятно, ищет запись ниже /dev/input/by-path/ который содержит строки "kbd" или "keyboard". Это должно работать в большинстве случаев.

[*]: Здорово, даже мой сканер вируса/троянца не будет жаловаться, когда я запущу программу Python, которая сцепляется в события клавиатуры...

8
ответ дан 3 December 2019 в 07:39
поделиться

Межплатформенные библиотеки UI, такие как Tkinter или wxPython имеют API для событий клавиатуры. Используя их Вы могли отобразить «CTRL» + к действию.

0
ответ дан 3 December 2019 в 07:39
поделиться

На Linux Вы могли бы хотеть взглянуть на pykeylogger. По некоторой странной причине, читающей из/dev/input/...., не всегда работает, когда X работает. Например, это не работает над человечностью 8.10. Pykeylogger использует xlib, который работает точно, когда другой путь не делает. Я все еще изучаю это, поэтому если Вы находите более простой способ сделать это, скажите мне.

0
ответ дан 3 December 2019 в 07:39
поделиться

Как человек, который написал оригинальный порт Linux для pykeylogger, я могу сказать, что на самом деле кроссплатформенного порта нет. По сути, я переписал API-интерфейс pyhook для событий клавиатуры для захвата с самого xserver, используя расширение записи. Конечно, это предполагает наличие расширения записи, загруженного на сервер x.

Отсюда, по сути, он просто определяет, используете ли вы Windows или Linux, а затем загрузите правильный модуль для ОС. Все остальное должно быть идентичным.

Взгляните на исходный код pykeylogger, в pyxhook.py для класса и имплементации. В противном случае просто загрузите этот модуль или вместо этого pyhook, в зависимости от ОС.

7
ответ дан 3 December 2019 в 07:39
поделиться

Я провел несколько тестов на Ubuntu 9.10. pykeylogger, похоже, не работает. Я попытался изменить /etc/X11/xorg.conf, чтобы разрешить загрузку модуля, но в этой конкретной версии ubuntu нет xorg.conf. Итак, на мой взгляд, pykelogger НЕ работает на Ubuntu 9.10 !!

1
ответ дан 3 December 2019 в 07:39
поделиться

В Linux это довольно легко сделать с помощью Xlib. Подробности см. На этой странице:

http://www.larsen-b.com/Article/184.html

0
ответ дан 3 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

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