Once you grasp the pattern, it's quite easy...
To move to the next/last letter - → or ←
To move to the next/last word - Opt ⌥ → or Opt ⌥ ←
To move to the beginning/end of a line - Cmd ⌘ ← or Cmd ⌘ →
Hold Shift ⇧ whilst doing any of these & it will add to your current selection if you are moving away from your original insertion point, otherwise it will remove...
...with the exception of Cmd ⌘ , which will always add.
As you've discovered, all these functions use your original cursor point, not the beginning/end of your current selection. That would perhaps require a little mind-reading, to know which end you wanted to work from ;-)
For your specific situation, if you start with Shift ⇧ held, then Cmd ⌘ → , then just → - 'to end of line plus one character'
Alternatively, holding Shift ⇧ , then ↓ followed by a number of Opt ⌥ ← would be quicker than just ← - 'to middle of line below minus several words, one at a time'
Best Answer
I found another way that seems to work and doesn't require a can of air: Hold the laptop sideways and while holding it like that, pound on the key. Pound as hard as you would if you were typing an angry message. Try to pound on each side of the key. Holding it sideways gives gravity a chance to pull the crumbs out. And if it doesn't work the first time, try holding it a different direction.
I've tried this method on several keys, including the large right SHIFT key. It seems to work pretty good. The SHIFT key still isn't fully back to normal, but is way better than it was.