This seems the same as #19560, but that issue was closed by a seemingly irrelevant change. I'm not sure what's going on here; I thought that in #19560 we agreed that we should change the values in the syscall package.
@ianlancetaylor thanks for the reference issue. I didn't find it since I forgot to search on the closed issues.
After reading the discussion, I think I need to raise the issue on github.com/mattn/go-isatty too, since it's using std syscall, regarding the std syscall should be fixed or not.
My understanding is that x/sys should be used wherever possible, but there are still cases where std syscall has to be used because not everything has been migrated over. We opened #19697 for this question. The documentation in the file syscall/syscall.go was updated to indicate what is missing from the migration. I think at the time we had hit this problem, x/sys was undergoing major changes and @bradfitz asked us to wait for that to be finished before making any changes.
I think Signal and Errno could be migrated, but I don't think SysProcAttr could be for compatibility reasons.
@laboger I think the question in this specific issue is: why not just correct the value of TCGETS in the syscall package? As discussed in #19560 correcting the value of syscall.TCGETS would be OK per syscall package rules.