ducky.devices.keyboard module

Keyboard controller - provides events for pressed and released keys.

class ducky.devices.keyboard.Backend(machine, name, mmio_address=None, irq=None)[source]

Bases: ducky.devices.DeviceBackend

_process_input_events()[source]
_read_char()[source]
boot()[source]
static create_from_config(machine, config, section)[source]
static create_hdt_entries(logger, config, section)[source]
halt()[source]
class ducky.devices.keyboard.ControlMessages[source]

Bases: enum.IntEnum

CONTROL_MESSAGE_FIRST = 1024
HALT = 1025
_member_map_ = OrderedDict([('CONTROL_MESSAGE_FIRST', <ControlMessages.CONTROL_MESSAGE_FIRST: 1024>), ('HALT', <ControlMessages.HALT: 1025>)])
_member_names_ = ['CONTROL_MESSAGE_FIRST', 'HALT']
_member_type_

alias of int

_value2member_map_ = {1024: <ControlMessages.CONTROL_MESSAGE_FIRST: 1024>, 1025: <ControlMessages.HALT: 1025>}
class ducky.devices.keyboard.Frontend(machine, name)[source]

Bases: ducky.devices.DeviceFrontend

_close_input()[source]
_handle_input_error()[source]
_handle_raw_input()[source]
_open_input()[source]
boot()[source]
static create_from_config(machine, config, section)[source]
enqueue_stream(stream)[source]
halt()[source]
class ducky.devices.keyboard.HDTEntry_Keyboard(logger, config, section)[source]

Bases: ducky.hdt.HDTEntry_Device

_fields_ = [('type', <class 'ctypes.c_ushort'>), ('length', <class 'ctypes.c_ushort'>), ('name_length', <class 'ctypes.c_ubyte'>), ('flags', <class 'ctypes.c_ubyte'>), ('name', <class 'ducky.hdt.c_ubyte_Array_10'>), ('ident', <class 'ducky.hdt.c_ubyte_Array_32'>), ('mmio_address', <class 'ctypes.c_uint'>)]
flags

Structure/Union member

ident

Structure/Union member

length

Structure/Union member

mmio_address

Structure/Union member

name

Structure/Union member

name_length

Structure/Union member

type

Structure/Union member

class ducky.devices.keyboard.KeyboardMMIOMemoryPage(device, *args, **kwargs)[source]

Bases: ducky.devices.MMIOMemoryPage

read_u8(offset)[source]
class ducky.devices.keyboard.KeyboardPorts[source]

Bases: enum.IntEnum

DATA = 1
LAST = 1
STATUS = 0
_member_map_ = OrderedDict([('STATUS', <KeyboardPorts.STATUS: 0>), ('DATA', <KeyboardPorts.DATA: 1>), ('LAST', <KeyboardPorts.DATA: 1>)])
_member_names_ = ['STATUS', 'DATA']
_member_type_

alias of int

_value2member_map_ = {0: <KeyboardPorts.STATUS: 0>, 1: <KeyboardPorts.DATA: 1>}