Mac版程序员喜欢的键位(使用 IDEA)--2017.5.3 更新

16 篇文章 0 订阅
15 篇文章 1 订阅

-------------------------- 2017.5.12 更新 -------------------------------

修改共通映射

1,把 FN + u/o 键变成 OPTION+左/右。(手指头短,按着累。。。)
2,把 FN + p/;  键变成 原来的  FN + u/o(也就是到文件首/尾)


iTerm2映射

1, FN + p/;  键变成 HOME/END 单个键。

      因为如果在 iTerm2 中使用共通的 FN + p/; 映射的话,是TAB切换的快捷键。

-------------------------- 2017.5.12 更新 -------------------------------


-------------------------- 2017.5.4 更新 -------------------------------

1,在Idea中,使用 FN + I/K + Shift + Command,来做向下全选时,不好用。下面的映射使这个功能好用。
注意:这个功能映射要在 FN +ikjl 上面

-------------------------- 2017.5.4 更新 -------------------------------



-------------------------- 2017.5.3 更新 -------------------------------

1,把 FN+TAB 映射成 CMD+TAB。

-------------------------- 2017.5.3 更新 -------------------------------


-------------------------- 2017.5.2 更新 -------------------------------

1,SublimeText3装了ExpandRegion插件后,把这个插件的快捷键设置成和Idea的 extend selection一样的快捷键Ctrl+W。

然后,把FN+W映射成Ctrl+W

-------------------------- 2017.5.2 更新 -------------------------------



-------------------------- 2017.4.28 更新 -------------------------------

1,把 FN + [/] 变成 CMD + [/]

2,把把 FN + z 变成 command + z

3,把自带的 mouse mode v2 和其它配置里,以 HJKL 方向键,变成 IKJL

-------------------------- 2017.4.28 更新 -------------------------------


-------------------------- 2017.4.1 更新 -------------------------------

1,把系统原来的 mission control 的快捷键去掉,然后映射成 control+option+cmd+up

2,把系统原来的 application windows 的快捷键去掉,然后映射成 control+option+cmd+down

-------------------------- 2017.4.1 更新 -------------------------------

1,把Idea的 extend selection的键位,映射成FN+W。

-------------------------- 2016.12.17 更新 -------------------------------

增加了一个方便的操作集合“Control Convenience”。

1,BACKSLASH(\)键+F10~F12键 变成 声音控制键


-------------------------- 2016.12.1 更新 -------------------------------

1,修改“For PC -- IDEA Keymap only”键位,功能没有变,只是把Command + up/down的映射,改成了Command + Shift + up/down。因为在Idea中Command + shiftu+ p/down无法实现“从当前光标到文件头/尾的所有内容选择”功能。原来把Command + up/down映射成了别的键,影响了Idea中的快捷键设置。

-------------------------- 2016.11.24 更新 -------------------------------

1,把“For PC -- IDEA Keymap only”变成了,只有切换到Idea编辑器时才生效的映射。增加功能如下:

     (1)把Command+up/down 变成了 Command + fn + left/right。因为在Idea中,Command + up/down 可以到文件头/尾,但再加Shfit一起使用就不好用了。

2,增加了“For PC -- EDITOR Keymap”映射,把Control+Home/End键 和 Home/End 键映射成Windows的用法。这个映射只对定义好的编辑起作用,这里我们定义了两个编辑器Idea(intellij)和text wrangler,想要增加编辑器的,可以EDITOR的<appdef>定义里增加。

-------------------------- 2016.11.23 更新 -------------------------------

1,修改了外接PC键盘的映射,把PC键盘基本映射和Idea编辑器的映射分开了,新加了“For PC -- IDEA Keymap”映射。如果是外接键盘并且使用Idea编辑器的话,建议把这个也选上。

2,修改了Idea编辑器的光标定到文件头和文件尾的映射。原来的设置的映射不好用。

内容请看原文的中代码。

-------------------------- 2016.11.22 更新 -------------------------------

增加功能:增加了外接键盘的映射,名字为:PC Keybooard(87)。为87键键盘做的映射,功能如下:

1,    <!— 把option键command互换 —>

2,    <!— 把Insert键变成Capslock键 —>
          <!— 因为在programmer keymap 里把Capslock和Fn互换了,外接键盘没有Fn,所以把Insert映射成了Fn —>

3,    <!— 把Control+Home/End键 映射成 文章开始或结尾 —>

4,    <!— 把Mac的Home/End键 变成 Windows的Home/End —>
         <!— 把Mac的Home键(插入键盘就有的,是Window中的Control+Home)功能是 Windows的Control+Home的功能:到文章的最开始 —>
         <!— 把Windows的Home键的功能:到行首 —>
         <!— --------------- 注意:这个映射必须在 “把Control+Home/End键 映射成 文章开始或结尾” 下面,----------- —>
         <!— --------------- 要不然“把Control+Home/End键 映射成 文章开始或结尾”会不好用----------- —>

使用方法:

  方法1,可以在外接键盘时,在Karabiner Preference的Change Key选项卡里,选择programmer keycap和For PC -- Keybooard(87)这两个项目。

  方法2,可以定义一个Karabiner Preference的Profile里新增加一个Profile,我命名为“PC Keybooard(87)”,在Mac桌面的左上角选择新定义的Profile后,再点Karabiner Preference的Change Key选项卡,选择那两个定义的Keymap。这样,可能通过选择Profile来换映射了。



---------------------- 原文 -----------------------

前一段j时间使用Windows总结了一个Windows的键位Remap资料。现在改用Mac后,由于以前使用那套键位太爽了,所以在Mac上也弄了一套。

方法如下:

1,使用Mac自己的功能,把Capslock键设置成为“无效”。方法如下:

    系统编好设置 -> 键盘 -> 在“键盘”选项卡里,选择左下角的“修饰键” -> 选择“Capslock键的”下拉菜单,选择无操作

2,下载Seil,把Capslock键设置成F19的Code(80)。如果你想映射成其它不存在的键也可以,在软件的下面有键相对应的code。

    (Mac上的Capslockwu键位的映射不好弄,所以用Seil软件来设置一下这个键。)

3,下载Karabiner,安装完后需要设置一下,要不然无法使用。设置过程请参看:https://pqrs.org/osx/karabiner/document.html

    启动后,它会出现在屏幕的右上角,有一个四方框,点击它,然后选择“Perferences” -> “Misc & Uninstall”选项卡 -> “open private.xml”,然后会出现finder,里面有一个private.xml。这个文件是我们自定义键存放的地方。用文本编辑器打开它,然后把下面的代码复制进去。具体代码的功能:

  <!— FN键和CapsLock键互换 —>

    <!— 把 FN +ikjl键变成上下左右键 —>

    <!— 把 FN + Y/H/U/O键 变成PageUp/PageDown/Home/End键 —>

    <!— 把 FN + 8/9变成 OPTION+左/右 —>

    <!— 把 FN + M/,/. 键变成 前删除/后删除/回车键 —>

    <!— 把 右FN + cvxfsd 变成 command + cvxfsd —>

    <!— 把 右SHFIT + 上下左右 变成PageUp/PageDown/Home/End —>


-------------------------- 2016.11.22 更新 -------------------------------

具体代码如下(private.xml):

<?xml version="1.0"?>
<root>


  <!- 编辑器软件名字定义 ->
  <appdef>


    <!-- 软件名字定义 开始 ================================== -->
    <!-- 取得软件名字命令:osascript -e 'id of app "iTerm2"' -->
    <!- 定义Editor软件 ->
    <appname>EDITOR</appname>
    <equal>com.jetbrains.intellij</equal>
    <!- 定义TEXTWRANGLER软件 ->
    <equal>com.barebones.textwrangler</equal>
    <!- 定义sublimetext2软件 ->
    <equal>com.sublimetext.2</equal>
    <!- 定义sublimetext3软件 ->
    <equal>com.sublimetext.3</equal>
  </appdef>
  
  <!- Idea软件名字定义 ->
  <appdef>
    <appname>IDEA</appname>
    <equal>com.jetbrains.intellij</equal>
  </appdef>


  <!- iTerm2软件名字定义 ->
  <appdef>
    <appname>iTerm2</appname>
    <equal>com.googlecode.iterm2</equal>
  </appdef>
  <!-- 软件名字定义 结束 ================================== -->




  <!-- 针对不同软件的定义 结束 ================================== -->
  <!-- (这种定义必须在“共通定义”的最上面。当映射冲突时,上面的映射有效) -->
  <!— 为IDEA编辑器做的映射(只有在IDEA编辑器中才好用) —>
  <!- 注意:这个功能映射要在 FN +ikjl 上面,不然这里面的 FN + I/K + Shift + Command 映射不好用 ->
  <item>
    <name>IDEA Keymap only</name>
    <identifier>private.idea</identifier>
    
    <only>IDEA</only>
  
    <!- 把Command+up/down 变成了 Command + fn + left/right。因为在Idea中,Command + up/down 可以到文件头/尾,但再加Shfit一起使用就不好用了。 ->
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_UP, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L,
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_DOWN, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L,
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>




    <!- 在Idea中,使用 FN + I/K + Shift + Command,来做向下全选时,不好用。下面的映射使这个功能好用 ->
    <!- 注意:这个功能映射要在 FN +ikjl 上面 ->
    <autogen>
      __KeyToKey__
      KeyCode::I, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L, ModifierFlag:: FN,
      KeyCode::END, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::K, ModifierFlag::COMMAND_L, ModifierFlag::SHIFT_L, ModifierFlag:: FN,
      KeyCode::END, ModifierFlag::COMMAND_L,  ModifierFlag::FN, ModifierFlag::SHIFT_L
    </autogen>


    
    <!- 把Control+W 映射成 FN+W。 ->
    <autogen>
      __KeyToKey__
      KeyCode::W, ModifierFlag:: FN,
      KeyCode::W, ModifierFlag::CONTROL_L
    </autogen>
  </item>




  <item>
    <name>iTerm2 Keymap only</name>
    <identifier>private.iterm2</identifier>
    
    <only>iTerm2</only>
  
    <!- 把 fn + p/; 映射成 Home/End 单个键。如果不做软件内单独映射,使用共通的映射的话, fn + p/; 变成tab切换 ->
    <autogen>
      __KeyToKey__
      KeyCode::P, ModifierFlag:: FN,
      KeyCode::HOME
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::SEMICOLON, ModifierFlag:: FN,
      KeyCode::END
    </autogen>


  </item>
  <!-- 针对不同软件的定义 结束 ================================== -->






  <item>
    <name>programmer keymap</name>
    <identifier>private.programmer.keymap</identifier>


    <!— 把FN键和CapsLock键互换 —>
    <!— 1, 首先通过系统设置,把Capslock键无效 —>
    <!— 2, 首先需要通过seil,把Capslock键设置成F19 —>
    <!— 3, 再通过下面的两行代码把F19映射成FN,再把FN映射Capslock —>
    <autogen>__KeyOverlaidModifier__ KeyCode::F19, KeyCode::FN, KeyCode::CAPSLOCK</autogen>
    
    <!— 把 FN +ikjl键变成上下左右键 —>
    <autogen>
      __KeyToKey__
      KeyCode::I, ModifierFlag:: FN,
      KeyCode:: CURSOR_UP
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::J, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::K, ModifierFlag:: FN,
      KeyCode:: CURSOR_DOWN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::L, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT
    </autogen>


    <!— 把 FN + Y/H/U/O键 变成PageUp/PageDown/Home/End键 —>
    <autogen>
      __KeyToKey__
      KeyCode::Y, ModifierFlag:: FN,
      KeyCode:: CURSOR_UP, ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::H, ModifierFlag:: FN,
      KeyCode:: CURSOR_DOWN, ModifierFlag::FN
    </autogen>
    <!--
    <autogen>
      __KeyToKey__
      KeyCode::U, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::O, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::COMMAND_L
    </autogen>
    -->
    <autogen>
      __KeyToKey__
      KeyCode::U, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::O, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::P, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::SEMICOLON, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::COMMAND_L
    </autogen>






    <!— 把 FN + 8/9键变成 OPTION+左/右 —>
    <autogen>
      __KeyToKey__
      KeyCode::8, ModifierFlag:: FN,
      KeyCode:: CURSOR_LEFT, ModifierFlag::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::9, ModifierFlag:: FN,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::OPTION_L
    </autogen>






    <!— 把 FN + M/,/. 键变成 前删除/后删除/回车键 —>
    <autogen>
      __KeyToKey__
      KeyCode::M, ModifierFlag:: FN,
      KeyCode:: DELETE
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::COMMA, ModifierFlag:: FN,
      KeyCode:: DELETE, ModifierFlag:: FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode:: DOT, ModifierFlag:: FN,
      KeyCode:: ENTER
    </autogen>


    <!— 把 FN + [/] 变成 CMD + [/]   —>
    <autogen>
      __KeyToKey__
      KeyCode:: BRACKET_LEFT, ModifierFlag:: FN,
      KeyCode:: BRACKET_LEFT, ModifierFlag:: COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode:: BRACKET_RIGHT, ModifierFlag:: FN,
      KeyCode:: BRACKET_RIGHT, ModifierFlag:: COMMAND_L
    </autogen>




    <!— 把 FN + cvxfsdbz 变成 command + cvxfsdbz —>
    <!— 主要是使用 Idea 时的快捷键 —>
    <autogen>
      __KeyToKey__
      KeyCode::C, ModifierFlag:: FN,
      KeyCode::C, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::V, ModifierFlag:: FN,
      KeyCode::V, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::X, ModifierFlag:: FN,
      KeyCode::X, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::F, ModifierFlag:: FN,
      KeyCode::F, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::S, ModifierFlag:: FN,
      KeyCode::S, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::D, ModifierFlag:: FN,
      KeyCode::D, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::B, ModifierFlag:: FN,
      KeyCode::B, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::Z, ModifierFlag:: FN,
      KeyCode::Z, ModifierFlag::COMMAND_L
    </autogen>




    <!— 把 右SHFIT + 上下左右 变成PageUp/PageDown/Home/End —>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_UP, ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_DOWN, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_DOWN, ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_UP, ModifierFlag:: COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_R,
      KeyCode:: CURSOR_DOWN, ModifierFlag:: COMMAND_L
    </autogen>
    


    <!- 把CMD+TAB 映射成 FN+TAB ->
    <autogen>
      __KeyToKey__
      KeyCode::TAB, ModifierFlag:: FN,
      KeyCode::TAB, ModifierFlag::COMMAND_L
    </autogen>
    
    
    <!-- 把 mission control 映射成 control+option+cmd+up -->
    <!-- 把 application windows 映射成 control+option+cmd+down -->
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_UP, ModifierFlag::COMMAND_L, ModifierFlag::OPTION_L, ModifierFlag:: CONTROL_L,
      KeyCode::EXPOSE_ALL
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::CURSOR_DOWN, ModifierFlag::COMMAND_L, ModifierFlag::OPTION_L, ModifierFlag:: CONTROL_L,
      KeyCode::EXPOSE_ALL, ModifierFlag::CONTROL_L
    </autogen>


  </item>
  
  
  <!— 一些方便的操作集合 —>
  <!— BACKSLASH(\)键+F10~F12键 变成 声音控制键—>
  <item>
    <name>Control Convenience</name>
    <identifier>private.control.convenience.</identifier>
  
    <autogen>
      __KeyOverlaidModifier__
      KeyCode::BACKSLASH,
      KeyCode::VK_MODIFIER_EXTRA1,
      KeyCode::BACKSLASH,
    </autogen>




    <block>
      <modifier_only>ModifierFlag::EXTRA1</modifier_only>
      <autogen>
        __KeyToKey__
        KeyCode::F10,
        ConsumerKeyCode::VOLUME_MUTE,


        Option::KEYTOKEY_INCREASE_MODIFIER_FLAGS,
        ModifierFlag::EXTRA1,
      </autogen>
      <autogen>
        __KeyToKey__
        KeyCode::F11,
        ConsumerKeyCode::VOLUME_DOWN,


        Option::KEYTOKEY_INCREASE_MODIFIER_FLAGS,
        ModifierFlag::EXTRA1,
      </autogen>
      <autogen>
        __KeyToKey__
        KeyCode::F12,
        ConsumerKeyCode::VOLUME_UP,


        Option::KEYTOKEY_INCREASE_MODIFIER_FLAGS,
        ModifierFlag::EXTRA1,
      </autogen>
    </block>


  </item>




  <!— 外接键盘映射设置 —>
  <item>
    <name>For PC -- Keybooard(87)</name>
    <identifier>private.pc.keyboard</identifier>


    <!— 把option键command互换 —>
    <autogen>
      __KeyToKey__
      KeyCode::OPTION_L,
      KeyCode::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::COMMAND_L,
      KeyCode::OPTION_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::OPTION_R,
      KeyCode::COMMAND_R
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::COMMAND_R,
      KeyCode::OPTION_R
    </autogen>
    
    
    <!— 把PrintScreen键映射成Power键 —>
<autogen>__KeyToKey__ KeyCode::F13, ConsumerKeyCode::POWER</autogen>


    
  </item>
  
  <!— 为各种编辑器做的映射 —>
  <item>
    <name>For PC -- EDITOR Keymap</name>
    <identifier>private.pc.editor</identifier>
    
    <only>EDITOR</only>


    <!— 把Control+Home/End键 映射成 文章开始或结尾 —>
    <autogen>
      __KeyToKey__
      KeyCode::HOME , ModifierFlag::CONTROL_L,
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L,  ModifierFlag::FN
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::END , ModifierFlag::CONTROL_L,
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L,  ModifierFlag::FN
    </autogen>
    
    <!— 把Mac的Home/End键 变成 Windows的Home/End —>
    <!— 把Mac的Home键(插入键盘就有的,是Window中的Control+Home)功能是 Windows的Control+Home的功能:到文章的最开始 —>
    <!— 把Windows的Home键的功能:到行首 —>
    <!— --------------- 注意:这个映射必须在 “把Control+Home/End键 映射成 文章开始或结尾” 下面,----------- —>
    <!— --------------- 要不然“把Control+Home/End键 映射成 文章开始或结尾”会不好用----------- —>
    <autogen>
      __KeyToKey__
      KeyCode::HOME,
      KeyCode:: CURSOR_LEFT, ModifierFlag::COMMAND_L
    </autogen>
    <autogen>
      __KeyToKey__
      KeyCode::END,
      KeyCode:: CURSOR_RIGHT, ModifierFlag::COMMAND_L
    </autogen>


    <!- 把Control+W 映射成 FN+W。 ->
    <autogen>
      __KeyToKey__
      KeyCode::W, ModifierFlag:: FN,
      KeyCode::W, ModifierFlag::CONTROL_L
    </autogen>


  </item>
  
  
  








<!-- 当想把HKIL的方向,换成JKLI时,把这个打开 -->
  <item>
    <name>Change Direction HJKL to IKJL</name>
    <identifier>private.change.hjkl.to.IKJL</identifier>
    <replacementdef>
      <replacementname>VI_H</replacementname>
      <replacementvalue>KeyCode::J</replacementvalue>
    </replacementdef>


    <replacementdef>
      <replacementname>VI_J</replacementname>
      <replacementvalue>KeyCode::K</replacementvalue>
    </replacementdef>


    <replacementdef>
      <replacementname>VI_K</replacementname>
      <replacementvalue>KeyCode::I</replacementvalue>
    </replacementdef>


    <replacementdef>
      <replacementname>VI_L</replacementname>
      <replacementvalue>KeyCode::L</replacementvalue>
    </replacementdef>
  </item>


</root>

参考:http://apple.stackexchange.com/questions/114856/change-caps-lock-key-to-fn-key

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值