annotate src/testdir/keycode_check.vim @ 34982:3d41e3760130

Added tag v9.1.0346 for changeset 76e3b9d514a85ed213394827e35a623c9929bfef
author Christian Brabandt <cb@256bit.org>
date Wed, 17 Apr 2024 22:45:04 +0200
parents dbec60b8c253
children
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 #
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
5 # Usage: vim -u NONE -S keycode_check.vim
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6 #
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31243
diff changeset
7 # Author: Bram Moolenaar
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31243
diff changeset
8 # Last Update: 2022 Nov 15
31105
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
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
79 # Given a terminal name and a item name, return the text to display.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
80 def GetItemDisplay(term: string, item: string): string
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
81 var val = get(keycodes[term], item, '')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
82
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
83 # see if we can pretty-print this one
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
84 var pretty = val
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
85 if val[0 : 1] == '1b'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
86 pretty = 'ESC'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
87 var idx = 2
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
88
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
89 if val[0 : 3] == '1b5b'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
90 pretty = 'CSI'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
91 idx = 4
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
92 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
93
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
94 var digits = false
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
95 while idx < len(val)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
96 var cc = val[idx : idx + 1]
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
97 var nr = str2nr('0x' .. cc, 16)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
98 idx += 2
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
99 if nr >= char2nr('0') && nr <= char2nr('9')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
100 if !digits
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
101 pretty ..= ' '
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
102 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
103 digits = true
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
104 pretty ..= cc[1]
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
105 else
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
106 if nr == char2nr(';') && digits
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
107 # don't use space between semicolon and digits to keep it short
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
108 pretty ..= ';'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
109 else
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
110 digits = false
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
111 if nr >= char2nr(' ') && nr <= char2nr('~')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
112 # printable character
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
113 pretty ..= ' ' .. printf('%c', nr)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
114 else
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
115 # non-printable, use hex code
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
116 pretty = val
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
117 break
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
118 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
119 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
120 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
121 endwhile
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
122 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
123
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
124 return pretty
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
125 enddef
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
126
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
127
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
128 # 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
129 def ActionList()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
130 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
131 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
132 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
133 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
134 endif
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
135 sort(terms)
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
136
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
137 var items = ['protocol', 'version', 'kitty', 'modkeys']
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
138 + key_entries->copy()->map((_, v) => v[1])
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
139
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
140 # For each terminal compute the needed width, add two.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
141 # You may need to increase the terminal width to avoid wrapping.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
142 var widths = []
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
143 for [idx, term] in items(terms)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
144 widths[idx] = len(term) + 2
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
145 endfor
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
146
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
147 for item in items
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
148 for [idx, term] in items(terms)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
149 var l = len(GetItemDisplay(term, item))
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
150 if widths[idx] < l + 2
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
151 widths[idx] = l + 2
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
152 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
153 endfor
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
154 endfor
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
155
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
156 # Use one column of width 10 for the item name.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
157 echo "\n"
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
158 echon ' '
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
159 for [idx, term] in items(terms)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
160 echon printf('%-' .. widths[idx] .. 's', term)
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
161 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
162 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
163
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
164 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
165 echon printf('%8s ', item)
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
166 for [idx, term] in items(terms)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
167 echon printf('%-' .. widths[idx] .. 's', GetItemDisplay(term, item))
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
168 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
169 echo ''
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
170 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
171 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
172 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
173
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
174 # Convert the literal string after "raw key input" into hex form.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
175 def Literal2hex(code: string): string
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
176 var hex = ''
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
177 for i in range(len(code))
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
178 hex ..= printf('%02x', char2nr(code[i]))
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
179 endfor
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
180 return hex
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
181 enddef
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
182
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
183 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
184 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
185 return name
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
186 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
187
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
188 # 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
189 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
190 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
191 '1. None',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
192 '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
193 '3. kitty',
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
194 ])
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
195 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
196 &t_TE = "\<Esc>[>4;m"
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
197 var proto_name = 'unknown'
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
198 if proto == 1
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
199 # Request the XTQMODKEYS value and request the kitty keyboard protocol status.
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
200 &t_TI = "\<Esc>[?4m" .. "\<Esc>[?u"
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
201 proto_name = 'none'
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
202 elseif proto == 2
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
203 # Enable modifyOtherKeys level 2 and request the XTQMODKEYS value.
31241
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
204 &t_TI = "\<Esc>[>4;2m" .. "\<Esc>[?4m"
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
205 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
206 elseif proto == 3
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
207 # Enable Kitty keyboard protocol and request the status.
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
208 &t_TI = "\<Esc>[>1u" .. "\<Esc>[?u"
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
209 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
210 else
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
211 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
212 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
213 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
214
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
215 # Append the request for the version response, this is used to check we have
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
216 # the results.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
217 &t_TI ..= "\<Esc>[>c"
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
218
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
219 # Pattern that matches the line with the version response.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
220 const version_pattern = "\<Esc>\\[>\\d\\+;\\d\\+;\\d*c"
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
221
31241
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
222 # Pattern that matches the XTQMODKEYS response:
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
223 # CSI > 4;Pv m
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
224 # where Pv indicates the modifyOtherKeys level
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
225 const modkeys_pattern = "\<Esc>\\[>4;\\dm"
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
226
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
227 # Pattern that matches the line with the status. Currently what terminals
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
228 # return for the Kitty keyboard protocol.
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
229 const kitty_status_pattern = "\<Esc>\\[?\\d\\+u"
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
230
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
231 ch_logfile('keylog', 'w')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
232
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
233 # 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
234 !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
235
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
236 # Wait until the log file has the version response.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
237 var startTime = reltime()
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
238 var seenVersion = false
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
239 while !seenVersion
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
240 var log = readfile('keylog')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
241 if len(log) > 2
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
242 for line in log
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
243 if line =~ 'raw key input'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
244 var code = substitute(line, '.*raw key input: "\([^"]*\).*', '\1', '')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
245 if code =~ version_pattern
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
246 seenVersion = true
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
247 echo 'Found the version response'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
248 break
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
249 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
250 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
251 endfor
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
252 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
253 if reltime(startTime)->reltimefloat() > 3
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
254 # break out after three seconds
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
255 break
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
256 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
257 endwhile
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
258
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
259 echo 'seenVersion: ' seenVersion
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
260
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
261 # Prepare the terminal entry, set protocol and clear status and version.
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
262 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
263 keycodes[name] = {}
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
264 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
265 keycodes[name]['protocol'] = proto_name
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
266 keycodes[name]['version'] = ''
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
267 keycodes[name]['kitty'] = ''
31241
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
268 keycodes[name]['modkeys'] = ''
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
269
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
270 # Check the log file for a status and the version response
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
271 ch_logfile('', '')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
272 var log = readfile('keylog')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
273 delete('keylog')
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
274
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
275 for line in log
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
276 if line =~ 'raw key input'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
277 var code = substitute(line, '.*raw key input: "\([^"]*\).*', '\1', '')
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
278
31241
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
279 # Check for the XTQMODKEYS response.
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
280 if code =~ modkeys_pattern
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
281 var modkeys = substitute(code, '.*\(' .. modkeys_pattern .. '\).*', '\1', '')
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
282 # We could get the level out of the response, but showing the response
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
283 # itself provides more information.
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
284 # modkeys = substitute(modkeys, '.*4;\(\d\)m', '\1', '')
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
285
31241
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
286 if keycodes[name]['modkeys'] != ''
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
287 echomsg 'Another modkeys found after ' .. keycodes[name]['modkeys']
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
288 endif
31241
ee50174810ac patch 9.0.0954: cannot detect whether modifyOtherKeys is enabled
Bram Moolenaar <Bram@vim.org>
parents: 31156
diff changeset
289 keycodes[name]['modkeys'] = modkeys
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
290 endif
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
291
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
292 # Check for kitty keyboard protocol status
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
293 if code =~ kitty_status_pattern
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
294 var status = substitute(code, '.*\(' .. kitty_status_pattern .. '\).*', '\1', '')
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
295 # use the response itself as the status
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
296 status = Literal2hex(status)
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
297
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
298 if keycodes[name]['kitty'] != ''
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
299 echomsg 'Another status found after ' .. keycodes[name]['kitty']
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
300 endif
31243
984ebd1f6605 patch 9.0.0955: libvterm does not support the XTQMODKEYS request
Bram Moolenaar <Bram@vim.org>
parents: 31241
diff changeset
301 keycodes[name]['kitty'] = status
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
302 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
303
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
304 if code =~ version_pattern
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
305 var version = substitute(code, '.*\(' .. version_pattern .. '\).*', '\1', '')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
306 keycodes[name]['version'] = Literal2hex(version)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
307 break
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
308 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
309 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
310 endfor
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
311
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
312 echo "For Alt to work you may need to press the Windows/Super key as well"
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
313 echo "When a key press doesn't get to Vim (e.g. when using Alt) press x"
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
314
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
315 # The log of ignored typeahead is left around for debugging, start with an
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
316 # empty file here.
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
317 delete('keylog-ignore')
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
318
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
319 for entry in key_entries
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
320 # Consume any typeahead. Wait a bit for any responses to arrive.
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
321 ch_logfile('keylog-ignore', 'a')
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
322 while 1
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
323 sleep 100m
31156
0ecb16d5f86f patch 9.0.0912: libvterm with modifyOtherKeys level 2 does not match xterm
Bram Moolenaar <Bram@vim.org>
parents: 31137
diff changeset
324 if getchar(1) == 0
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
325 break
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
326 endif
31156
0ecb16d5f86f patch 9.0.0912: libvterm with modifyOtherKeys level 2 does not match xterm
Bram Moolenaar <Bram@vim.org>
parents: 31137
diff changeset
327 while getchar(1) != 0
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
328 getchar()
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
329 endwhile
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
330 endwhile
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
331 ch_logfile('', '')
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
332
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
333 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
334 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
335 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
336 ch_logfile('', '')
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
337 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
338 break
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
339 endif
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
340
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
341 log = readfile('keylog')
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
342 delete('keylog')
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
343 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
344 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
345 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
346 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
347 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
348 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
349 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
350 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
351
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
352 # Remove any version termresponse
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
353 code = substitute(code, version_pattern, '', 'g')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
354
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
355 # Remove any XTGETTCAP replies.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
356 const cappat = "\<Esc>P[01]+\\k\\+=\\x*\<Esc>\\\\"
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
357 code = substitute(code, cappat, '', 'g')
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
358
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
359 # Remove any kitty status reply
31137
548241980a27 patch 9.0.0903: key code checker doesn't check modifyOtherKeys resource
Bram Moolenaar <Bram@vim.org>
parents: 31109
diff changeset
360 code = substitute(code, kitty_status_pattern, '', 'g')
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
361 if code == ''
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
362 continue
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
363 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
364
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
365 # Convert the literal bytes into hex. If 'x' was pressed then clear
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
366 # the entry.
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
367 var hex = ''
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
368 if code != 'x'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
369 hex = Literal2hex(code)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
370 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
371
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
372 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
373 done = true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
374 break
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
375 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
376 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
377 if !done
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
378 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
379 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
380 endfor
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
381 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
382
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
383 # 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
384 def ActionAdd()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
385 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
386 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
387 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
388 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
389 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
390 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
391
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
392 DoTerm(name)
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
393 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
394
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
395 # 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
396 def ActionReplace()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
397 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
398 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
399 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
400 return
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
401 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
402
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
403 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
404 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
405 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
406 DoTerm(terms[choice - 1])
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
407 else
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
408 echo 'invalid index'
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
409 endif
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
410 enddef
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
411
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
412 # Action: Clear key codes for an already known terminal.
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
413 def ActionClear()
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
414 var terms = keys(keycodes)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
415 if len(terms) == 0
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
416 echo 'No terminal results yet'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
417 return
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
418 endif
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
419
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
420 var choice = inputlist(['Select:'] + terms->copy()->map((idx, arg) => (idx + 1) .. ': ' .. arg))
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
421 echo "\n"
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
422 if choice > 0 && choice <= len(terms)
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
423 remove(keycodes, terms[choice - 1])
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
424 else
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
425 echo 'invalid index'
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
426 endif
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
427 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
428
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
429 # 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
430 def ActionQuit()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
431 # 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
432 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
433 quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
434 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
435
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
436 while true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
437 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
438 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
439 quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
440 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
441 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
442 WriteKeycodes()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
443 quit
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
444 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
445 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
446 endwhile
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
447 enddef
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
448
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
449 # 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
450 while true
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
451 var action = inputlist(['Select operation:',
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31243
diff changeset
452 '1. List results',
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
453 '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
454 '3. Replace results',
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
455 '4. Clear results',
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
456 '5. Quit',
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
457 ])
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
458 echo "\n"
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
459 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
460 ActionList()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
461 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
462 ActionAdd()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
463 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
464 ActionReplace()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
465 elseif action == 4
31109
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
466 ActionClear()
17e171cf2cca patch 9.0.0889: keycode check script has a few flaws
Bram Moolenaar <Bram@vim.org>
parents: 31105
diff changeset
467 elseif action == 5
31105
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
468 ActionQuit()
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
469 endif
46d1a434784b patch 9.0.0887: cannot easily try out what codes various keys produce
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
470 endwhile