Несколько мышей на OS X

То, что вы определяете как «test_power_value», на самом деле будет не тестом, а вспомогательной функцией в pytest.

В pytest вы запускаете тестовые функции в своем коде - pytest выполняет тесты для вас - поэтому он ищет приборы. Просто переименуйте вашу функцию, чтобы она не начиналась с «test»

def assert_power_value(simple, power, result):
    assert simple.power_value(power) == result

И вы можете использовать это в test:

def test_foo():
    x = 1
    with pytest.raises(AssertionError):
        assert_power_value(x, 2, 5)

и десять запустите ваши тесты:

[ 112]
17
задан Johan Kotlinski 12 May 2009 в 18:34
поделиться

6 ответов

Интерфейс устройства HID-класса определенно то, что вам нужно. По сути, это два шага:

Сначала вам нужно найти устройства мыши. Для этого вам нужно создать соответствующий словарь, а затем выполнить поиск в реестре ввода-вывода. Здесь есть пример кода , вам нужно будет добавить некоторые дополнительные элементы в словарь, чтобы вы просто получили мыши вместо всех HID-устройств в системе. Что-то вроде этого должно помочь:

// Set up a matching dictionary to search the I/O Registry by class
// name for all HID class devices`
hidMatchDictionary = IOServiceMatching(kIOHIDDeviceKey);

// Add key for device usage page - 0x01 for "Generic Desktop"
UInt32 usagePage = 0x01;
CFNumberRef usagePageRef = ::CFNumberCreate( kCFAllocatorDefault, kCFNumberLongType, &usagePage );
::CFDictionarySetValue( hidMatchDictionary, CFSTR( kIOHIDPrimaryUsagePageKey ), usagePageRef );
::CFRelease( usagePageRef );

// Add key for device usage - 0x02 for "Mouse"
UInt32 usage = 0x02;
CFNumberRef usageRef = ::CFNumberCreate( kCFAllocatorDefault, kCFNumberLongType, &usage );
::CFDictionarySetValue( hidMatchDictionary, CFSTR( kIOHIDPrimaryUsageKey ), usageRef );
::CFRelease( usageRef );

Затем вам нужно прослушать очереди X / Y / кнопки с устройств, которые вы нашли выше. Этот пример кода должен указать вам правильное направление. Использование обратных вызовов намного эффективнее опроса!

HID-код выглядит намного сложнее, чем он есть на самом деле - он сделан довольно "многословным" из-за материала CF.

13
ответ дан 30 November 2019 в 13:21
поделиться

Похоже, HID Manager - это то, что вам нужно.

7
ответ дан 30 November 2019 в 13:21
поделиться

Вы можете посмотреть прерывание устройства USB / PS-2. Даже если вы не хотите переписывать так называемый драйвер, это может быть полезно, поскольку все мыши отправляют свои данные.

Вы также можете проверить эту страницу, которая может дать некоторые подсказки http: // multicursor- wm.sourceforge.net/[12115 impression

0
ответ дан 30 November 2019 в 13:21
поделиться

Если вы не можете заставить одну из мышей не работать как мышь, обе продолжат управлять указателем. Однако вы можете использовать IOKit для написания специального драйвера USB HID, чтобы ваше приложение могло считывать данные с одной или обеих мышей (хотя это, вероятно, помешает их использованию в качестве обычных мышей). Создание настраиваемых пользовательских клиентских драйверов для USB-устройств было бы хорошим началом для того, как напрямую взаимодействовать с USB-мышами.

1
ответ дан 30 November 2019 в 13:21
поделиться

. Вам нужно будет проверить комплект I / O и менеджер HID (Human Interface Device) .

Менеджер HID является частью I / O Kit , поэтому изучение его может оказаться полезным. Есть два API для управления HID, старый API немного более болезненный, а затем у вас есть новый 10.5 и выше API , который немного удобнее.

Важно понимать, что этого не произойдет вероятно, это просто быстрое исправление, для его запуска может потребоваться значительная работа. Если вы можете предположить, что у вас установлена ​​версия 10.5 или выше, использование Leopard API определенно поможет.

Также; в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

5 и выше API , что немного удобнее.

Важно понимать, что это, вероятно, не будет быстрым исправлением, для его запуска может потребоваться значительная работа. Если вы можете предположить, что у вас установлена ​​версия 10.5 или выше, использование Leopard API определенно поможет.

Также; в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

5 и выше API , что немного удобнее.

Важно понимать, что это, вероятно, не будет быстрым исправлением, для его запуска может потребоваться значительная работа. Если вы можете предположить, что у вас установлена ​​версия 10.5 или выше, использование Leopard API определенно поможет.

Также; в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

Скорее всего, это будет просто быстрое исправление, для его запуска может потребоваться значительная работа. Если вы можете предположить, что у вас установлена ​​версия 10.5 или выше, использование Leopard API определенно поможет.

Также; в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

Скорее всего, это будет просто быстрое исправление, для его запуска может потребоваться значительная работа. Если вы можете предположить, что у вас установлена ​​версия 10.5 или выше, использование Leopard API определенно поможет.

Также; в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

в зависимости от того, как вы выполняете то, что делаете, для вас может быть важно скрыть курсор мыши, поскольку он все равно может много двигаться, даже если вы получаете информацию от обеих мышей. Если ваше приложение захватывает экран, я бы использовал CoreGraphics, чтобы отключить курсор и просто нарисовать свой собственный.

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

3
ответ дан 30 November 2019 в 13:21
поделиться

Может быть, это решение для вас использовать конвертер usb-> rsr232 и самостоятельно считывать последовательный порт?

0
ответ дан 30 November 2019 в 13:21
поделиться
Другие вопросы по тегам:

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