Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KeyRemac4MacBook.rb

 KeyRemac4MacBook.rb

tokyurubykaigi06発表資料

4e59ed159ecf71ef3981cfb65a62617e?s=128

Tatsuya Touma

February 17, 2016
Tweet

Transcript

  1. KeyRemap4MacB ook.rb @kei_q 2013-06-29 TokyuRuby 会議06 #tqrk06

  2. KR4MB とは? https://pqrs.org/macosx/keyremap4macbook/

  3. None
  4. うっかりでアプリ終了しちゃった Cmd + q を長押しに

  5. US 配列でも簡単に入力切り替えし たい Cmd を英数/ かな兼用に

  6. あのアプリでEmacs ぽくカー ソル 移動したい (cmd | opt | ctrl) +

    npbf でカー ソル移動
  7. Problem 設定がたいへん

  8. None
  9. 設定画面

  10. 検索で絞り込み

  11. 設定数 1877

  12. 設定(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>
  13. "XML の視覚的なノイズは、 我慢の限界を超えてい ました。 人々 は, 山括弧が目に痛いと訴え始めたの です。" そこで、XML の問題点なしに、XML

    の設定ファイル のメリットを享受したいという願望が出てきまし た。 ドメイン特化言語 - パター ンで学ぶDSL のベストプラクティス46 項目 IX ペー ジより
  14. どうする

  15. None
  16. None
  17. DSL を書こう!

  18. Keyremac gem install keyremac

  19. None
  20. 再掲: 設定(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>
  21. Keyremac では require 'keyremac' ';' .to 'RETURN' 設定の確認 ruby private.rb

    --dump 設定の読み込み ruby private.rb --reload
  22. 基本機能 キー を別のキー に ';' .to :RETURN キー に修飾キー の機能追加

    :JIS_EISUU .overlaid :COMMAND_L 特定のアプリだけ設定を有効に app "APPNAME" do ... end 特定の入力ソー スだけ設定を有効に item inputsource: "APPNAME" do ... end
  23. 未対応のタグ タグ名 + '_' でそのまま出力 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
  24. 私の設定 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
  25. None
  26. semicolon とunderscore をswap ':' .to ':' ';' .to '_' '_'

    .to ';'
  27. F7-9 でitunes 操作 :F7 .to :MUSIC_PREV :F8 .to :MUSIC_PLAY :F9

    .to :MUSIC_NEXT
  28. F10-12 で音量調節 :F10 .to :VOLUME_MUTE :F11 .to :VOLUME_DOWN :F12 .to

    :VOLUME_UP
  29. SPACE の左右を再設定 :JIS_EISUU .overlaid :COMMAND_L :COMMAND_L .to :OPTION_L :JIS_KANA .to

    :RETURN
  30. 'A' のとなりを単体で 英数 + ESC :CONTROL_L .overlaid :CONTROL_L, keys: [:JIS_EISUU,

    :ESCAPE]
  31. SandS :SPACE .overlaid :SHIFT_L, repeat: true

  32. window 最小化を無効に :m.cmd .to :VK_NONE # disable_minimize

  33. IME 切り替え :j.ctrl .to :JIS_KANA # "Google IME"

  34. 左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
  35. 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
  36. 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
  37. 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
  38. タブの切替 ['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 }
  39. Haskell 版Keyremac 製作中

  40. None
  41. getting started $ gem install keyremac $ touch > private.rb

    require 'keyremac' ';' .to :RETURN $ ruby private.rb --reload