diff --git a/src/config/locales/en/translation.json b/src/config/locales/en/translation.json index 59ce4ff5..70da029e 100644 --- a/src/config/locales/en/translation.json +++ b/src/config/locales/en/translation.json @@ -148,6 +148,21 @@ }, "list_membership": { "title": "List Memberships" + }, + "shortcut": { + "title": "Keyboard shortcuts", + "ctrl_number": "Switch accounts", + "ctrl_k": "Jump to other timelines", + "ctrl_n": "Open the new toot modal", + "ctrl_enter": "Post the toot", + "j": "Select the next toot", + "k": "Select the previous toot", + "r": "Reply to the toot", + "b": "Reblog the toot", + "f": "Favourite the toot", + "o": "Open details of the toot", + "p": "Open account profile of the toot", + "esc": "Close current page" } }, "cards": { diff --git a/src/config/locales/ja/translation.json b/src/config/locales/ja/translation.json index 243dadee..eabe0eb5 100644 --- a/src/config/locales/ja/translation.json +++ b/src/config/locales/ja/translation.json @@ -148,6 +148,21 @@ }, "list_membership": { "title": "リストメンバー管理" + }, + "shortcut": { + "title": "キーボードショートカット", + "ctrl_number": "アカウントの切り替え", + "ctrl_k": "タイムラインの移動", + "ctrl_n": "トゥートモーダルの表示", + "ctrl_enter": "トゥート送信", + "j": "次のトゥートを選択", + "k": "前のトゥートを選択", + "r": "リプライ", + "b": "ブースト", + "f": "お気に入り", + "o": "トゥート詳細を開く", + "p": "発言主のプロフィールを開く", + "esc": "ページを閉じる" } }, "cards": { diff --git a/src/renderer/components/TimelineSpace.vue b/src/renderer/components/TimelineSpace.vue index 4e854acd..4b743e2b 100644 --- a/src/renderer/components/TimelineSpace.vue +++ b/src/renderer/components/TimelineSpace.vue @@ -5,6 +5,8 @@ :element-loading-text="$t('message.loading')" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)" + v-shortkey="{help: ['h']}" + @shortkey="handleKey" >
@@ -159,6 +161,13 @@ export default { }, onDragOver (e) { e.preventDefault() + }, + handleKey (event) { + switch (event.srcKey) { + case 'help': + this.$store.commit('TimelineSpace/Modals/Shortcut/changeModal', true) + break + } } } } diff --git a/src/renderer/components/TimelineSpace/Modals.vue b/src/renderer/components/TimelineSpace/Modals.vue index 718b92a7..30f4b719 100644 --- a/src/renderer/components/TimelineSpace/Modals.vue +++ b/src/renderer/components/TimelineSpace/Modals.vue @@ -5,6 +5,7 @@ +
@@ -14,6 +15,7 @@ import Jump from './Modals/Jump' import ImageViewer from './Modals/ImageViewer' import ListMembership from './Modals/ListMembership' import AddListMember from './Modals/AddListMember' +import Shortcut from './Modals/Shortcut' export default { name: 'modals', @@ -22,7 +24,8 @@ export default { Jump, ImageViewer, ListMembership, - AddListMember + AddListMember, + Shortcut } } diff --git a/src/renderer/components/TimelineSpace/Modals/Shortcut.vue b/src/renderer/components/TimelineSpace/Modals/Shortcut.vue new file mode 100644 index 00000000..085675cf --- /dev/null +++ b/src/renderer/components/TimelineSpace/Modals/Shortcut.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/renderer/store/TimelineSpace/Modals.js b/src/renderer/store/TimelineSpace/Modals.js index a18c98bc..773156d5 100644 --- a/src/renderer/store/TimelineSpace/Modals.js +++ b/src/renderer/store/TimelineSpace/Modals.js @@ -3,6 +3,7 @@ import ImageViewer from './Modals/ImageViewer' import Jump from './Modals/Jump' import ListMembership from './Modals/ListMembership' import AddListMember from './Modals/AddListMember' +import Shortcut from './Modals/Shortcut' const Modals = { namespaced: true, @@ -11,7 +12,8 @@ const Modals = { NewToot, Jump, ListMembership, - AddListMember + AddListMember, + Shortcut } } diff --git a/src/renderer/store/TimelineSpace/Modals/Shortcut.js b/src/renderer/store/TimelineSpace/Modals/Shortcut.js new file mode 100644 index 00000000..081d3354 --- /dev/null +++ b/src/renderer/store/TimelineSpace/Modals/Shortcut.js @@ -0,0 +1,11 @@ +export default { + namespaced: true, + state: { + modalOpen: false + }, + mutations: { + changeModal (state, value) { + state.modalOpen = value + } + } +}