質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

Q&A

解決済

1回答

2044閲覧

emacs環境内でのキーの入れ替え

hoshidash

総合スコア21

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

0グッド

1クリップ

投稿2020/04/01 03:14

例えば、capsとctrlの入れ替えはよく行われていることですが、通常はxmodmapやKarabiner-Elementなどをを使って、OSレベルで行われることが多いと思います。

同じようなキーの入れ替えをemacs内でのみ実現する方法はないでしょうか。

やりたいこと

emacsではmetaキーを頻用しますが、代替のopt/altキーは大変押しにくいところにあるので、tabとopt/altを入れ替えたいです。
一方で、emacs外ではopt/altキーはsuperやshiftとセットで使うことが多く、tabの出番も多いので、普段は元の位置にいて欲しいのです。

調べたこと

調べた限りでは、w32-set-modifier-key、mac-command-modifierのような特定の環境・用途に特化したコマンドは見つけることはできたのですが、
任意のkeycodeとキーを再定義するような、普遍的な方法は見つけることはできませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2020/04/01 12:17

環境は Mac? Emacsの実装までは知りませんが、Altキーは他のキーとの組合せ(装飾, 同時打鍵)で使うのに対し、Tabキーは単独なので、入れ替えは難しいのではないでしょうか。まあ、Meta → ESC みたいに、ESC キーを打ってからと、言う方法ならあるでしょうが。(Tabキーを Tabキー + ?? の組合せとする) 同時打鍵の検出は、通常のアプリでは無理と思います。(Emacsがそこまでの実装をしているとは思えない)
hoshidash

2020/04/01 12:42

ご返答いただきありがとうございます。環境はmacとlinux、たまにwindowsです。 記載が不明瞭であったようで申し訳ありません。 キー入力の組み合わせで何かを代用したいと言うのではなく、キーコードの入れ替えをしたいという意図でした。 'tab'と刻印された左上にあるボタンを押すと'9'というキーコードが発生し、'alt'と刻印された左下のボタンを押すと'18'というキーコードが発生します。 通常の状態ではキーコード9にタブ文字、キーコード18にaltの機能が紐づけられていますが、この対応を逆にしたいのです。 ctrlとcapslockの入れ替えの話は、キーコード17のctrlとキーコード20のcapslockの対応を入れ替えて、17でcapslock、20でctrlになるようにするもので、広く行われていることでしたので、やりたいことが伝わりやすいかと思って例に出しました。 w32-set-modifier-key、mac-command-modifierのようにキーコードの対応を部分的に変更する関数が存在する以上、普遍的に任意の対応を作る方法があるのではと思い質問をいたしました。
pepperleaf

2020/04/02 12:35

> emacs内でのみ実現する方法 という事ですね。気が付きませんでした。 多分、Mac, Windows, Linuxなどで、キーコードでのアクセスはローレベルアクセスなので、OS依存(or 環境依存)なので普遍的が難しいと思います。また、キーコードも環境依存(US/JPでも違う)。どなたかが汎用的ライブラリを作成していれば、別ですが、まだ知りません。 役に立てず、すみません。
hoshidash

2020/04/02 13:12

ありがとうございます。 keyboard.cとかkeycode.cとかをぼんやりと眺めてみました限りですが、emacs内部でもキーシンボルとではなく、キーコードと機能を結びつけているように見えますので、emacs内でのやりようはありそうな雰囲気は感じました。 もう少し調べてみたいと思います。
guest

回答1

0

自己解決

解決したわけではないのですが、Karabiner-elementを使って、同じようなことをやってみました。

tabよりもaltの使用頻度が高いと思っていて、入れ替えたら便利だと思っていたのですが、実際やってみると補完に無意識にtabをよく使っていて、想像していたほどは便利ではないことがわかりましたので、この件はいったん終わりにします。

もしかすると同じようなことをしたい酔狂な方がいるかもしれませんので、karabiner-elementの設定ファイルを貼っておきます。よろしければどうぞ。

json

1{ 2 "title": "Emacs settings", 3 "rules": [{ 4 "description": "swap tab for alt in Emacs", 5 "manipulators": [{ 6 "type": "basic", 7 "from": { 8 "key_code": "tab", 9 "modifiers": { 10 "optional": [ "any" ] 11 } 12 }, 13 "to": [ { 14 "key_code": "left_alt" 15 } ], 16 "conditions": [ { 17 "type": "frontmost_application_if", 18 "bundle_identifiers": [ "^org\.gnu\.Emacs$" ] 19 } ] 20 },{ 21 "type": "basic", 22 "from": { 23 "key_code": "left_alt", 24 "modifiers": { 25 "optional": [ "any" ] 26 } 27 }, 28 "to": [ { 29 "key_code": "tab" 30 } ], 31 "conditions": [ { 32 "type": "frontmost_application_if", 33 "bundle_identifiers": [ "^org\.gnu\.Emacs$" ] 34 } ] 35 }] 36 }] 37} 38

投稿2020/04/07 06:54

hoshidash

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問