annotate src/testdir/keycode_check.vim @ 31105:46d1a434784b v9.0.0887

patch 9.0.0887: cannot easily try out what codes various keys produce Commit: https://github.com/vim/vim/commit/a44c7811ff1c5519ac9acd6a34c58c98366f5c5f Author: Bram Moolenaar <Bram@vim.org> Date: Tue Nov 15 22:59:07 2022 +0000 patch 9.0.0887: cannot easily try out what codes various keys produce Problem: Cannot easily try out what codes various keys produce. Solution: Add a script to gather key code information, with an initial list of codes to compare with.
author Bram Moolenaar <Bram@vim.org>
date Wed, 16 Nov 2022 00:00:04 +0100
parents
children 17e171cf2cca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 vim9script
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3 # Script to get various codes that keys send, depending on the protocol used.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
4 #
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
5 # Usage: vim -u keycode_check.vim
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 #
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7 # Author: Bram Moolenaar
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 # Last Update: 2022 Nov 15
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
9 #
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 # The codes are stored in the file "keycode_check.json", so that you can
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 # compare the results of various terminals.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 #
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 # You can select what protocol to enable:
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14 # - None
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 # - modifyOtherKeys level 2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 # - kitty keyboard protocol
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18 # Change directory to where this script is, so that the json file is found
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 # there.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 exe 'cd ' .. expand('<sfile>:h')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21 echo 'working in directory: ' .. getcwd()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 const filename = 'keycode_check.json'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 # Dictionary of dictionaries with the results in the form:
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 # {'xterm': {protocol: 'none', 'Tab': '09', 'S-Tab': '09'},
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27 # 'xterm2': {protocol: 'mok2', 'Tab': '09', 'S-Tab': '09'},
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 # 'kitty': {protocol: 'kitty', 'Tab': '09', 'S-Tab': '09'},
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 # }
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 # The values are in hex form.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 var keycodes = {}
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 if filereadable(filename)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 keycodes = readfile(filename)->join()->json_decode()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 else
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 # Use some dummy entries to try out with
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 keycodes = {
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 'xterm': {protocol: 'none', 'Tab': '09', 'S-Tab': '09'},
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 'kitty': {protocol: 'kitty', 'Tab': '09', 'S-Tab': '1b5b393b3275'},
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40 }
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 var orig_keycodes = deepcopy(keycodes) # used to detect something changed
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 # Write the "keycodes" variable in JSON form to "filename".
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 def WriteKeycodes()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46 # If the file already exists move it to become the backup file.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47 if filereadable(filename)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 if rename(filename, filename .. '~')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 echoerr $'Renaming {filename} to {filename}~ failed!'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 if writefile([json_encode(keycodes)], filename) != 0
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
55 echoerr $'Writing {filename} failed!'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 # The key entries that we want to list, in this order.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 # The first item is displayed in the prompt, the second is the key in
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61 # the keycodes dictionary.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62 var key_entries = [
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
63 ['Tab', 'Tab'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
64 ['Shift-Tab', 'S-Tab'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
65 ['Ctrl-Tab', 'C-Tab'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
66 ['Alt-Tab', 'A-Tab'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
67 ['Ctrl-I', 'C-I'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
68 ['Shift-Ctrl-I', 'S-C-I'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
69 ['Esc', 'Esc'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
70 ['Shift-Esc', 'S-Esc'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
71 ['Ctrl-Esc', 'C-Esc'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
72 ['Alt-Esc', 'A-Esc'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
73 ['Space', 'Space'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
74 ['Shift-Space', 'S-Space'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
75 ['Ctrl-Space', 'C-Space'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
76 ['Alt-Space', 'A-Space'],
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
77 ]
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
78
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
79
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
80 # Action: list the information in "keycodes" in a more or less nice way.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
81 def ActionList()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
82 var terms = keys(keycodes)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
83 if len(terms) == 0
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
84 echo 'No terminal results yet'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
85 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
86 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
87
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
88 # Use one column of width 10 for the item name, then columns of 20
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
89 # characters to fit most codes. You will need to increase the terminal
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
90 # width to avoid wrapping.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
91 echon printf(' ')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
92 for term in terms
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
93 echon printf('%-20s', term)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
94 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
95 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
96
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
97 var items = ['protocol'] + key_entries->copy()->map((_, v) => v[1])
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
98
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
99 for item in items
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
100 echon printf('%8s ', item)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
101 for term in terms
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
102 var val = get(keycodes[term], item, '')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
103
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
104 # see if we can pretty-print this one
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
105 var pretty = val
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
106 if val[0 : 1] == '1b'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
107 pretty = 'ESC'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
108 var idx = 2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
109
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
110 if val[0 : 3] == '1b5b'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
111 pretty = 'CSI'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
112 idx = 4
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
113 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
114
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
115 var digits = false
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
116 while idx < len(val)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
117 var cc = val[idx : idx + 1]
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
118 var nr = str2nr('0x' .. cc, 16)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
119 idx += 2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
120 if nr >= char2nr('0') && nr <= char2nr('9')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
121 if !digits
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
122 pretty ..= ' '
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
123 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
124 digits = true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
125 pretty ..= cc[1]
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
126 else
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
127 digits = false
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
128 if nr >= char2nr(' ') && nr <= char2nr('~')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
129 # printable character
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
130 pretty ..= ' ' .. printf('%c', nr)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
131 else
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
132 # non-printable, use hex code
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
133 pretty = val
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
134 break
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
135 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
136 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
137 endwhile
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
138 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
139
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
140 echon printf('%-20s', pretty)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
141 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
142 echo ''
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
143 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
144 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
145 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
146
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
147 def GetTermName(): string
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
148 var name = input('Enter the name of the terminal: ')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
149 return name
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
150 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
151
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
152 # Gather key codes for terminal "name".
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
153 def DoTerm(name: string)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
154 var proto = inputlist([$'What protocol to enable for {name}:',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
155 '1. None',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
156 '2. modifyOtherKeys level 2',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
157 '3. kitty',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
158 ])
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
159 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
160 &t_TE = "\<Esc>[>4;m"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
161 var proto_name = 'none'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
162 if proto == 1
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
163 &t_TI = ""
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
164 elseif proto == 2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
165 &t_TI = "\<Esc>[>4;2m"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
166 proto_name = 'mok2'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
167 elseif proto == 3
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
168 &t_TI = "\<Esc>[>1u"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
169 proto_name = 'kitty'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
170 else
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
171 echoerr 'invalid protocol choice'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
172 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
173 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
174
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
175 # executing a dummy shell command will output t_TI
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
176 !echo >/dev/null
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
177
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
178 if !has_key(keycodes, name)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
179 keycodes[name] = {}
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
180 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
181 keycodes[name]['protocol'] = proto_name
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
182
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
183 echo "When a key press doesn't get to Vim (e.g. when using Alt) press Space"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
184
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
185 for entry in key_entries
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
186 ch_logfile('keylog', 'w')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
187 echo $'Press the {entry[0]} key (q to quit):'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
188 var r = getcharstr()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
189 ch_logfile('', '')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
190 if r == 'q'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
191 break
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
192 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
193 var log = readfile('keylog')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
194 delete('keylog')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
195 if len(log) < 2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
196 echoerr 'failed to read result'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
197 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
198 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
199 var done = false
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
200 for line in log
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
201 if line =~ 'raw key input'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
202 var code = substitute(line, '.*raw key input: "\([^"]*\).*', '\1', '')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
203
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
204 # convert the literal bytes into hex
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
205 var hex = ''
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
206 for i in range(len(code))
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
207 hex ..= printf('%02x', char2nr(code[i]))
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
208 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
209 keycodes[name][entry[1]] = hex
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
210 done = true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
211 break
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
212 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
213 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
214 if !done
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
215 echo 'Code not found in log'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
216 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
217 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
218 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
219
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
220 # Action: Add key codes for a new terminal.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
221 def ActionAdd()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
222 var name = input('Enter name of the terminal: ')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
223 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
224 if index(keys(keycodes), name) >= 0
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
225 echoerr $'Terminal {name} already exists'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
226 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
227 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
228
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
229 DoTerm(name)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
230 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
231
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
232 # Action: Replace key codes for an already known terminal.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
233 def ActionReplace()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
234 var terms = keys(keycodes)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
235 if len(terms) == 0
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
236 echo 'No terminal results yet'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
237 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
238 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
239
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
240 var choice = inputlist(['Select:'] + terms->copy()->map((idx, arg) => (idx + 1) .. ': ' .. arg))
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
241 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
242 if choice > 0 && choice <= len(terms)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
243 DoTerm(terms[choice - 1])
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
244 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
245 echo 'invalid index'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
246 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
247
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
248 # Action: Quit, possibly after saving the results first.
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
249 def ActionQuit()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
250 # If nothing was changed just quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
251 if keycodes == orig_keycodes
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
252 quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
253 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
254
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
255 while true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
256 var res = input("Save the changed key codes (y/n)? ")
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
257 if res == 'n'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
258 quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
259 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
260 if res == 'y'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
261 WriteKeycodes()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
262 quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
263 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
264 echo 'invalid reply'
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
265 endwhile
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
266 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
267
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
268 # The main loop
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
269 while true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
270 var action = inputlist(['Select operation:',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
271 '1. List results',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
272 '2. Add results for a new terminal',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
273 '3. Replace results',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
274 '4. Quit',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
275 ])
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
276 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
277 if action == 1
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
278 ActionList()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
279 elseif action == 2
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
280 ActionAdd()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
281 elseif action == 3
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
282 ActionReplace()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
283 elseif action == 4
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
284 ActionQuit()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
285 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
286 endwhile