LoginSignup
0
0

HHKBでターミナルに*アスタリスクを入力できない

Posted at

サマリ

  • Fn + [任意のキー] に * を割り当てていたが、入力されない
  • この時にマップされているのは、テンキーの*であった
  • ZSHはデフォルト設定ではテンキー入力を受け付けない
  • 以下のテンキー有効化の設定を.zshrcに記載することで解決
.zshrc
# Keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[Ol" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * /
bindkey -s "^[Ok" "+"
bindkey -s "^[Om" "-"
bindkey -s "^[Oj" "*"
bindkey -s "^[Oo" "/"

問題

HHKBでFn+gを*(アスタリスク)に割り当てているが、ターミナルに入力すると以下の出力になる

$ lsOj

直前に入力されたコマンド + Oj になっている。
この場合はlsを直前に入力していたから、 ls + Oj となっている。
SHIFT + 8だと*の入力は可能なので、Fnキーとの組み合わせに問題がありそう。

環境

* Windows 10
* WSL
* UBUNTU
* zsh

解析

環境切り分け

  • bashとzshで切り分け
    • zshでしか発生しない
      →zsh固有の問題のようだ。

実際に入力されているkeyを調べる

[結論]:テンキーの*が入力されている。

  • キーコードの表示サイトを利用
    http://nas6.net/keyboard.htm
    入力 : Fn+g(* アスタリスクを入力)

    • keyIndexId:106
    • keyRealID:VK_MULTIPLY
    • keyAliasID:VK_No*

    入力 : SHIFT + 8 = *

    • keyIndexId:56
    • keyRealID:VK_8

    VK_MULTIPLYにはどうやらテンキーの*を表しているようだ。

再現確認

テンキーがあるキーボードで、テンキーの*を入力。
$ lsOj
再現完了。zsh + テンキー入力に問題があることが分かった。
HHKB使っているとテンキーがないから気が付かなかった。
ここまで分かればググれば解決できそう。

zsh + テンキー入力

記事があった。感謝。
https://superuser.com/questions/742171/zsh-z-shell-numpad-numlock-doesnt-work
設定ファイルに以下を入力で、テンキー有効化

.zshrc
# Keypad
# 0 . Enter
bindkey -s "^[Op" "0"
bindkey -s "^[Ol" "."
bindkey -s "^[OM" "^M"
# 1 2 3
bindkey -s "^[Oq" "1"
bindkey -s "^[Or" "2"
bindkey -s "^[Os" "3"
# 4 5 6
bindkey -s "^[Ot" "4"
bindkey -s "^[Ou" "5"
bindkey -s "^[Ov" "6"
# 7 8 9
bindkey -s "^[Ow" "7"
bindkey -s "^[Ox" "8"
bindkey -s "^[Oy" "9"
# + -  * /
bindkey -s "^[Ok" "+"
bindkey -s "^[Om" "-"
bindkey -s "^[Oj" "*"
bindkey -s "^[Oo" "/"

効果確認

HHKBから入力してみる
$ *
解決!

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