title: How to get page.keyboard.press("[any key]") to dispatch a keypress event with page.keyboard.down("Control")
body: <h3>Steps to reproduce</h3>
  
  <p><strong>Tell us about your environment:</strong></p>
  
  <ul>
  <li>Puppeteer version: v1.19.0</li>
  <li>Platform / OS version: Windows 8.1</li>
  <li>URLs (if applicable): </li>
  <li>Node.js version: 10.16.0</li>
  </ul>
  
  <p><strong>What steps will reproduce the problem?</strong></p>
  
  <p>I have the files:</p>
  
  <pre><code>PuppeteerTest/
  ├── test/main.spec.js
  index.html
  </code></pre>
  
  <p>index.html</p>
  
  <pre class="lang-html prettyprint-override"><code>&lt;textarea&gt;&lt;/textarea&gt;
  
  &lt;script&gt;
      const textarea = document.querySelector("textarea");
      textarea.addEventListener("keypress", e =&gt; {
          const p = document.createElement("p");
          p.textContent = `KeyCode: ${e.keyCode}, Ctrl Pressed: ${e.ctrlKey}, Shift Pressed: ${e.shiftKey}`
          document.body.appendChild(p);
      });
  &lt;/script&gt;
  </code></pre>
  
  <p>test/main.spec.js</p>
  
  <pre class="lang-js prettyprint-override"><code>const expect = require("chai").expect;
  const puppeteer = require("puppeteer");
  
  describe("Control Key Issue", async () =&gt; {
      it("Doesn't register control-modified keypresses", async () =&gt; {
          const browser = await puppeteer.launch({headless: false, slowMo: 50});
          const page = await browser.newPage();
          await page.goto(__dirname + `/../index.html`);
          const textarea = await page.$("textarea");
          await textarea.focus();
          await page.keyboard.down("Control"); // I've also tried ControlLeft;
          await page.keyboard.press("Enter"); // I've also tried "A" and "B"
  
          const resultingP = await page.evaluate(() =&gt; {
              const p = document.querySelector("p");
              if (p) {
                  return p.textContent;
              } else {
                  return "No keypress event was emitted, so no &lt;p&gt;&lt;/p&gt;s were generated"
              }
          });
          expect(resultingP).to.not.equal("KeyCode: 10, Ctrl Pressed: true, Shift Pressed: false");
          expect(resultingP).to.equal("No keypress event was emitted, so no &lt;p&gt;&lt;/p&gt;s were generated");
          browser.close();
      }).timeout(30000);
  
  // To prove Puppeteer works in other cases, I've made the following tests.
  
      it("Registers non-control-modified keypresses", async () =&gt; {
          const browser = await puppeteer.launch({headless: false, slowMo: 50});
          const page = await browser.newPage();
          await page.goto(__dirname + `/../index.html`);
          const textarea = await page.$("textarea");
          await textarea.focus();
          await page.keyboard.press("Enter");
  
          const resultingP = await page.evaluate(() =&gt; {
              const p = document.querySelector("p");
              if (p) {
                  return p.textContent;
              } else {
                  return "No keypress event was emitted, so no &lt;p&gt;&lt;/p&gt;s were generated"
              }
          });
          expect(resultingP).to.equal("KeyCode: 13, Ctrl Pressed: false, Shift Pressed: false");
          expect(resultingP).to.not.equal("No keypress event was emitted, so no &lt;p&gt;&lt;/p&gt;s were generated");
          browser.close();
      }).timeout(30000);
  
      it("Registers shift-modified keypresses", async () =&gt; {
          const browser = await puppeteer.launch({headless: false, slowMo: 50});
          const page = await browser.newPage();
          await page.goto(__dirname + `/../index.html`);
          const textarea = await page.$("textarea");
          await textarea.focus();
          await page.keyboard.down("Shift"); 
          await page.keyboard.press("Enter"); 
  
          const resultingP = await page.evaluate(() =&gt; {
              const p = document.querySelector("p");
              if (p) {
                  return p.textContent;
              } else {
                  return "No keypress event was emitted, so no &lt;p&gt;&lt;/p&gt;s were generated"
              }
          });
          expect(resultingP).to.equal("KeyCode: 13, Ctrl Pressed: false, Shift Pressed: true");
          expect(resultingP).to.not.equal("No keypress event was emitted, so no &lt;p&gt;&lt;/p&gt;s were generated");
          browser.close();
      }).timeout(30000);
  });
  </code></pre>
  
  <p><strong>What is the expected result?</strong>
  Control + Enter creates a keypress event when done manually, so I expected it to dispatch a keypress event with <code>e.keyCode === 10</code> (or 13, but in the real world, Ctrl + Enter results in a keycode of 10). I expected <code>e.ctrlKey === true</code>.</p>
  
  <p><strong>What happens instead?</strong>
  Nothing. No event occurs when Control is down and another key is pressed. Am I doing something wrong, or is this a bug? </p>