From ba767d1663db82d02fa18c087e4d99043d141fd3 Mon Sep 17 00:00:00 2001 From: Moss Date: Fri, 12 Jun 2020 11:00:21 +0200 Subject: [PATCH] remove duplicated press --- builder/vsphere/iso/step_boot_command.go | 5 ++- builder/vsphere/iso/step_boot_command_test.go | 1 - common/bootcommand/usb_driver.go | 42 ++----------------- 3 files changed, 6 insertions(+), 42 deletions(-) diff --git a/builder/vsphere/iso/step_boot_command.go b/builder/vsphere/iso/step_boot_command.go index aaaf58d94..b002ca3ad 100644 --- a/builder/vsphere/iso/step_boot_command.go +++ b/builder/vsphere/iso/step_boot_command.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/packer/template/interpolate" "github.com/vmware/govmomi/vim25/types" "golang.org/x/mobile/event/key" + "log" "time" ) @@ -91,11 +92,11 @@ func (s *StepBootCommand) Run(ctx context.Context, state multistep.StateBag) mul case key.CodeLeftControl: // keyCtrl = downs[i] - case key.CodeLeftShift: - // + default: keyShift = downs[i] } + log.Printf("Sending code %s, shift %v", code, downs[i]) spec.KeyEvents = append(spec.KeyEvents, types.UsbScanCodeSpecKeyEvent{ UsbHidCode: int32(code)<<16 | 7, Modifiers: &types.UsbScanCodeSpecModifierType{ diff --git a/builder/vsphere/iso/step_boot_command_test.go b/builder/vsphere/iso/step_boot_command_test.go index beac28350..1e52b3f11 100644 --- a/builder/vsphere/iso/step_boot_command_test.go +++ b/builder/vsphere/iso/step_boot_command_test.go @@ -26,7 +26,6 @@ func TestStepBootCommand_Run(t *testing.T) { Config: &BootConfig{ BootConfig: bootcommand.BootConfig{ BootCommand: []string{ - " initrd=/install/initrd.gz", "", "", "", diff --git a/common/bootcommand/usb_driver.go b/common/bootcommand/usb_driver.go index 7d0d34386..cde3e95ec 100644 --- a/common/bootcommand/usb_driver.go +++ b/common/bootcommand/usb_driver.go @@ -103,19 +103,7 @@ func NewUSBDriver(send SendUsbScanCodes, interval time.Duration) *usbDriver { } } -//func (d *usbDriver) keyEvent(k key.Code, down bool) error { -// if d.err != nil { -// return nil -// } -// if err := d.sendImpl(k, down); err != nil { -// d.err = err -// return err -// } -// //time.Sleep(d.interval) -// return nil -//} - -// Flush does nothing here +// Flush sends codes to the vm func (d *usbDriver) Flush() error { defer func() { d.codeBuffer = nil @@ -132,28 +120,7 @@ func (d *usbDriver) SendKey(k rune, action KeyAction) error { keyShift := unicode.IsUpper(k) || strings.ContainsRune(shiftedChars, k) keyCode := d.scancodeMap[k] log.Printf("Sending char '%c', code %s, shift %v", k, keyCode, keyShift) - - switch action { - case KeyOn: - if keyShift { - d.send(key.CodeLeftShift, true) - } - d.send(keyCode, true) - case KeyOff: - if keyShift { - d.send(key.CodeLeftShift, false) - } - d.send(keyCode, false) - case KeyPress: - if keyShift { - d.send(key.CodeLeftShift, true) - } - d.send(keyCode, true) - d.send(keyCode, false) - if keyShift { - d.send(key.CodeLeftShift, false) - } - } + d.send(keyCode, keyShift) return d.err } @@ -167,10 +134,7 @@ func (d *usbDriver) SendSpecial(special string, action KeyAction) error { switch action { case KeyOn: d.send(keyCode, true) - case KeyOff: - d.send(keyCode, false) - case KeyPress: - d.send(keyCode, true) + case KeyOff, KeyPress: d.send(keyCode, false) }