# Send Ctrl-Alt-Del to a VM Or, in other words, how to send arbitrary key strokes to a Virtual Machine running on OpenShift Virtualization. Once upon a time I found myself needing to [send Shift-F10 to a Windows 11 VM](https://learn.microsoft.com/en-us/answers/questions/2350856/set-up-windows-11-without-internet-oobebypassnro?forum=insider-all&referrer=answers) running on OpenShift Virtualization (because I was using a `virtio` NIC which is faster than `e1000e`, but needs a driver) I used the `oc exec` / `kubectl exec` command below to send the keystroke. Here are the commands I used to authenticate `oc` / `kubectl`, switch to my `project` / `namespace`, identify the VM's `Pod` and finally send the key strokes. :::info The "1" in the command below identifes VM/domain #1 virt-launcher pods only have 1 VM/domain in them `virsh send-key 1 KEY_LEFTCTRL KEY_LEFTALT KEY_DELETE` You can safely ignore the warning about polkit authorization not being available ::: ```bash oc login --username john https://api.my-openshift.example.com:6443 oc project john Now using project "john" on server "api.my-openshift.example.com:6443". oc get virtualmachines,pods NAME STATUS virtualmachine.kubevirt.io/rhel9-with-gpu Stopped virtualmachine.kubevirt.io/windows11-test Running NAME READY STATUS RESTARTS AGE pod/virt-launcher-windows11-test-czgmq 1/1 Running 0 9m17s oc exec -it virt-launcher-windows11-test-czgmq -- virsh send-key 1 KEY_LEFTCTRL KEY_LEFTALT KEY_DELETE Authorization not available. Check if polkit service is running or see debug message for more information. ``` You can use `man virsh` and `man virkeyname-linux` to see all of the names of the keys. For example, SHIFT+F10 would be: `KEY_LEFTSHIFT KEY_F10` Please note, from `man virsh` > If multiple keycodes are specified, they are all sent simultaneously to the guest, and they may be received in random order. > If you need distinct keypresses, you must use multiple send-key invocations.