Abstract
Hello eveyone it’s me candle.
This time I will show you how to solve the problem that you can’t use symbol keybind on your iTerm2 emacs.
Basically, emacs on iTerm2 can’t use key binding of control + symbol.
The detail thing is written in this article.
(japanese)
http://memo.sugyan.com/entry/20120224/1330051378
Acouding to the article
Apparently it seems that the range of ASCII that ctrl key can control is decided.
This post referred to the below linked article.
I tried how to setup symbol key binding a few years ago and I was frustrated.
But I solved it by that. it was really helpful.
(japanese)
http://d.akinori.org/2012/01/02/
Precondition
You use emacs
You use iTerm2
Setting policy
First of all, I wrote it in the abstract chapter, iTerm2 can’t use control + symbol key binding directly.
So we use the function of emacs as if we hit the control + symbol.
Since I don’t know about detail thing of emacs, I quoted from the referenced article.
(I translated to English)
For example, pressing C-x @ c (event-apply-control-modifier) and pressing RET is equivalent to pressing C-RET.
We use this function.
For example, if you want to realize “C-.” , like this “C-x @ c .”.
If you try to run “C-x @ c.” on your emacs, the same action as “C -.” will be executed.
Of course if that key binding is set.
Next, use the global shortcut key of iTerm2’s function.
When you hit “C-.” in iTerm2, if you make it to send “C-x @ c .” to emacs, you can use the “C-.” key binding in emacs.
Key setting of iTerm2
Start iTerm2 and select “Preferences…” from “iTerm2” of the top menu.
Choose the “Keys”, push the + button
We’ll try to add “C-.”
Type the “control + .” in “keyboard shortcut” field which state is active. After typing it will be displayed as “^.”
Next select “Send Hex Code” from the pull down menu.
Write the below text in the appeared text field.
This Hex code corresponds to these.
40 = @
63 = c
2e = .
In brief, that is
Push the ok button.
The other key bindings are these.
ショートカットキー | Hex code |
---|---|
C-, | 18 40 63 2c |
C-. | 18 40 63 2e |
C-: | 18 40 63 3a |
C-; | 18 40 63 3b |
C-< | 18 40 63 3c |
C-> | 18 40 63 3e |
I want you to be careful.
“C-<" is Control + Shift + <
“C->” is registered with Control + Shift + >
As you can see from the above image, the only difference is the last hex code.
If you want to assign C-( or C-/ etc, please see hex code from the below site.
http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html
iTerm2 setting is finish.
Bind a key in emacs
We will assign C-.
We create a function to display the path of the file and assign it to shortcut.
Open the emacs configuration file.
emacs .emacs.d/init.el
Write this.
(defun show-file-name () "Show the full path file name in the minibuffer." (interactive) (message (buffer-file-name))) (global-set-key (kbd "C-.") 'show-file-name)
Save it and reload the file.
M-x eval-buffer
And execute C-.
C-.
The file name will be displayed in the bottom.
This means that “C-.” entered on the keyboard has been converted to “C-x @ c .” with iTerm2 and that keybinding worked well on emacs.
It works good.
Conclusion
You can define more shortcut keys with simple symbol key bindings.