コード例 #1
0
def test_print(rdesc_raw, file):
    abs_file = os.path.abspath(os.path.join(__file__, '..', file))
    capture = io.StringIO()

    hid_parser.ReportDescriptor(rdesc_raw).print(file=capture)

    assert capture.getvalue() == open(abs_file, 'r').read()
コード例 #2
0
ファイル: __init__.py プロジェクト: FFY00/lshid
 def print_devices(self, verbose: bool = False) -> None:
     first = True
     for key, hidraw in self.devices.items():
         bus, vid, pid = hidraw.info
         if verbose and not first:
             print()
         print(f'Device {key}: BUS {bus:03} ID {vid:04x}:{pid:04x} {hidraw.name}')
         if verbose:
             print('Report Descriptor:')
             hid_parser.ReportDescriptor(hidraw.report_descriptor).print(level=1)
         first = False
コード例 #3
0
ファイル: test_parse.py プロジェクト: FFY00/python-hid-parser
def test_linux_hidpp_items():
    rdesc = hid_parser.ReportDescriptor(linux_hidpp_rdesc)

    assert rdesc.input_report_ids == [
        0x01,
        0x02,
        0x10,
        0x11,
        0x20,
        0x21,
    ]
    assert rdesc.output_report_ids == [
        0x0e,
        0x10,
        0x11,
        0x20,
        0x21,
    ]
    assert rdesc.feature_report_ids == []

    items = rdesc.get_input_items(0x01)

    offset = 0

    usage = hid_parser.data.KeyboardKeypad.KEYBOARD_LEFT_CONTROL
    for item in items[:8]:
        assert isinstance(item, hid_parser.VariableItem)
        assert int(item.offset) == offset
        assert int(item.size) == 1
        assert item.usage.page == hid_parser.data.UsagePages.KEYBOARD_KEYPAD_PAGE
        assert item.usage.usage == usage
        offset += 1
        usage += 1

    usages = []
    for i in range(255 + 1):
        usages.append(
            hid_parser.Usage(hid_parser.data.UsagePages.KEYBOARD_KEYPAD_PAGE,
                             i))

    for item in items[8:]:
        assert isinstance(item, hid_parser.ArrayItem)
        assert int(item.offset) == offset
        assert int(item.size) == 8
        assert item.usages == usages
        offset += 8
コード例 #4
0
ファイル: test_parse.py プロジェクト: FFY00/python-hid-parser
def test_simple_mouse_items():
    rdesc = hid_parser.ReportDescriptor(simple_mouse_rdesc)

    assert rdesc.input_report_ids == [None]
    assert rdesc.output_report_ids == []
    assert rdesc.feature_report_ids == []

    items = rdesc.get_input_items()

    assert len(items) == 6

    assert isinstance(items[0], hid_parser.VariableItem)
    assert int(items[0].offset) == 0
    assert int(items[0].size) == 1
    assert items[0].usage.page == hid_parser.data.UsagePages.BUTTON_PAGE
    assert items[0].usage.usage == hid_parser.data.Button.BUTTON_1

    assert isinstance(items[1], hid_parser.VariableItem)
    assert int(items[1].offset) == 1
    assert int(items[1].size) == 1
    assert items[1].usage.page == hid_parser.data.UsagePages.BUTTON_PAGE
    assert items[1].usage.usage == hid_parser.data.Button.BUTTON_2

    assert isinstance(items[2], hid_parser.VariableItem)
    assert int(items[2].offset) == 2
    assert int(items[2].size) == 1
    assert items[2].usage.page == hid_parser.data.UsagePages.BUTTON_PAGE
    assert items[2].usage.usage == hid_parser.data.Button.BUTTON_3

    assert isinstance(items[3], hid_parser.PaddingItem)
    assert int(items[3].offset) == 3
    assert int(items[3].size) == 5

    assert isinstance(items[4], hid_parser.VariableItem)
    assert int(items[4].offset) == 8
    assert int(items[4].size) == 8
    assert items[
        4].usage.page == hid_parser.data.UsagePages.GENERIC_DESKTOP_CONTROLS_PAGE
    assert items[4].usage.usage == hid_parser.data.GenericDesktopControls.X

    assert isinstance(items[5], hid_parser.VariableItem)
    assert int(items[5].offset) == 8 * 2
    assert int(items[5].size) == 8
    assert items[
        5].usage.page == hid_parser.data.UsagePages.GENERIC_DESKTOP_CONTROLS_PAGE
    assert items[5].usage.usage == hid_parser.data.GenericDesktopControls.Y
コード例 #5
0
ファイル: test_parse.py プロジェクト: FFY00/python-hid-parser
def test_hypothesis(rdesc):
    try:
        hid_parser.ReportDescriptor(rdesc)
    except (hid_parser.InvalidReportDescriptor, NotImplementedError):
        pass
コード例 #6
0
ファイル: test_parse.py プロジェクト: FFY00/python-hid-parser
def test_size(rdesc, report_id, expected):
    rdesc = hid_parser.ReportDescriptor(rdesc)
    assert int(rdesc.get_input_report_size(report_id)) == expected
コード例 #7
0
ファイル: test_parse.py プロジェクト: FFY00/python-hid-parser
def test_parse(rdesc):
    hid_parser.ReportDescriptor(rdesc)