Sublime Forum

Ctrl+Shift+L stopped working for me?

#1

Hi,

For some reason Ctrl+Shift+L has stopped working for me (to select them as lines). I can see it in the config:

{ "keys": ["ctrl+shift+l"], "command": "split_selection_into_lines" },

Other stuff like Ctrl+X , Ctrl+A, Ctrl+Tab, etc all seem fine. It just seems to be this one. Any ideas what could cause it? The only thing I’ve done recently, is add this into the local config:

“hot_exit”: false

But after reverting that, it still doesn’t work. Hmmm

TIA

Andy

0 Likes

#2

No one seen this before? Its driving me nuts (its amazing how many times a day I need to use this :confused: )

Interestingly, I also have Sublime 2 installed, and it has the exact same problem

I know Ctrl is OK as I can do Ctrl+X for cut, etc. Shift is fine, as if I press shift + a letter, it comes up as uppercase. L is OK (as you can see, as I just typed it). I’m really at a loss here :confused:

Cheers

Andy

0 Likes

#3

if you open the ST console (View menu -> Show Console) and type sublime.log_input(True) Enter and sublime.log_commands(True) Enter and then press Ctrl+Shift+L, what does ST show in the console? if it shows a different command, then likely a different package has taken over that keybinding, maybe use https://packagecontrol.io/packages/FindKeyConflicts to find it. If nothing shows, then some other application is consuming that keyboard event before ST can receive it.

1 Like

#4

Hi,

Thanks for the reply. Funnily enough, I actually tried that (found it on a blog). When I press Ctrl+Shift+L, I don’t get anything. Out of interest, I tried Ctrl+Shift+ left/right/up/down, and get:

key evt: down
command: move {“by”: “lines”, “forward”: true}
key evt: end
command: move_to {“extend”: false, “to”: “eol”}
key evt: shift+up
command: move {“by”: “lines”, “extend”: true, “forward”: false}
key evt: shift+up
command: move {“by”: “lines”, “extend”: true, “forward”: false}
key evt: shift+home
command: move_to {“extend”: true, “to”: “bol”}
key evt: shift+home
command: move_to {“extend”: true, “to”: “bol”}
command: drag_select {“event”: {“button”: 1, “x”: 813.5, “y”: 600.5}}
command: drag_select {“event”: {“button”: 1, “x”: 913.5, “y”: 619.5}}
key evt: shift+up
command: move {“by”: “lines”, “extend”: true, “forward”: false}
key evt: shift+home
command: move_to {“extend”: true, “to”: “bol”}
key evt: shift+home
command: move_to {“extend”: true, “to”: “bol”}
key evt: shift+control+left
command: move {“by”: “words”, “extend”: true, “forward”: false}
key evt: shift+control+right
command: move {“by”: “word_ends”, “extend”: true, “forward”: true}
key evt: shift+control+up
command: swap_line_up
key evt: shift+control+down
command: swap_line_down
key evt: shift+control+k
command: run_macro_file {“file”: “res://Packages/Default/Delete Line.sublime-macro”}

So it seems to work ok for those, but just not the L one for some reason :confused:

0 Likes

#5

BTW, this is what I get when I use that conflicts plugin:

------------------------
Multi Part Key Conflicts
------------------------
-------------------------------------
Key Conflicts (Only direct conflicts)
-------------------------------------
 ["]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true}, {"key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true}, {"key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true}]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": true}]
   move                                     Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true}, {"key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true}, {"key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true}]
 [']
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true}, {"key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true}, {"key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true}]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": true}]
   move                                     Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true}, {"key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true}, {"key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true}]
   insert_snippet                           Rust                  [{"key": "selector", "operator": "equal", "operand": "source.rust"}]
 [(]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true}]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": true}]
 [[]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true}]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": true}]
 [alt+ctrl+enter]
   replace_all                              Default               [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
   replace_all                              Default               [{"key": "panel", "operand": "find_in_files"}, {"key": "panel_has_focus"}]
 [alt+enter]
   find_all                                 Default               [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
   find_all                                 Default               [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
   find_all                                 Default               [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
   find_all                                 Default               [{"key": "panel", "operand": "find_in_files"}, {"key": "panel_has_focus"}]
 [backspace]
   left_delete                              Default               
   run_macro_file                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true}, {"key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true}, {"key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true}]
   run_macro_file                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true}, {"key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true}, {"key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true}]
   run_macro_file                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true}]
   run_macro_file                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true}]
   run_macro_file                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true}]
   run_macro_file                           CSS                   [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": ":$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^;", "match_all": true}]
   run_macro_file                           CSS                   [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\\{ $", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^ \\}", "match_all": true}]
 [ctrl+1]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+2]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+3]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+4]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+5]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+6]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+7]
   focus_group                              Default               
   insert_snippet                           User                  
 [ctrl+shift+backspace]
   left_delete                              Default               
   run_macro_file                           Default               
 [ctrl+space]
   auto_complete                            Default               
   replace_completion_with_auto_complete    Default               [{"key": "last_command", "operator": "equal", "operand": "insert_best_completion"}, {"key": "auto_complete_visible", "operator": "equal", "operand": false}, {"key": "setting.tab_completion", "operator": "equal", "operand": true}]
 [enter]
   insert                                   Default               
   commit_completion                        Default               [{"key": "auto_complete_visible"}, {"key": "setting.auto_complete_commit_on_tab", "operand": false}]
   run_macro_file                           Default               [{"key": "setting.auto_indent", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true}]
   auto_indent_tag                          Default               [{"key": "setting.auto_indent", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^</", "match_all": true}]
   find_next                                Default               [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
   find_next                                Default               [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
   hide_panel                               Default               [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
 [escape]
   single_selection                         Default               [{"key": "num_selections", "operator": "not_equal", "operand": 1}]
   clear_fields                             Default               [{"key": "has_next_field", "operator": "equal", "operand": true}]
   clear_fields                             Default               [{"key": "has_prev_field", "operator": "equal", "operand": true}]
   hide_panel                               Default               [{"key": "panel_visible", "operator": "equal", "operand": true}]
   hide_overlay                             Default               [{"key": "overlay_visible", "operator": "equal", "operand": true}]
   hide_popup                               Default               [{"key": "popup_visible", "operator": "equal", "operand": true}]
   hide_auto_complete                       Default               [{"key": "auto_complete_visible", "operator": "equal", "operand": true}]
 [shift+enter]
   insert                                   Default               
   run_macro_file                           Default               [{"key": "setting.auto_indent", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true}]
   auto_indent_tag                          Default               [{"key": "setting.auto_indent", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true}, {"key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^</", "match_all": true}]
   find_prev                                Default               [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
   find_prev                                Default               [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
   find_prev                                Default               [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
 [shift+tab]
   insert                                   Default               
   unindent                                 Default               [{"key": "setting.shift_tab_unindent", "operator": "equal", "operand": true}]
   unindent                                 Default               [{"key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*"}]
   unindent                                 Default               [{"key": "text", "operator": "regex_contains", "operand": "\n"}]
   prev_field                               Default               [{"key": "has_prev_field", "operator": "equal", "operand": true}]
 [tab]
   insert_best_completion                   Default               
   insert_best_completion                   Default               [{"key": "setting.tab_completion", "operator": "equal", "operand": true}, {"key": "preceding_text", "operator": "not_regex_match", "operand": ".*\\b[0-9]+$", "match_all": true}]
   replace_completion_with_next_completion  Default               [{"key": "last_command", "operator": "equal", "operand": "insert_best_completion"}, {"key": "setting.tab_completion", "operator": "equal", "operand": true}]
   reindent                                 Default               [{"key": "setting.auto_indent", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true}, {"key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true}]
   indent                                   Default               [{"key": "text", "operator": "regex_contains", "operand": "\n"}]
   next_field                               Default               [{"key": "has_next_field", "operator": "equal", "operand": true}]
   commit_completion                        Default               [{"key": "auto_complete_visible"}, {"key": "setting.auto_complete_commit_on_tab"}]
 [{]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true}]
   wrap_block                               Default               [{"key": "indented_block", "match_all": true}, {"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": true, "match_all": true}, {"key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true}]
   insert_snippet                           Default               [{"key": "setting.auto_match_enabled", "operator": "equal", "operand": true}, {"key": "selection_empty", "operator": "equal", "operand": false, "match_all": true}]
0 Likes

#6

As @kingkeith mentioned, that means that something external to Sublime is eating the key before Sublime gets a chance to see it; if Sublime gets the input it would display it and you would see some command other than the expected one being displayed.

This usually means that your OS is grabbing the key for it’s own use, or if you’re using Linux, your window manager. Other culprits are things like globally assigned hot keys in other running applications or AutoHotKey type scripts that grab the key to do something else.

1 Like

#7

Hi,

Is there a way to find out what it would be? In the mean time, what I’ve done is change it from ctrl+shift+l , to something thats not already assigned:

{“keys”: [“ctrl+shift+\”], “command”: “split_selection_into_lines” },

Not ideal (as I’m used to pressing ctrl+shift+l), but I’m running out of ideas as to what could be causing it. I didn’t install anything new since it stopped working. The only thing I can think of is that a Win10 update has broken it.

Cheers

Andy

0 Likes

#8

I don’t think there’s a way in the general case, no. Presumably if whatever is getting the input was doing something, you’d notice it. Likewise you would likely recall some new program you started using around the time that it stopped working.

I run Sublime on both windows 7 and windows 10 and it works for me on both, for what that’s worth. I did some quick googling but didn’t uncover anything that might be using that key combination.

0 Likes

#9

Hi,

Thanks. I didn’t think there would be, but thought it was worth an ask :slight_smile:

The only thing I can remember doing around the time of it stopping, was:

  1. Some automatic windows 10 updates
  2. Installing a new PCI network card, as the onboard one stopped working

Neither of which I would imagine could break it :confused:

Anyway - Ctrl+Shift+\ is working for me now. I just need to remember it (I still find myself going to press L)

Thanks :slight_smile:

Andy

0 Likes

#10

So random - Ctrl+Shift+L just started working again! (I pressed it by accident, and it worked!)

0 Likes

#11

For me it was the AMD Radeon Settings “Toggle Performance Logging Hotkey”, which by default is mapped to Ctrl+Shift+L. This feature was added in the Radeon Software Adrenalin Edition in December, so it could be the same for you :slight_smile:

I hope this helps someone :kissing_smiling_eyes:

1 Like

#12

@oasi - interesting! I do have that installed. Did you disable it in the Radeon software somehow? I had a quick look, but can’t see anywhere to disable it?

0 Likes

#13

It appears the feature can not be fully disabled (at least not yet) so I just mapped the logging hotkey to something else.

0 Likes

#14

Rubbish :frowning: Oh well, thanks for checking and letting me know. Is there somewhere I can file a complaint/bug report to Radeon, so that they maybe add this as an option for future releases?

0 Likes

#15

I’m at work now so I can not test these but here I found some suggestions. Pressing the Delete key should leave the hotkey unassigned. If that doesn’t work there’s also some lovely registry hacks :slight_smile:

2 Likes

#16

OMG you legend! In the settings, just click on the bit circled in red, press “Esc”, and voila!

Ctrl+Shift+L now works like it used it. YAY! (is it sad that I’m so happy to have that functionality back? ;))

Thanks

Andy

1 Like