0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スペースキーは特殊キーなのか文字なのか

Posted at

React testing libraryでテストを書いていた時に、userEvent.keyboardでスペースキーを押したい場面がありました。

エンターキーは

  • await userEvent.keyboard('{enter}')

と押せますので、スペースキーも

  • await userEvent.keyboard('{space}')

だなと思ったんですけど、実際は

  • await userEvent.keyboard('{ }')

でした。
英語圏だと単語の区切りに入力する「文字」ですので、これは特殊キーではないということ?!

スペースキーに「特殊キーみ」を感じているのは自分だけではないのでは?と思ってちょっと調べてみました。

調査

whitespace character

空白"文字"、つまり空白は文字。

event.key

例のところを見ると特殊キーたちに混ざってスペースキーがいる。スペースキーは特殊キーなのかと思わせる例文!でもevent.keyもスペースだけは文字としての" "が入ってくるんだなあ

switch (event.key) {
  case "ArrowDown":
    // Do something for "down arrow" key press.
    break;
  case "ArrowUp":
    // Do something for "up arrow" key press.
    break;
  case "ArrowLeft":
    // Do something for "left arrow" key press.
    break;
  case "ArrowRight":
    // Do something for "right arrow" key press.
    break;
  case "Enter":
    // Do something for "enter" or "return" key press.
    break;
  case " ":
    // Do something for "space" key press.
    break;
  case "Escape":
    // Do something for "esc" key press.
    break;
  default:
    return; // Quit when this doesn't handle the key event.
}

userEvent.keyboard

keyMapというファイルにも、スペースキーは記号たち()!@#$%^&*()の中にはいなくて、特殊キーの中にある。

大体結論

英語圏の感覚としては多分文字。だけどCUIの時代から要素をToggleしたり機能を持っていることもある。さらに日本語ではそもそもスペースを文字として打つことはあまりなくて、変換キーのように使っているからか、特殊キーみが強いのかもしれない。さらに"space key"ではなく" key"と言われても何のことかわからない、という問題もある。

他にも文字なのか特殊キーなのかわかりにくいやつがいるのかと思って考えてみましたがたぶんスペースだけっぽいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?