mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-28 20:34:07 +08:00
7f2cb47437
This translated ctrl-k to "\v", which is a "vertical tab", and ctrl-l to "\f" and ctrl-g to "\a". There is no "vertical tab" or "alarm" or "\f" *key*, so these shouldn't be translated. Just drop these and call them `\ck` and such. (vertical tab specifically is utterly useless and I would be okay with dropping it entirely, I have never seen it used anywhere)
52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
from pexpect_helper import SpawnedProc
|
|
import subprocess
|
|
import sys
|
|
from time import sleep
|
|
import os
|
|
|
|
os.environ["fish_escape_delay_ms"] = "10"
|
|
SpawnedProc()
|
|
sp = SpawnedProc()
|
|
send, sendline, sleep, expect_prompt, expect_re, expect_str = (
|
|
sp.send,
|
|
sp.sendline,
|
|
sp.sleep,
|
|
sp.expect_prompt,
|
|
sp.expect_re,
|
|
sp.expect_str,
|
|
)
|
|
expect_prompt()
|
|
|
|
sendline("exec $fish_key_reader -c -V")
|
|
|
|
# Do we get the expected startup prompt?
|
|
expect_str("Press a key:")
|
|
|
|
# Is a single control char echoed correctly?
|
|
send("\x07")
|
|
expect_str("char: \\cG\r\nbind \\cG 'do something'\r\n")
|
|
|
|
# Is a non-ASCII UTF-8 sequence prefaced by an escape char handled correctly?
|
|
sleep(0.020)
|
|
# send "\x1B\xE1\x88\xB4"
|
|
send("\x1B\u1234")
|
|
expect_str("char: \\u1234\r\nbind \\e\\u1234 'do something'\r\n")
|
|
|
|
# Is a NULL char echoed correctly?
|
|
sleep(0.020)
|
|
send("\x00")
|
|
expect_str("char: \\c@\r\nbind -k nul 'do something'\r\n")
|
|
|
|
# Does it keep running if handed control sequences in the wrong order?
|
|
send("\x03")
|
|
sleep(0.010)
|
|
send("\x04")
|
|
expect_str("char: \\cD\r\n")
|
|
|
|
# Now send a second [ctrl-D]. Does that terminate the process like it should?
|
|
sleep(0.050)
|
|
send("\x04\x04")
|
|
expect_str("char: \\cD\r\n")
|
|
expect_str("Exiting at your request.\r\n")
|