本文へスキップ
totonoe.tech

開発ツールを整える

初級

US・JISキーボード配列を整える。

= SSHで「@」が「[」になる事故を、逆引きと図で防ぐ

キーボード配列が初めての方は、先に そもそもキーボード配列とは・どんな場面で使うか をどうぞ。

配列を選ぶ この選択が下の①②すべてに反映されます

「サーバー側」は、キー入力を実際に解釈している側を指します。ローカルOSのキーボード配列設定のこともあれば、リモートのコンソール/仮想KVM・VNC経由でサーバーのキーマップ(setxkbmap/loadkeys等)が直接効くこともあり、経路は環境によって変わります。共通しているのは「物理キーの位置」と「それをどちらの配列として解釈するか」がズレると記号が変わる、という点です。

① 打ちたい文字 ⇄ 押すキー

対象は英字・数字を除く記号キー(@ [ ] { } \ | _ " ' = + * ^ ~ ` & ( ) : ; < > ? / - と、JIS固有の ¥・ろ)。英字・数字はJIS/USでズレないため対象外です。

打ちたい文字 → 押すキー クリックか入力ですぐ表示

上の記号をクリックするか、文字を入力してください。

押したキー → 実際に出る文字 キー位置とShiftを選ぶ

手元キーボードでの刻印(参考)

「」のつもりで押すと…

サーバー側の解釈で実際に入力される文字

② 配列図で見る

記号キーだけを色分け表示。オレンジ=JISとUSで出力が違う(またはどちらかにしかない)キー、グレー=同じキー。クリックで両配列の出力と、今の設定でこのキーを押した結果を表示します。

JIS(日本語 106/109・Windows/Linux向け)
半角/全角 BS
Tab Q W E R T Y U I O P
Caps A S D F G H J K L Enter
Shift Z X C V B N M Shift
US(ANSI 104)
BS
Tab Q W E R T Y U I O P
Caps A S D F G H J K L Enter
Shift Z X C V B N M Shift

位置:

JIS配列での刻印

/ Shift:

US配列での刻印

/ Shift:

今の設定(手元・サーバー)でこのキーをShiftなしで押すと:

Shiftを押しながらだと:

JIS / US 記号キー対応表(全23キー)

物理キーの位置ごとに、JIS配列とUS配列でそれぞれ何が出るかの一覧です。左右で出る文字が違うキーに印を付けています。キーコードは KeyboardEvent.code で、Chrome リモートデスクトップのキーマッピング設定などで使う名前です。

キーの位置 JIS(通常 / Shift) US(通常 / Shift) キーコード
数字キー列の左端 このキーは無い ` / ~ ズレる Backquote
数字「1」の位置 1 / ! 1 / ! Digit1
数字「2」の位置 2 / " 2 / @ ズレる Digit2
数字「3」の位置 3 / # 3 / # Digit3
数字「4」の位置 4 / $ 4 / $ Digit4
数字「5」の位置 5 / % 5 / % Digit5
数字「6」の位置 6 / & 6 / ^ ズレる Digit6
数字「7」の位置 7 / ' 7 / & ズレる Digit7
数字「8」の位置 8 / ( 8 / * ズレる Digit8
数字「9」の位置 9 / ) 9 / ( ズレる Digit9
数字「0」の位置 0 / — 0 / ) ズレる Digit0
「0」の右隣 - / = - / _ ズレる Minus
さらにその右(JISでは¥キーの左、USではBackspaceの手前) ^ / ~ = / + ズレる Equal
Backspaceの手前(JIS固有キー) ¥ / | このキーは無い ズレる IntlYen
「P」の右隣 @ / ` [ / { ズレる BracketLeft
ひとつ右のキー(Pから2つ右) [ / { ] / } ズレる BracketRight
(US)アルファベット最上段の行末/(JIS)Enterの左 ] / } \ / | ズレる Backslash
「L」の右隣 ; / + ; / : ズレる Semicolon
ひとつ右のキー(Enterの左) : / * ' / " ズレる Quote
「M」の右隣 , / < , / < Comma
Commaの右隣 . / > . / > Period
Periodの右隣 / / ? / / ? Slash
Slashの右、右Shiftの手前(JIS固有キー・刻印「ろ」) \ / _ このキーは無い ズレる IntlRo

「—」はその配列でShift(または通常)に文字が割り当てられていないことを、「このキーは無い」はその配列に物理キー自体が存在しないことを表します。英字・数字はJIS/USでズレないため一覧から外しています。

③ サーバー側の配列を直す

ズレの元を断つには、サーバー側(またはコンソール)の配列設定を、手元のキーボードに合わせます。コマンドやファイルの場所はディストリビューションによって異なるため、以下は代表的なコマンドです。

X Window System(デスクトップ環境のGUIログイン中)

ログイン中のセッションだけ即座に切り替わる。再起動やログアウトで元に戻る設定と、恒久設定は別(ディストリごとに設定ファイルの場所が違うため個別に確認)。

US配列にする

setxkbmap us

日本語JIS配列にする

setxkbmap jp

systemd(localectl・要root)

コンソール(TTY)とX11の既定値を設定に書き込む。反映のタイミングや対象範囲はディストリビューションの設定次第。

US配列にする

sudo localectl set-keymap us

日本語JIS配列にする(106/109キーボード)

sudo localectl set-keymap jp106

コンソール(TTY)個別に切り替え

ログイン中のTTYだけ即座に切り替わる、より低レベルなコマンド。

US配列にする

sudo loadkeys us

日本語JIS配列にする

sudo loadkeys jp106

確認だけしたいとき(設定は変えない)

実際に押したキーが何と解釈されているかをその場で確認できる。設定変更の前に「今どうなっているか」を見るのに使う。

端末上でキーコードを確認

showkey

X11でキーイベントを確認

xev

そもそもキーボード配列(JIS と US)とは

同じ「@」でも、押すキーの場所が国ごとに違う。

キーボードの文字の並びを配列といいます。日本の標準は JIS 配列(JIS = Japanese Industrial Standards、日本産業規格)で、アメリカで一般的なのが US 配列(ANSI 規格に基づく)です。数字や英字の位置はほぼ同じですが、@ " _ | などの記号は、置かれている場所が違います。たとえば @ は、JIS では P の右隣のキーですが、US では Shift を押しながら 2 のキーです。

もう一つ大事なのは、キーに刻まれた印字と、パソコンやサーバーが「このキーは何の文字」と解釈する設定は別物だという点です。手元は JIS のキーボードでも、接続先が US 配列のつもりで受け取ると、押した文字と画面に出る文字がずれます。

どこで・どんな場面で使うか

  • SSH でリモートサーバーに入るとき

    手元は JIS なのに、サーバー側が US 配列の設定で、@ を打つと別の文字が出る、という事故が起きます。

  • クラウドや仮想マシンを初めて立ち上げたとき

    最初のコンソール画面は、US 配列のまま始まることが多く、記号が打てずに戸惑います。

  • US 配列のノートパソコンを日本語環境で使うとき

    海外で買った機種や、プログラマー向けに US 配列を選んだ人は、日本語の変換キーの扱いも含めて設定を合わせる必要があります。

  • リモートデスクトップや仮想画面から操作するとき

    手元と画面の向こうで、それぞれ別の配列設定になっていると、文字がずれて入力されます。

  • 見えないパスワードを打つとき

    入力した文字が画面に出ないため、記号がずれていても気づけず、何度やってもログインできません。

知らないと何が困るか

  • 「パスワードが違う」と何度も言われる。原因はパスワードではなく配列のずれ。気づくまでに時間を失い、場合によってはロックされます。
  • コマンドが打てない。パイプ(縦線)やアンダースコアなど、コマンド操作で多用する記号が出ずに、作業が止まります。
  • 直し方が分からず、遠回りする。設定を変えれば済むのに、打ちやすいキーを探して手元で工夫し続けることになります。

上のツールで、いまの配列を選び、打ちたい記号を入れて、どのキーを押せばよいか確かめてみてください。

対応表の根拠と対象範囲

推測で埋めず、標準配列だけを載せています。

  • 対応表は標準的な JIS(日本語 106/109・Windows/Linux向け)とUS(ANSI 104)の配列を根拠にしています。数字・記号キーの刻印は、この2配列であれば機種を問わずほぼ共通です。
  • Mac の JIS キーボードは対象外です。 Mac の JIS キーボードは ¥ と \ の扱いなど、Windows/Linux 向け JIS と一部異なる点があり、本ツールは対応していません。Mac をお使いの場合は目安程度にご覧ください。
  • 英字(A〜Z)と数字(0〜9 の数字そのもの)は JIS/US でズレないため、対応表・逆引きの対象から外しています。
  • JIS の ¥ キー(IntlYen)は、環境によって ¥ ではなく \(バックスラッシュ)として扱われることがあります(Shift-JISの歴史的な経緯によるもので、本ツールでは標準的な刻印どおり ¥ / Shift+| として扱っています)。
  • 自信の持てない挙動(例:JISの「半角/全角」キーが実際に何を送るか)は載せていません。空欄・注記のままにしてあります。

🔒 配列の選択・文字の入力・キーの選択はすべてこの端末(ブラウザ)の中だけで処理します。サーバーには何も送信しません(送信ゼロ)。

このツールについて

SSHでリモートサーバーに入ったとき、手元の物理キーボード(JIS/US)とサーバー側が解釈する配列が食い違うと、@ を打ったつもりが [ になる、_ や | が出ない、といった事故が起きます。「打ちたい文字→今の環境で押すべきキー」を逆引きし、配列の違いを図で見せ、直すコマンドまで揃えました。対応表はWindows/Linux向けのJIS 106/109とUS ANSI 104配列が根拠です。入力はこの端末から一切出ません(送信ゼロ)。

SSHで @ が [ になるような配列ズレ事故を防ぐ。「打ちたい文字→押すキー」を逆引きし、「押したキー→実際に出る文字」も確認。配列図をクリックで比較、setxkbmap/localectl/loadkeysの直し方コマンドつき。根拠はWindows/Linux向けJIS 106/109とUS ANSI 104(Mac JISは対象外)。

主な機能

  • 「打ちたい文字→押すキー」の逆引き(@ [ ] { } \ | _ " ' = + * ^ ~ ` & ( ) : ; < > ? / - とJIS固有の¥・ろに対応)
  • 「押したキー→実際に出る文字」の順引きも同じ画面で確認
  • JIS/US配列図を左右に並べて色分け表示、クリックで両配列の出力を比較
  • 同じ配列同士(JIS-JIS・US-US)はズレ無しと明示
  • setxkbmap/localectl/loadkeysなど状況別の直し方コマンドをコピーボタン付きで掲載
  • 対応表はWindows/Linux向けJIS 106/109とUS ANSI 104が根拠(Mac JISは対象外と明記)・送信ゼロ

よくある質問

Q. なぜ SSH でリモートに入ると @ が [ になるのですか?

A. キーボードは物理的な位置(スキャンコード)を送るだけで、それを「どの文字にするか」は配列(JIS/US)の設定側が決めています。手元がJISキーボードで、サーバー側がUS配列として解釈する設定になっていると、JISの「@」キー(Pの右隣・Shiftなし)は、US配列では「[」の位置と同じ物理キーなので「[」と解釈されます。逆に、その位置をUS配列で「@」にするにはShift+2を押す必要があります(本ツールの逆引きが示すとおりです)。原因は「打ち間違い」ではなく、物理キーの位置と、それをどちらの配列として解釈するかのズレです。

Q. 今使っているのがJISとUSどちらの配列か調べるには?

A. 手元のキーボードは見た目で判断できます。JISキーボードは¥キーや「ろ」「無変換」「変換」「カタカナひらがな」などの日本語専用キーがあり、キー数が多め(106/109)です。USキーボードにはこれらが無く、Enterキーの左に大きめの記号キー(\ |)があります。サーバー側の設定は、Linuxなら `localectl status`(Xやコンソールの既定を表示)や、Xが動いていれば `setxkbmap -query` で今の設定を確認できます。手っ取り早く確かめたいときは、Shift+2を押して「"」と「@」のどちらが入力されるかを見る方法もあります(JISなら"、USなら@)。

Q. JISキーボードの¥キーを押すと \(バックスラッシュ)になるのはなぜですか?

A. 歴史的な経緯によるものです。日本語の文字コード(Shift-JIS)は、ASCIIのバックスラッシュ(0x5C)の位置に¥記号の意味を重ねて使ってきたため、環境によっては¥キーを押しても内部的には\として扱われることがあります。本ツールの対応表では、JISキーボードに刻印されている標準どおり「¥(Shiftで|)」として扱っていますが、実際の入力結果は環境(OS・フォント・アプリ)によって¥表示のままのこともあれば\として扱われることもある、という点は覚えておくと混乱を避けられます。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

続けて整える

運営サイト

私たちが運営するサイト