Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KeyRemac4MacBook.rb
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kei-q
February 17, 2016
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KeyRemac4MacBook.rb
tokyurubykaigi06発表資料
kei-q
February 17, 2016
More Decks by kei-q
See All by kei-q
春の鎌倉 Tech&Product Meet発表資料
keqh
0
44
Rubyistのみんなに 私の推しのDuckDBを 紹介させてください
keqh
0
91
Repro_Tech_Meetup__1_Docker.pdf
keqh
4
720
PSD.rbでiPhoneアプリ開発のギョームをカイゼンしたい(仮)
keqh
0
200
すごいErlang楽しく学んだ!
keqh
0
220
Other Decks in Programming
See All in Programming
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
580
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
270
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
550
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
130
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.4k
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
110
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
120
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
550
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
720
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
110
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.8k
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
240
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to make the Groovebox
asonas
2
2.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Abbi's Birthday
coloredviolet
2
8.1k
Done Done
chrislema
186
16k
Thoughts on Productivity
jonyablonski
76
5.2k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Transcript
KeyRemap4MacB ook.rb @kei_q 2013-06-29 TokyuRuby 会議06 #tqrk06
KR4MB とは? https://pqrs.org/macosx/keyremap4macbook/
None
うっかりでアプリ終了しちゃった Cmd + q を長押しに
US 配列でも簡単に入力切り替えし たい Cmd を英数/ かな兼用に
あのアプリでEmacs ぽくカー ソル 移動したい (cmd | opt | ctrl) +
npbf でカー ソル移動
Problem 設定がたいへん
None
設定画面
検索で絞り込み
設定数 1877
設定(XML) <?xml version="1.0" encoding="UTF-8"?> <root> <item> <name>sample</name> <identifier>private.sample</identifier> <autogen>__KeyToKey__ KeyCode::SEMICOLON,
KeyCode::RETURN</autogen> </item> </root>
"XML の視覚的なノイズは、 我慢の限界を超えてい ました。 人々 は, 山括弧が目に痛いと訴え始めたの です。" そこで、XML の問題点なしに、XML
の設定ファイル のメリットを享受したいという願望が出てきまし た。 ドメイン特化言語 - パター ンで学ぶDSL のベストプラクティス46 項目 IX ペー ジより
どうする
None
None
DSL を書こう!
Keyremac gem install keyremac
None
再掲: 設定(XML) <?xml version="1.0" encoding="UTF-8"?> <root> <item> <name>sample</name> <identifier>private.sample</identifier> <autogen>__KeyToKey__
KeyCode::SEMICOLON, KeyCode::RETURN</autogen> </item> </root>
Keyremac では require 'keyremac' ';' .to 'RETURN' 設定の確認 ruby private.rb
--dump 設定の読み込み ruby private.rb --reload
基本機能 キー を別のキー に ';' .to :RETURN キー に修飾キー の機能追加
:JIS_EISUU .overlaid :COMMAND_L 特定のアプリだけ設定を有効に app "APPNAME" do ... end 特定の入力ソー スだけ設定を有効に item inputsource: "APPNAME" do ... end
未対応のタグ タグ名 + '_' でそのまま出力 before item_ do name_ 'jis_to_us'
identifier_ 'private.jis_to_us' autogen_ "__SetKeyboardType__ KeyboardType::MACBOOK" :JIS_YEN .to :BACKQUOTE :JIS_UNDERSCORE .to :BACKQUOTE end
私の設定 JIS をUS に item_ do name_ 'jis_to_us' identifier_ 'private.jis_to_us'
autogen_ "__SetKeyboardType__ KeyboardType::MACBOOK" :JIS_YEN .to :BACKQUOTE :JIS_UNDERSCORE .to :BACKQUOTE end
None
semicolon とunderscore をswap ':' .to ':' ';' .to '_' '_'
.to ';'
F7-9 でitunes 操作 :F7 .to :MUSIC_PREV :F8 .to :MUSIC_PLAY :F9
.to :MUSIC_NEXT
F10-12 で音量調節 :F10 .to :VOLUME_MUTE :F11 .to :VOLUME_DOWN :F12 .to
:VOLUME_UP
SPACE の左右を再設定 :JIS_EISUU .overlaid :COMMAND_L :COMMAND_L .to :OPTION_L :JIS_KANA .to
:RETURN
'A' のとなりを単体で 英数 + ESC :CONTROL_L .overlaid :CONTROL_L, keys: [:JIS_EISUU,
:ESCAPE]
SandS :SPACE .overlaid :SHIFT_L, repeat: true
window 最小化を無効に :m.cmd .to :VK_NONE # disable_minimize
IME 切り替え :j.ctrl .to :JIS_KANA # "Google IME"
左SHIFT を修飾キー に # extra1 :SHIFT_L.cmd .to :SHIFT_L.cmd :SHIFT_L.opt .to
:SHIFT_L.opt :SHIFT_L.ctrl .to :SHIFT_L.ctrl :CONTROL_L.extra1 .to :CONTROL_L.shift :SHIFT_L .to :VK_MODIFIER_EXTRA1
ctrl+npfb をemacs っぽく # ctrl-npを強制的に↑↓に :p.ctrl.none .to :CURSOR_UP :n.ctrl.none .to
:CURSOR_DOWN :b.ctrl.none .to :CURSOR_LEFT :f.ctrl.none .to :CURSOR_RIGHT
TMUX を1 ストロー クで操作 app 'TERMINAL' do "pnco".chars { |c|
c.extra1 .to :JIS_EISUU, :t.ctrl, c } "jkl" .chars { |c| c.extra1 .to :JIS_EISUU, :t.ctrl, c } "du" .chars { |c| c.extra1 .to :t.ctrl, '['.ctrl, c.ctrl } end
Sublime Text でGoogle IME の予 測変換 appdef_ do appname_ "SUBLIME"
equal_ "com.sublimetext.3" equal_ "com.sublimetext.2" end app 'SUBLIME', inputsource: 'JAPANESE' do :TAB .to :i.ctrl end
タブの切替 ['SUBLIME', 'GOOGLE_CHROME'].each { |app_name| app app_name do :p.extra1 .to
:JIS_EISUU, '['.cmd.shift :n.extra1 .to :JIS_EISUU, ']'.cmd.shift end }
Haskell 版Keyremac 製作中
None
getting started $ gem install keyremac $ touch > private.rb
require 'keyremac' ';' .to :RETURN $ ruby private.rb --reload