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

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

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

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Lua

Luaは、汎用のスクリプト言語の一つで、 移植性が高く、高速な実行速度などの特徴を持ち 手続き型・オブジェクト指向言語としても利用可能で 関数型言語、データ駆動型の要素も併せ持っている言語です。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

Q&A

0回答

695閲覧

Office (Word)でEmacsライクなキーバインディングをHammerspoon (Lua)で解決したい。

nono33

総合スコア17

Emacs

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

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Lua

Luaは、汎用のスクリプト言語の一つで、 移植性が高く、高速な実行速度などの特徴を持ち 手続き型・オブジェクト指向言語としても利用可能で 関数型言語、データ駆動型の要素も併せ持っている言語です。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

0グッド

0クリップ

投稿2021/02/11 15:41

編集2021/02/11 15:42

一番やりたいことは「Office (Word)でEmacsライクなキーバインディングを実現したい」なんですが、色々調べた結果、Hammperspoonを使うのが簡単そうでした。

https://qiita.com/swdyh/items/04f7da8c1209a067add5
このサイトやこの元の引用サイトを調べて下記のように初期設定しました(LUA言語でinit.luaに記載しています)。

質問したいことは、下記コードでほとんどやりたいことは実現できているのですが、最後のCtrl-kで、
「カーソル以降の削除と削除したものをクリップボードにコピーするが」実現できていません。
調べると、 keyCode('e', {'shift', 'ctrl'})() ここが働いていないようです。
何か解決方法やアドバイスを頂ければ助かります!
宜しくお願いいたします。

Lua

1local function keyCode(key, modifiers) 2 modifiers = modifiers or {} 3 return function() 4 hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), true):post() 5 hs.timer.usleep(1000) 6 hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), false):post() 7 end 8end 9 10local function remapKey(modifiers, key, keyCode) 11 hs.hotkey.bind(modifiers, key, keyCode, nil, keyCode) 12end 13 14local function disableAllHotkeys() 15 for k, v in pairs(hs.hotkey.getHotkeys()) do 16 v['_hk']:disable() 17 end 18end 19 20local function enableAllHotkeys() 21 for k, v in pairs(hs.hotkey.getHotkeys()) do 22 v['_hk']:enable() 23 end 24end 25 26local function handleGlobalAppEvent(name, event, app) 27 if event == hs.application.watcher.activated then 28 -- hs.alert.show(name) 29 if name ~= "iTerm2" then 30 enableAllHotkeys() 31 else 32 disableAllHotkeys() 33 end 34 end 35end 36 37appsWatcher = hs.application.watcher.new(handleGlobalAppEvent) 38appsWatcher:start() 39 40-- カーソル移動 41remapKey({'ctrl'}, 'f', keyCode('right')) 42remapKey({'ctrl'}, 'b', keyCode('left')) 43remapKey({'ctrl'}, 'n', keyCode('down')) 44remapKey({'ctrl'}, 'p', keyCode('up')) 45 46-- テキスト編集 47remapKey({'ctrl'}, 'w', keyCode('x', {'cmd'})) 48remapKey({'ctrl'}, 'y', keyCode('v', {'cmd'})) 49 50-- コマンド 51remapKey({'ctrl'}, 's', keyCode('f', {'cmd'})) 52remapKey({'ctrl'}, '/', keyCode('z', {'cmd'})) 53remapKey({'ctrl'}, 'g', keyCode('escape')) 54 55-- ページスクロール 56remapKey({'ctrl'}, 'v', keyCode('pagedown')) 57remapKey({'alt'}, 'v', keyCode('pageup')) 58remapKey({'cmd', 'shift'}, ',', keyCode('home')) 59remapKey({'cmd', 'shift'}, '.', keyCode('end')) 60 61-- カーソル以降を削除しクリップボードにコピーする 62local function keyCtrlK() 63 keyCode('e', {'shift', 'ctrl'})() 64 keyCode('x', {'cmd'})() 65end 66hs.hotkey.bind({'ctrl'}, 'k', keyCtrlK, nil, keyCtrlK)

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問