@@ -10,52 +10,64 @@ def self.win?
1010 false
1111 end
1212
13- RAW_KEYSTROKE_CONFIG = {
14- # Console (80x25)
15- [ 27 , 91 , 49 , 126 ] => :ed_move_to_beg , # Home
16- [ 27 , 91 , 52 , 126 ] => :ed_move_to_end , # End
17- [ 27 , 91 , 51 , 126 ] => :key_delete , # Del
18- [ 27 , 91 , 65 ] => :ed_prev_history , # ↑
19- [ 27 , 91 , 66 ] => :ed_next_history , # ↓
20- [ 27 , 91 , 67 ] => :ed_next_char , # →
21- [ 27 , 91 , 68 ] => :ed_prev_char , # ←
13+ def self . set_default_key_bindings ( config )
14+ {
15+ # Console (80x25)
16+ [ 27 , 91 , 49 , 126 ] => :ed_move_to_beg , # Home
17+ [ 27 , 91 , 52 , 126 ] => :ed_move_to_end , # End
18+ [ 27 , 91 , 51 , 126 ] => :key_delete , # Del
19+ [ 27 , 91 , 65 ] => :ed_prev_history , # ↑
20+ [ 27 , 91 , 66 ] => :ed_next_history , # ↓
21+ [ 27 , 91 , 67 ] => :ed_next_char , # →
22+ [ 27 , 91 , 68 ] => :ed_prev_char , # ←
2223
23- # KDE
24- [ 27 , 91 , 72 ] => :ed_move_to_beg , # Home
25- [ 27 , 91 , 70 ] => :ed_move_to_end , # End
26- # Del is 0x08
27- [ 27 , 71 , 65 ] => :ed_prev_history , # ↑
28- [ 27 , 71 , 66 ] => :ed_next_history , # ↓
29- [ 27 , 71 , 67 ] => :ed_next_char , # →
30- [ 27 , 71 , 68 ] => :ed_prev_char , # ←
24+ # KDE
25+ [ 27 , 91 , 72 ] => :ed_move_to_beg , # Home
26+ [ 27 , 91 , 70 ] => :ed_move_to_end , # End
27+ # Del is 0x08
28+ [ 27 , 71 , 65 ] => :ed_prev_history , # ↑
29+ [ 27 , 71 , 66 ] => :ed_next_history , # ↓
30+ [ 27 , 71 , 67 ] => :ed_next_char , # →
31+ [ 27 , 71 , 68 ] => :ed_prev_char , # ←
3132
32- # urxvt / exoterm
33- [ 27 , 91 , 55 , 126 ] => :ed_move_to_beg , # Home
34- [ 27 , 91 , 56 , 126 ] => :ed_move_to_end , # End
33+ # urxvt / exoterm
34+ [ 27 , 91 , 55 , 126 ] => :ed_move_to_beg , # Home
35+ [ 27 , 91 , 56 , 126 ] => :ed_move_to_end , # End
3536
36- # GNOME
37- [ 27 , 79 , 72 ] => :ed_move_to_beg , # Home
38- [ 27 , 79 , 70 ] => :ed_move_to_end , # End
39- # Del is 0x08
40- # Arrow keys are the same of KDE
37+ # GNOME
38+ [ 27 , 79 , 72 ] => :ed_move_to_beg , # Home
39+ [ 27 , 79 , 70 ] => :ed_move_to_end , # End
40+ # Del is 0x08
41+ # Arrow keys are the same of KDE
4142
42- # iTerm2
43- [ 27 , 27 , 91 , 67 ] => :em_next_word , # Option+→
44- [ 27 , 27 , 91 , 68 ] => :ed_prev_word , # Option+←
45- [ 195 , 166 ] => :em_next_word , # Option+f
46- [ 195 , 162 ] => :ed_prev_word , # Option+b
43+ # iTerm2
44+ [ 27 , 27 , 91 , 67 ] => :em_next_word , # Option+→
45+ [ 27 , 27 , 91 , 68 ] => :ed_prev_word , # Option+←
46+ [ 195 , 166 ] => :em_next_word , # Option+f
47+ [ 195 , 162 ] => :ed_prev_word , # Option+b
4748
48- # others
49- [ 27 , 32 ] => :em_set_mark , # M-<space>
50- [ 24 , 24 ] => :em_exchange_mark , # C-x C-x TODO also add Windows
51- [ 27 , 91 , 49 , 59 , 53 , 67 ] => :em_next_word , # Ctrl+→
52- [ 27 , 91 , 49 , 59 , 53 , 68 ] => :ed_prev_word , # Ctrl+←
49+ # others
50+ [ 27 , 91 , 49 , 59 , 53 , 67 ] => :em_next_word , # Ctrl+→
51+ [ 27 , 91 , 49 , 59 , 53 , 68 ] => :ed_prev_word , # Ctrl+←
5352
54- [ 27 , 79 , 65 ] => :ed_prev_history , # ↑
55- [ 27 , 79 , 66 ] => :ed_next_history , # ↓
56- [ 27 , 79 , 67 ] => :ed_next_char , # →
57- [ 27 , 79 , 68 ] => :ed_prev_char , # ←
58- }
53+ [ 27 , 79 , 65 ] => :ed_prev_history , # ↑
54+ [ 27 , 79 , 66 ] => :ed_next_history , # ↓
55+ [ 27 , 79 , 67 ] => :ed_next_char , # →
56+ [ 27 , 79 , 68 ] => :ed_prev_char , # ←
57+ } . each_pair do |key , func |
58+ config . add_default_key_binding_by_keymap ( :emacs , key , func )
59+ config . add_default_key_binding_by_keymap ( :vi_insert , key , func )
60+ config . add_default_key_binding_by_keymap ( :vi_command , key , func )
61+ end
62+
63+ {
64+ # others
65+ [ 27 , 32 ] => :em_set_mark , # M-<space>
66+ [ 24 , 24 ] => :em_exchange_mark , # C-x C-x TODO also add Windows
67+ } . each_pair do |key , func |
68+ config . add_default_key_binding_by_keymap ( :emacs , key , func )
69+ end
70+ end
5971
6072 @@input = STDIN
6173 def self . input = ( val )
0 commit comments