Skip to content

Commit c0b09ae

Browse files
hugoholgerssonMightyCreak
authored andcommitted
Use the Command key (not Ctrl) on macOS
For example, on macOS, Cmd+F opens Find. Ctrl+F is kept on other OSes. The same goes for other standard key commands, like Cmd+S etc.
1 parent 9a7ced4 commit c0b09ae

File tree

1 file changed

+49
-45
lines changed

1 file changed

+49
-45
lines changed

src/diffuse/resources.py

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import glob
2828
import os
29+
import platform
2930
import re
3031
import shlex
3132

@@ -43,36 +44,37 @@
4344
class Resources:
4445
def __init__(self):
4546
# default keybindings
47+
defaultModKey = 'Cmd+' if platform.system() == 'Darwin' else 'Ctrl+'
4648
self.keybindings = {}
4749
self.keybindings_lookup = {}
48-
self.setKeyBinding('menu', 'open_file', 'Ctrl+o')
49-
self.setKeyBinding('menu', 'open_file_in_new_tab', 'Ctrl+t')
50+
self.setKeyBinding('menu', 'open_file', defaultModKey + 'o')
51+
self.setKeyBinding('menu', 'open_file_in_new_tab', defaultModKey + 't')
5052
self.setKeyBinding('menu', 'open_modified_files', 'Shift+Ctrl+O')
5153
self.setKeyBinding('menu', 'open_commit', 'Shift+Ctrl+T')
5254
self.setKeyBinding('menu', 'reload_file', 'Shift+Ctrl+R')
53-
self.setKeyBinding('menu', 'save_file', 'Ctrl+s')
54-
self.setKeyBinding('menu', 'save_file_as', 'Shift+Ctrl+A')
55-
self.setKeyBinding('menu', 'save_all', 'Shift+Ctrl+S')
55+
self.setKeyBinding('menu', 'save_file', defaultModKey + 's')
56+
self.setKeyBinding('menu', 'save_file_as', defaultModKey + 'Shift+A')
57+
self.setKeyBinding('menu', 'save_all', defaultModKey + 'Shift+S')
5658
self.setKeyBinding('menu', 'new_2_way_file_merge', 'Ctrl+2')
5759
self.setKeyBinding('menu', 'new_3_way_file_merge', 'Ctrl+3')
5860
self.setKeyBinding('menu', 'new_n_way_file_merge', 'Ctrl+4')
59-
self.setKeyBinding('menu', 'close_tab', 'Ctrl+w')
60-
self.setKeyBinding('menu', 'undo_close_tab', 'Shift+Ctrl+W')
61-
self.setKeyBinding('menu', 'quit', 'Ctrl+q')
62-
self.setKeyBinding('menu', 'undo', 'Ctrl+z')
63-
self.setKeyBinding('menu', 'redo', 'Shift+Ctrl+Z')
64-
self.setKeyBinding('menu', 'cut', 'Ctrl+x')
65-
self.setKeyBinding('menu', 'copy', 'Ctrl+c')
66-
self.setKeyBinding('menu', 'paste', 'Ctrl+v')
67-
self.setKeyBinding('menu', 'select_all', 'Ctrl+a')
68-
self.setKeyBinding('menu', 'clear_edits', 'Ctrl+r')
69-
self.setKeyBinding('menu', 'dismiss_all_edits', 'Ctrl+d')
70-
self.setKeyBinding('menu', 'find', 'Ctrl+f')
71-
self.setKeyBinding('menu', 'find_next', 'Ctrl+g')
72-
self.setKeyBinding('menu', 'find_previous', 'Shift+Ctrl+G')
73-
self.setKeyBinding('menu', 'go_to_line', 'Shift+Ctrl+L')
74-
self.setKeyBinding('menu', 'realign_all', 'Ctrl+l')
75-
self.setKeyBinding('menu', 'isolate', 'Ctrl+i')
61+
self.setKeyBinding('menu', 'close_tab', defaultModKey + 'w')
62+
self.setKeyBinding('menu', 'undo_close_tab', defaultModKey + 'Shift+W')
63+
self.setKeyBinding('menu', 'quit', defaultModKey + 'q')
64+
self.setKeyBinding('menu', 'undo', defaultModKey + 'z')
65+
self.setKeyBinding('menu', 'redo', defaultModKey + 'Shift+Z')
66+
self.setKeyBinding('menu', 'cut', defaultModKey + 'x')
67+
self.setKeyBinding('menu', 'copy', defaultModKey + 'c')
68+
self.setKeyBinding('menu', 'paste', defaultModKey + 'v')
69+
self.setKeyBinding('menu', 'select_all', defaultModKey + 'a')
70+
self.setKeyBinding('menu', 'clear_edits', defaultModKey + 'r')
71+
self.setKeyBinding('menu', 'dismiss_all_edits', defaultModKey + 'd')
72+
self.setKeyBinding('menu', 'find', defaultModKey + 'f')
73+
self.setKeyBinding('menu', 'find_next', defaultModKey + 'g')
74+
self.setKeyBinding('menu', 'find_previous', defaultModKey + 'Shift+G')
75+
self.setKeyBinding('menu', 'go_to_line', defaultModKey + 'Shift+l')
76+
self.setKeyBinding('menu', 'realign_all', defaultModKey + 'l')
77+
self.setKeyBinding('menu', 'isolate', defaultModKey + 'i')
7678
self.setKeyBinding('menu', 'first_difference', 'Shift+Ctrl+Up')
7779
self.setKeyBinding('menu', 'previous_difference', 'Ctrl+Up')
7880
self.setKeyBinding('menu', 'next_difference', 'Ctrl+Down')
@@ -83,24 +85,24 @@ def __init__(self):
8385
self.setKeyBinding('menu', 'last_tab', 'Shift+Ctrl+Page_Down')
8486
self.setKeyBinding('menu', 'shift_pane_right', 'Shift+Ctrl+parenright')
8587
self.setKeyBinding('menu', 'shift_pane_left', 'Shift+Ctrl+parenleft')
86-
self.setKeyBinding('menu', 'convert_to_upper_case', 'Ctrl+u')
87-
self.setKeyBinding('menu', 'convert_to_lower_case', 'Shift+Ctrl+U')
88-
self.setKeyBinding('menu', 'sort_lines_in_ascending_order', 'Ctrl+y')
89-
self.setKeyBinding('menu', 'sort_lines_in_descending_order', 'Shift+Ctrl+Y')
90-
self.setKeyBinding('menu', 'remove_trailing_white_space', 'Ctrl+k')
91-
self.setKeyBinding('menu', 'convert_tabs_to_spaces', 'Ctrl+b')
88+
self.setKeyBinding('menu', 'convert_to_upper_case', defaultModKey + 'u')
89+
self.setKeyBinding('menu', 'convert_to_lower_case', defaultModKey + 'Shift+U')
90+
self.setKeyBinding('menu', 'sort_lines_in_ascending_order', defaultModKey + 'y')
91+
self.setKeyBinding('menu', 'sort_lines_in_descending_order', defaultModKey + 'Shift+Y')
92+
self.setKeyBinding('menu', 'remove_trailing_white_space', defaultModKey + 'k')
93+
self.setKeyBinding('menu', 'convert_tabs_to_spaces', defaultModKey + 'b')
9294
self.setKeyBinding('menu', 'convert_leading_spaces_to_tabs', 'Shift+Ctrl+B')
93-
self.setKeyBinding('menu', 'increase_indenting', 'Shift+Ctrl+greater')
94-
self.setKeyBinding('menu', 'decrease_indenting', 'Shift+Ctrl+less')
95-
self.setKeyBinding('menu', 'convert_to_dos', 'Shift+Ctrl+E')
96-
self.setKeyBinding('menu', 'convert_to_mac', 'Shift+Ctrl+C')
97-
self.setKeyBinding('menu', 'convert_to_unix', 'Ctrl+e')
98-
self.setKeyBinding('menu', 'copy_selection_right', 'Shift+Ctrl+Right')
99-
self.setKeyBinding('menu', 'copy_selection_left', 'Shift+Ctrl+Left')
100-
self.setKeyBinding('menu', 'copy_left_into_selection', 'Ctrl+Right')
101-
self.setKeyBinding('menu', 'copy_right_into_selection', 'Ctrl+Left')
102-
self.setKeyBinding('menu', 'merge_from_left_then_right', 'Ctrl+m')
103-
self.setKeyBinding('menu', 'merge_from_right_then_left', 'Shift+Ctrl+M')
95+
self.setKeyBinding('menu', 'increase_indenting', defaultModKey + 'Shift+greater')
96+
self.setKeyBinding('menu', 'decrease_indenting', defaultModKey + 'Shift+less')
97+
self.setKeyBinding('menu', 'convert_to_dos', defaultModKey + 'Shift+E')
98+
self.setKeyBinding('menu', 'convert_to_mac', defaultModKey + 'Shift+C')
99+
self.setKeyBinding('menu', 'convert_to_unix', defaultModKey + 'e')
100+
self.setKeyBinding('menu', 'copy_selection_right', defaultModKey + 'Shift+Right')
101+
self.setKeyBinding('menu', 'copy_selection_left', defaultModKey + 'Shift+Left')
102+
self.setKeyBinding('menu', 'copy_left_into_selection', defaultModKey + 'Right')
103+
self.setKeyBinding('menu', 'copy_right_into_selection', defaultModKey + 'Left')
104+
self.setKeyBinding('menu', 'merge_from_left_then_right', defaultModKey + 'm')
105+
self.setKeyBinding('menu', 'merge_from_right_then_left', defaultModKey + 'Shift+M')
104106
self.setKeyBinding('menu', 'help_contents', 'F1')
105107
self.setKeyBinding('line_mode', 'enter_align_mode', 'space')
106108
self.setKeyBinding('line_mode', 'enter_character_mode', 'Return')
@@ -126,13 +128,13 @@ def __init__(self):
126128
self.setKeyBinding('line_mode', 'right', 'l')
127129
self.setKeyBinding('line_mode', 'extend_right', 'Shift+Right')
128130
self.setKeyBinding('line_mode', 'page_up', 'Page_Up')
129-
self.setKeyBinding('line_mode', 'page_up', 'Ctrl+u')
131+
self.setKeyBinding('line_mode', 'page_up', defaultModKey + 'u')
130132
self.setKeyBinding('line_mode', 'extend_page_up', 'Shift+Page_Up')
131-
self.setKeyBinding('line_mode', 'extend_page_up', 'Shift+Ctrl+U')
133+
self.setKeyBinding('line_mode', 'extend_page_up', defaultModKey + 'Shift+U')
132134
self.setKeyBinding('line_mode', 'page_down', 'Page_Down')
133-
self.setKeyBinding('line_mode', 'page_down', 'Ctrl+d')
135+
self.setKeyBinding('line_mode', 'page_down', defaultModKey + 'd')
134136
self.setKeyBinding('line_mode', 'extend_page_down', 'Shift+Page_Down')
135-
self.setKeyBinding('line_mode', 'extend_page_down', 'Shift+Ctrl+D')
137+
self.setKeyBinding('line_mode', 'extend_page_down', defaultModKey + 'Shift+D')
136138
self.setKeyBinding('line_mode', 'delete_text', 'BackSpace')
137139
self.setKeyBinding('line_mode', 'delete_text', 'Delete')
138140
self.setKeyBinding('line_mode', 'delete_text', 'x')
@@ -165,9 +167,9 @@ def __init__(self):
165167
self.setKeyBinding('align_mode', 'right', 'Right')
166168
self.setKeyBinding('align_mode', 'right', 'l')
167169
self.setKeyBinding('align_mode', 'page_up', 'Page_Up')
168-
self.setKeyBinding('align_mode', 'page_up', 'Ctrl+u')
170+
self.setKeyBinding('align_mode', 'page_up', defaultModKey + 'u')
169171
self.setKeyBinding('align_mode', 'page_down', 'Page_Down')
170-
self.setKeyBinding('align_mode', 'page_down', 'Ctrl+d')
172+
self.setKeyBinding('align_mode', 'page_down', defaultModKey + 'd')
171173
self.setKeyBinding('character_mode', 'enter_line_mode', 'Escape')
172174

173175
# default colours
@@ -232,6 +234,8 @@ def setKeyBinding(self, ctx: str, s: str, v: str) -> None:
232234
modifiers |= Gdk.ModifierType.SHIFT_MASK
233235
elif token == 'Ctrl':
234236
modifiers |= Gdk.ModifierType.CONTROL_MASK
237+
elif token == 'Cmd':
238+
modifiers |= Gdk.ModifierType.META_MASK
235239
elif token == 'Alt':
236240
modifiers |= Gdk.ModifierType.MOD1_MASK
237241
elif len(token) == 0 or token[0] == '_':

0 commit comments

Comments
 (0)