22160


Windows 上の putty で ubuntu に接続し、その上で emacs を起動して作業を行おうとしています。

この状態だと、たとえば`C-.`の入力を端末(putty)が正当な入力として受け付けず、何も ubuntu に (そして、 emacs に)
送ってくれないようです。 [参考: Emacs C-. not working in terminal - Ask
Ubuntu](https://askubuntu.com/q/257580/448557)

これをどうにかしたい場合には、端末エミュレーターを設定して、適当な(あいている)コード(たとえば、 f20)を、`C-.`に割り当てて、かつ emacs
側でその割り当てたコードに対する設定を、 本来の`C-.`と同じように設定してやれば、やりたいことが実現できるのではないか、と書いてありました。[参考:
ターミナルでC-,やC-.に割り当てたい -
(ひ)メモ](http://d.hatena.ne.jp/hirose31/20040219/1160403206)

質問:

  1. PuTTy において、たとえば `C-.`に対して、自分で定義したコードを割り当てて、接続先に送ることはできるでしょうか。
  2. できない場合、今やりたいことを実現できるソフトウェアスタックは、どのようなものになるでしょうか。


CC BY-SA 3.0
2016-02-11T11:07:59.067
21979
2016-02-16T07:30:28.973
2017-04-13T12:25:24.820
-1
754
question
windows ssh putty 端末エミュレーター
ssh の先に `C-.` に対して、自分で定義したコード(?)を送れる端末エミュレータがほしい


# PuTTYで設定可能か

オリジナルのPuTTYではおそらく出来ないと思われます。しかし派生版の中には独自機能としてキー定義が追加されている物があります。  
例えばICE IV版[GDI PuTTY](http://ice.hotmint.com/putty/)や[D2D/DW
PuTTY](http://ice.hotmint.com/putty/d2ddw.html)では[プライベートキー定義](http://ice.hotmint.com/putty/#private)で設定が可能です。

### Ice IV版PuTTY設定例

ICE
IV版PuTTYでは、以下の設定を追加するとEmacsで`C-.`および`C->`を認識するようになります。(TERM環境変数はxtermにして下さい)

>
> Vkey190=.,>,\033[27;5;46~,\033[27;6;62~,\033.,\033>,\033[27;7;46~,\033[27;8;62

他のキーでの対応も考えるならば、[このxterm風キー定義](http://ice.hotmint.com/putty/xterm.ini)を追加するのが楽でしょう。

# 他の手段

何らかの理由でオリジナルのPuTTY、もしくは(キー定義機能の無い)特定の派生版のPuTTYを使いたい場合、[AutoHotKey](http://ahkscript.org/)が利用できるかもしれません。

### AutoHotKey設定例

以下のAutoHotKeyスクリプトを利用すると、putty.exeに`C-.`が入力された時に`<ESC>[27;5;46~`が入力されます。

[code]

    #IfWinActive ahk_exe putty.exe
    ^.::
      Send, {ESC}[27;5;46~
    Return
    #IfWinActive
    
[/code]

# 他の端末エミュレータ

逆にPuTTYにこだわらない場合、キー定義が可能な他の端末エミュレータを利用する方法があります。  
例えば、以下の端末エミュレータではキー定義が可能です。

  * [Tera Term](https://ttssh2.osdn.jp/)
  * [RLogin](http://nanno.dip.jp/softlib/man/rlogin/)
  * [Poderosa](http://poderosa.sourceforge.net/)

### Tera Term設定例

Tera Termではキーボード設定ファイル(`KEYBOARD.CNF`)を編集する事によりキー定義を行えます。  
Emacsで`C-.`を認識させるには`KEYBOARD.CNF`の`[User keys]`セクション(最後)に以下の設定を追加します。

> User1=1076,0,$1B[27;5;46~

また、将来のバージョンではxtermのmodifyOtherKeysという機能に対応予定なので、将来的には特に設定を追加しなくても`C-.`や`C-;`等のキーがEmacsで使えるようになるはずです。

### RLogin設定例

以下の手順で設定できます。

  1. 設定したいサーバエントリで`編集`を押す
  2. 左の項目で`キーボード`を選ぶ
  3. `キーコード`にある`新規`を押す
  4. `Key Code`で`$BE(.)`を選び、右の`Ctrl`チェックボックスにチェックを入れる
  5. `Assign String`に`\033[27;5;46~`を入力する
  6. `OK`を押してダイアログを閉じる

### Poderosa設定例

以下の手順で設定できます。

  1. メニューの`ツール`－`オプション`を選ぶ
  2. ダイアログの右側の項目で`操作`を選ぶ
  3. `キーボード`の`追加キー定義`に`Ctrl+Period=0x1b[27;5;46~`を追加する
  4. `OK`を押してダイアログを閉じる


CC BY-SA 3.0
2016-02-16T07:30:28.973
22160
2016-02-16T07:30:28.973
12203
21979
answer