24976


OS: OSX Yosemite

tmux上で、以下コマンドでemacsを立ち上げています。

[code]

    $ emacs -nw
    
[/code]

Redo/Undoを、`C-.`、`C-/`に割り当てていますが、キーを入力しても反応がありません。

`describe-key`でキーバインドを確かめようとしましたが、  
`C-.`、`C-/`どちらも入力できませんでした。

他のキーだと、入力できてキーバインドを確認することはできました。

上記の状況に心当たりがあり、解決方法をご存知の方はいらっしゃいますでしょうか？


CC BY-SA 3.0
2016-05-18T02:14:39.337
24953
2016-05-18T13:39:52.203
12765
question
emacs tmux
tmux + emacsで、<C-.>、<C-/>のキーが反応しない


端末エミュレータ上で`C-.`等の修飾キー操作を入力することは難しかったと思います。

代替案としては、Ctrlキーを押したように見せかけるキーバインド `C-x @ c` (`event-apply-control-modifier`)
を利用する手があります。ただし、Redo/Undoのように多用するコマンドを呼び出すのには扱いやすいキー操作ではないかもしれません。

  * `C-.` を入力したい→ `C-x @ c .`
  * `C-/` を入力したい→ `C-x @ c /`

参考：ターミナル上のEmacsで本来使えない"Ctrlキー+何か"を使う方法  
<http://d.hatena.ne.jp/sugyan/20120228/1330392943>

また、リンク先の記事ではiTerm2のキーボードショートカット設定で`C-;`を`C-x @ c ;`に変換することもできるそうです。


CC BY-SA 3.0
2016-05-18T09:28:19.203
24967
2016-05-18T09:28:19.203
2391
24953
answer


Teminal として xterm を使うという条件であれば、Emacs で `C-.` などを入力できる様になるかもしれません。したがって、Mac OS
X で X Window System アプリケーションが利用できない場合、以下は意味がなくなりますのでご承知おき下さい。

こちらの環境は以下の通りです。

[code]

        OS: Linux 4.4.0
    Distro: Ubuntu 16.04
     xterm: 322
      tmux: 2.1
     Emacs: 25.1(snapshot version)
    
[/code]

xterm には `modifyOtherKeys` という resource が用意されています。

> **modifyOtherKeys (class ModifyOtherKeys)**
>
> Like modifyCursorKeys, tells xterm to construct an escape sequence for other
> keys (such as "2") when modified by Control-, Alt- or Meta-modifiers. This
> feature does not apply to function keys and well-defined keys such as ESC or
> the control keys. The default is "0":
[code]

>      0  disables this feature.
>      1  enables this feature for keys except for those with well-known
> behavior,
>         e.g., Tab, Backarrow and some special control character cases, e.g.,
>         Control-Space to make a NUL.
>      2  enables this feature for keys including the exceptions listed.
>  
[/code]

ここでは `1` に設定します(`2` に設定すると全ての escape sequence が「そのままの状態で」出力されてしまいます)。具体的には
`$HOME/.xresources` に以下を追加します。

[code]

    XTerm*eightBitInput:    false
    XTerm*metaSendsEscape:  true
    XTerm*modifyOtherKeys:  1
    
[/code]

設定をリロードします。

[code]

    $ xrdb -load $HOME/.xresources
    
[/code]

ここでは `$HOME/.xresources` としていますが、任意のファイルで構いません。

次に `$HOME/.tmux.conf` に以下を追加します。

[code]

    set -g xterm-keys on
    
[/code]

これによって 上記の xterm resource に tmux の動作が対応する様になります。

なお、こちらの環境では `C-.` と `C-/` が効く様になりましたが、`C-;(semicolon)` が無効のままです。


CC BY-SA 3.0
2016-05-18T13:39:52.203
24976
2016-05-18T13:39:52.203
24953
answer