def hid_scancode_to_key_event(scancode, modifiers): """Convert a single scancode + modifier list to a vSphere vim KeyEvent instance suitible for transmission.""" # bitwise shift left 16, boolean or with 7 event = vim.UsbScanCodeSpecKeyEvent() event.usbHidCode = (scancode << 16) | 7 if modifiers: event.modifiers = vim.UsbScanCodeSpecModifierType() if KEY_MOD_LSHIFT in modifiers: event.modifiers.leftShift = True if KEY_MOD_LCTRL in modifiers: event.modifiers.leftControl = True if KEY_MOD_LMETA in modifiers: event.modifiers.leftGui = True if KEY_MOD_LALT in modifiers: event.modifiers.leftAlt = True if KEY_MOD_RSHIFT in modifiers: event.modifiers.rightShift = True if KEY_MOD_RCTRL in modifiers: event.modifiers.rightControl = True if KEY_MOD_RMETA in modifiers: event.modifiers.rightGui = True if KEY_MOD_RALT in modifiers: event.modifiers.rightAlt = True return event
def autorization(self, vm_name, lang): connect = SmartConnectNoSSL(host='192.168.13.138', user='******', pwd='') content = connect.content container = content.viewManager.CreateContainerView( content.rootFolder, [vim.VirtualMachine], True) vm_list = container.view for i in vm_list: if i.name == vm_name: vm = i if lang == 'RU': langchange = ['0xe1'] keyevent1 = vim.UsbScanCodeSpecKeyEvent() hidCodeHexToInt1 = int(langchange[0], 16) hidCodeValue1 = (hidCodeHexToInt1 << 16) | 7 keyevent1.usbHidCode = hidCodeValue1 keyevent1.modifiers = vim.UsbScanCodeSpecModifierType() #keyevent1.modifiers.leftControl = True keyevent1.modifiers.leftAlt = True sp1 = vim.UsbScanCodeSpec() eventlist1 = [keyevent1] sp1.keyEvents = eventlist1 r1 = vm.PutUsbScanCodes(sp1) passw = [ '0x13', '0x04', '0x16', '0x16', '0x1a', '0x12', '0x15', '0x07', '0x1e', '0x28' ] for item in passw: keyevent2 = vim.UsbScanCodeSpecKeyEvent() hidCodeHexToInt2 = int(item, 16) hidCodeValue2 = (hidCodeHexToInt2 << 16) | 7 keyevent2.usbHidCode = hidCodeValue2 keyevent2.modifiers = vim.UsbScanCodeSpecModifierType() if passw.index(item) == 0 or passw.index(item) == 8: keyevent2.modifiers.leftShift = True sp2 = vim.UsbScanCodeSpec() sp2.keyEvents = [keyevent2] r2 = vm.PutUsbScanCodes(sp2) keyevent2.modifiers.leftShift = False else: sp2 = vim.UsbScanCodeSpec() sp2.keyEvents = [keyevent2] r2 = vm.PutUsbScanCodes(sp2)
def Keystroke(vm, CHAR2HIDinfo, args): tmp = vim.UsbScanCodeSpecKeyEvent() m = vim.UsbScanCodeSpecModifierType() if "KEY_LEFTSHIFT" in CHAR2HIDinfo[1]: m.leftShift = True if "KEY_RIGHTALT" in CHAR2HIDinfo[1]: m.rightAlt = True if "CTRL" in CHAR2HIDinfo[1]: m.leftControl = True if "ALT" in CHAR2HIDinfo[1]: m.leftAlt = True tmp.modifiers = m tmp.usbHidCode = HID2HEX(CHAR2HIDinfo[0]) sp = vim.UsbScanCodeSpec() sp.keyEvents = [tmp] vm.PutUsbScanCodes(sp) if args.debug: print("Send : Keystroke: { code: %s, modifiers: %s } on VM : %s" % ( CHAR2HIDinfo[0], CHAR2HIDinfo[1], vm.name))
def key_stroke(virtual_machine, hid, debug=False): '''Sent KEYSTROKE to VIRTUAL MACHINE''' code, modifiers = hid tmp = vim.UsbScanCodeSpecKeyEvent() modifier = vim.UsbScanCodeSpecModifierType() if "KEY_LEFTSHIFT" in modifiers: modifier.leftShift = True if "KEY_RIGHTALT" in modifiers: modifier.rightAlt = True if "CTRL" in modifiers: modifier.leftControl = True if "ALT" in modifiers: modifier.leftAlt = True tmp.modifiers = modifier tmp.usbHidCode = hid_to_hex(code) inject_hid = vim.UsbScanCodeSpec() inject_hid.keyEvents = [tmp] virtual_machine.PutUsbScanCodes(inject_hid) if debug: print("Send : Keystroke: { code: %s, modifiers: %s } on VM : %s" % (code, modifiers, virtual_machine.name))
def get_key_event(self, hid_code, modifiers): key_event = vim.UsbScanCodeSpecKeyEvent() key_modifier = vim.UsbScanCodeSpecModifierType() key_modifier.leftAlt = False key_modifier.leftControl = False key_modifier.leftGui = False key_modifier.leftShift = False key_modifier.rightAlt = False key_modifier.rightControl = False key_modifier.rightGui = False key_modifier.rightShift = False # rightShift, rightControl, rightAlt, leftGui, rightGui are not used if "LEFTSHIFT" in modifiers: key_modifier.leftShift = True if "CTRL" in modifiers: key_modifier.leftControl = True if "ALT" in modifiers: key_modifier.leftAlt = True key_event.modifiers = key_modifier key_event.usbHidCode = self.hid_to_hex(hid_code) return key_event
for key, code, values in HIDCode: if char == key: key, modifiers = values[0] return code, modifiers def CHAR2HID(char, args): for key, code, values in HIDCode: for key, modifiers in values: if char == key: return code, modifiers def HID2HEX(hid): return (int(hid, 16) << 16 | 0007) def Keystroke(vm, (code, modifiers), args): tmp = vim.UsbScanCodeSpecKeyEvent() m = vim.UsbScanCodeSpecModifierType() if "KEY_LEFTSHIFT" in modifiers: m.leftShift = True if "KEY_RIGHTALT" in modifiers: m.rightAlt = True if "CTRL" in modifiers: m.leftControl = True if "ALT" in modifiers: m.leftAlt = True tmp.modifiers = m tmp.usbHidCode = HID2HEX(code) sp = vim.UsbScanCodeSpec() sp.keyEvents = [tmp] vm.PutUsbScanCodes(sp) if args.debug: