Я не могу проверить этот код прямо сейчас, но я считаю, что это или что-то похожее должно сработать.
Вот способ генерировать случайную матрицу и затем извлекать столбцы матрицы. Я не знаю, хотите ли вы представить столбцы как векторы столбцов или как строки строк. У 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));
Нет такого API. Мое решение состояло в том, чтобы записать модуль помощника, который будет использовать другого помощника в зависимости от значения os.name
.
В Windows используйте расширения Win32.
На Linux вещи немного более сложны, так как реальные Ose защищают своих пользователей от клавиатурных перехватчиков [*]. Таким образом, здесь, Вам будет нужен корневой процесс, который наблюдает один из [] дескрипторы в /dev/input/
. Ваш лучший выбор, вероятно, ищет запись ниже /dev/input/by-path/
который содержит строки "kbd"
или "keyboard"
. Это должно работать в большинстве случаев.
[*]: Здорово, даже мой сканер вируса/троянца не будет жаловаться, когда я запущу программу Python, которая сцепляется в события клавиатуры...
Межплатформенные библиотеки UI, такие как Tkinter или wxPython имеют API для событий клавиатуры. Используя их Вы могли отобразить «CTRL» + к действию.
На Linux Вы могли бы хотеть взглянуть на pykeylogger. По некоторой странной причине, читающей из/dev/input/...., не всегда работает, когда X работает. Например, это не работает над человечностью 8.10. Pykeylogger использует xlib, который работает точно, когда другой путь не делает. Я все еще изучаю это, поэтому если Вы находите более простой способ сделать это, скажите мне.
Как человек, который написал оригинальный порт Linux для pykeylogger, я могу сказать, что на самом деле кроссплатформенного порта нет. По сути, я переписал API-интерфейс pyhook для событий клавиатуры для захвата с самого xserver, используя расширение записи. Конечно, это предполагает наличие расширения записи, загруженного на сервер x.
Отсюда, по сути, он просто определяет, используете ли вы Windows или Linux, а затем загрузите правильный модуль для ОС. Все остальное должно быть идентичным.
Взгляните на исходный код pykeylogger, в pyxhook.py для класса и имплементации. В противном случае просто загрузите этот модуль или вместо этого pyhook, в зависимости от ОС.
Я провел несколько тестов на Ubuntu 9.10. pykeylogger, похоже, не работает. Я попытался изменить /etc/X11/xorg.conf, чтобы разрешить загрузку модуля, но в этой конкретной версии ubuntu нет xorg.conf. Итак, на мой взгляд, pykelogger НЕ работает на Ubuntu 9.10 !!
В Linux это довольно легко сделать с помощью Xlib. Подробности см. На этой странице: