キーバインド
Kanaemi のキーは、すべて設定で変えられます。修飾キーの単独押しも含めて、どのキーの割り当ても同じように外したり、別の機能に付け替えたりできます。
設定ファイル の [keys.<場面>] に、"押したキー" = "@機能" と書きます。書いた割り当ては既定の割り当てに足され、同じキーなら置き換わります。"@none" は割り当てを外します。
[keys.reading]"ctrl+space" = "@next" # 足す"shift+space" = "@none" # 外す| 場面 | いつ |
|---|---|
reading |
読みを打っているとき |
completion |
読みの 補完 の一覧が出ているとき。ここにないキーは reading のとおりに働く |
candidates |
候補を選んでいるとき |
registration |
語を登録しているとき(登録する文字列を打っているとき) |
registration.kana-mode・registration.abc-mode |
語を登録しているときのうち、かなモード・ABC モードで打っているとき(下を見る) |
kana |
かなモードで、何も打っていないとき |
abc |
ABC モードで、何も打っていないとき |
application |
ふだん。何も打っていないときに、押したキーを別のキーに置き換えて送る(下を見る) |
application.macos・application.windows・application.linux |
ふだんの置き換えのうち、その OS でだけ働くもの(下を見る) |
場面に合わない機能は書けません。どの場面でどの機能が使えるかは 機能 にあります。
- 1 文字のキー:
"a"・"0"・";" - 名前のあるキー:
space・tab・enter・esc・backspace・delete・left・right・up・down・home・end・page-up・page-down・f1〜f12・eisu(英数)・kana(かな)・henkan(変換)・muhenkan(無変換)・zenkaku-hankaku(半角/全角)・caps-lock - 修飾キーとの組み合わせ:
+でつなぐ。修飾キーはctrl・cmd・alt・shift("ctrl+h"・"shift+space") - 左右の修飾キーそのもの:
left-shift・right-shift・left-ctrl・right-ctrl・left-cmd・right-cmd・left-alt・right-alt
cmd は Windows と Linux では Win キー、alt は macOS では Option です。
caps-lock に機能を割り当てても、OS の Caps Lock はそのまま切り替わります。Windows の日本語キーボードでは Caps Lock を Shift+英数 で押すので、"shift+caps-lock" と書きます。
Shift・Ctrl・Cmd(Win)・Option(Alt)は、左右それぞれに、押したときと単独押しとで別々に機能を割り当てられます。
left-shiftのように書くと、押したときに働きます。left-shift#tapのように#tapを付けると、単独押しで働きます。単独押しは、ほかの修飾キーを押さえずに押し、ほかのキーを押さずに離したときです。- 押してから離すまでが
tap_timeout_ms(既定は 300 ミリ秒)を超えたら、単独押しになりません。 - どちらの割り当てが働いても、キー自体はアプリにも渡ります。
既定では、左の Shift の単独押しが ABC モード、右の Shift の単独押しがかなモードです。
押さえたまま
Section titled “押さえたまま”文字を打つキー(Space を含む)は、押さえたままにも機能を割り当てられます。SandS(Space を押さえている間は Shift、単独で押すと Space)のようなもので、Shift の代わりに、割り当てた機能が働きます。#hold を付けて書きます。
- 押さえたまま文字を打つと、その機能を働かせてから文字を打ちます。
- 単独で押すと、そのキーのふだんの割り当てのまま働きます。ただし、押したときではなく離したときに働きます。
- 速く打ってキーが重なったときは、文字のキーを先に離せば押さえたまま、押さえたキーを先に離せば単独で押してから文字を打ったものとします。ほぼ同時に離したときは、文字のキーを先に離したもの(押さえたまま)とします。
tap_timeout_msより長く押さえて、何も打たずに離したときは、何もしません。- 押さえている間にモードが切り替わると、そのキーは離したものとします。押さえたまま打って待っていた文字は、単独で押したものとして先に打ちます。
- 押さえたままか単独で押したのかが決まるまで、未確定文字列の末尾に 押さえたままの印 を出します。既定の印は空です。
- ローマ字の打ちかけの続きとして表の規則を作るキーは、押さえたままの割り当てを働かせず、表を通します。
macOS では、キーを離したことを知るのに「入力監視」の許可が要ります。許可がないあいだ、押さえたままに割り当てたキーは、いつも単独で押したものとして働きます(macOS の許可)。
SandS で使う
Section titled “SandS で使う”SKK で SandS を使ってきた人は、Space を押さえたまま打つことで、; の代わりに読みや送り仮名を始められます。Shift で読みを示していた指の動きが、そのまま使えます。
| 打つキー | 結果 | ; で打つなら |
|---|---|---|
Space を押さえたまま k、離して anji |
›かんじ | ;kanji |
ka、Space を押さえたまま k、離して u |
»書く | ;ka;ku |
候補を選んでいるときに Space を押さえたまま k … |
候補を確定して、次の読みを始める | »漢字;k … |
Space を押さえたまま続けて打っても、読みの始めのローマ字の打ちかけ(nyu の yu)や、送り仮名を始めたあとの打ちかけの続き(ka のあと押さえたまま tta の ta)では、読みや送り仮名を始め直しません。読みのかなの後ろに打ちかけがあれば、先にかなにしてから送り仮名を始めます(kan のあと押さえたまま ji で、送り仮名は「じ」)。
既定では割り当てていないので、使うときは足してください。
- 設定アプリ:キーバインドの「読みを始める」に「Space を押さえたまま」を足します。読みを始める機能が働くすべての場面に、まとめて割り当てます。
- 設定ファイル:場面ごとに
"space#hold" = "@begin"を書きます。
[keys.kana]"space#hold" = "@begin"
[keys.reading]"space#hold" = "@begin"
[keys.candidates]"space#hold" = "@begin"
[keys.registration]"space#hold" = "@begin"Space を単独で押したときは、これまでどおり変換・次の候補・空白として働きます。ただし、押したときではなく離したときに働くようになります。; の割り当てはそのまま残るので、両方を使い分けられます。
割り当てのないキー
Section titled “割り当てのないキー”- 文字のキーは、その文字を打ちます。候補を選んでいるときは、選んでいる候補を確定してから打ちます。
- かなモードの Space は、ローマ字の表 に空白を入力に含む規則があれば、文字のキーと同じに表を通します。
- Space・Enter・矢印などは、読み・候補・登録する文字列があるあいだは何もしません。
- Ctrl・Cmd(Win)・Option(Alt)付きのキーは、入力中は何もしません。
[keys] pass_while_composingに書いた修飾キー("cmd"・"ctrl"・"alt")付きのキーは、確定してからアプリに渡します。 - ほかのキー(割り当てのない Tab など)は、未確定文字列をそのままにしてアプリに渡します。
[keys]pass_while_composing = ["cmd"] # 入力中に Cmd+S を押しても、確定してから保存される何も打っていないときは、押したキーを別のキーに置き換えてアプリに送れます。どの OS のどのアプリでも、同じキー(Emacs のキーなど)で操作できるようにするためです。ここだけは機能ではなく、送るキーの名前を書きます。
[keys.application]"ctrl+h" = "backspace""ctrl+n" = "down""ctrl+p" = "up"置き換えの対象は、文字のキーや F キーを除いた、名前のあるキーだけです。置き換えのないキーと、キーを送れないときは、押したキーをそのままアプリに渡します。
- macOS では、キーを送るのにアクセシビリティの許可が要ります(macOS の許可)。
- Linux の Fcitx5 で、Sway のような Wayland の入力メソッドのプロトコルの第 2 版を使うデスクトップでは、送るキーに押している修飾キーが付いてしまうため、置き換えません。
OS ごとの置き換え
Section titled “OS ごとの置き換え”置き換えは、OS ごとにも決められます。[keys.application] はどの OS にも働き、[keys.application.macos]・[keys.application.windows]・[keys.application.linux] は、その OS で動いているときだけ上に重なります。同じキーなら OS の表が勝ち、"@none" でその OS でだけ置き換えを外せます。
[keys.application]"ctrl+m" = "enter"
[keys.application.macos]"ctrl+m" = "@none" # macOS では置き換えない
[keys.application.windows]"ctrl+h" = "backspace"既定では次のとおりです(既定のキー)。
| OS | 既定の置き換え |
|---|---|
| どの OS でも | Ctrl+M を Enter に |
| macOS | Ctrl+Backspace・Ctrl+Delete を、語ごとに消す Option+Backspace・Option+Delete に。Ctrl+H などは、macOS の入力欄がもともと扱うので置き換えない |
| Windows・Linux | Emacs 風の Ctrl+H・D・B・F・A・E・N・P を、Backspace・Delete・矢印・Home・End に |
ほかの OS の表に書き間違いがあっても、ログと設定アプリで知らせます。設定ファイルを OS の違うマシンに持っていっても、そのまま使えます。
キーを置き換えないアプリ
Section titled “キーを置き換えないアプリ”ターミナルや Emacs のように、Ctrl+H などを自分で扱うアプリでは、置き換えないほうが都合のよいことがあります。[keys] send_except に並べたアプリでは、置き換えのあるキーも、置き換えのないキーと同じにそのままアプリに渡します。
[keys]send_except = ["com.apple.Terminal", "org.gnu.Emacs"]アプリは、OS がアプリを見分ける名前で書きます。大文字と小文字は区別しません。
| OS | 書くもの | 例 |
|---|---|---|
| macOS | バンドル ID | com.apple.Terminal |
| Windows | 実行ファイル名 | WindowsTerminal.exe |
| Linux | GTK のプログラム名 | gnome-terminal-server |
Linux では、プログラム名を伝えないアプリ(XIM を通るものなど)は見分けられず、いつも置き換えます。
設定アプリ では、アプリを名前とアイコンで選んで足せます。


AZIK で使う
Section titled “AZIK で使う”用意されたローマ字の表 azik は、; で「っ」を打ちます。AZIK を使うときは、; を @begin から外し、読みを始めるキーを別に割り当ててください。
[romaji]tables = ["full-width", "hepburn", "kunrei", "input-aids", "z-symbols", "azik"]
[keys.kana]";" = "@none""right-alt#tap" = "@begin"
[keys.reading]";" = "@none""right-alt#tap" = "@begin"
[keys.candidates]";" = "@none""right-alt#tap" = "@begin"
[keys.registration]";" = "@none""right-alt#tap" = "@begin"この例では、右の Option(Alt)の単独押しで読みを始めます。
登録の場面をモードごとに分ける
Section titled “登録の場面をモードごとに分ける”語を登録しているときの割り当ては、かなモードで打っているときと ABC モードで打っているときとで分けられます。[keys.registration] はどちらのモードにも働き、[keys.registration.kana-mode]・[keys.registration.abc-mode] は、そのモードで打っているときだけ上に重なります。同じキーならモードの表が勝ち、"@none" でそのモードでだけ割り当てを外せます。
# 英字で登録する文字列を打っているときは、; を読みの始まりにせず、そのまま打つ[keys.registration.abc-mode]";" = "@none"既定では、どちらのモードの表も空です。登録の場面の中で読み・候補の場面に入っているあいだは、その場面の割り当てが働きます。