Sorry, I don't actually know how to do what you're describing, I'm just adding a reprex so we have input and output (makes it easier to see what you're describing):
library(ggplot2)
n = 10
df <- data.frame(x = rep(1:n, 2),
y = c(1:n, n:1),
group = c(rep("a", n),
rep("b", n)))
# Desired legend, incorrect graph
ggplot(df, aes(x, y, linetype = group)) +
geom_smooth(method = "lm", se = F,
size = 1.5, color = "black") +
geom_point(aes(color = group), size = 5) +
guides(linetype = guide_legend(keywidth = 5))

# Desired graph, incorrect legend
ggplot(df, aes(x, y, linetype = group)) +
geom_point(aes(color = group), size = 5) +
geom_smooth(method = "lm", se = F,
size = 1.5, color = "black") +
guides(colour = guide_legend(keywidth = 5))

# Changing guide order doesn't help.
ggplot(df, aes(x, y, linetype = group)) +
geom_point(aes(color = group), size = 5) +
geom_smooth(method = "lm", se = F,
size = 1.5, color = "black") +
guides(colour = guide_legend(keywidth = 5, order = 1),
linetype = guide_legend(keywidth = 5, order = 2))

Created on 2018-06-30 by the reprex package (v0.2.0).