#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <strings.h>
using namespace std;
if((key == KEY_ENTER || key == '\n') && temporary_line >= 0 && temporary_line < nb_lines) {
char *tty = ttyname (STDIN_FILENO);
int fd = open(tty, O_WRONLY);
- write(fd, lines[temporary_line], strlen(lines[temporary_line]));
- close(fd);
+
+ struct termios oldtio, newtio;
+
+ if (fd >= 0) {
+ // Save current port settings
+ tcgetattr(fd,&oldtio);
+ bzero(&newtio, sizeof(newtio));
+ newtio.c_cflag = 0;
+ newtio.c_iflag = 0;
+ newtio.c_oflag = 0;
+ // Set input mode (non-canonical, *no echo*,...)
+ newtio.c_lflag = 0;
+ tcflush(fd, TCIFLUSH);
+ tcsetattr(fd,TCSANOW, &newtio);
+ for(char *k = lines[temporary_line]; *k; k++) {
+ ioctl(fd, TIOCSTI, k);
+ }
+ // Restore the old settings
+ tcsetattr(fd,TCSANOW, &oldtio);
+ close(fd);
+ } else {
+ cerr << "Can not open " << tty << endl;
+ exit(1);
+ }
}
} else {
+++ /dev/null
-#!/bin/bash
-
-#
-# selector is a simple shell command for selection of strings with a
-# dynamic pattern-matching.
-#
-# Copyright (c) 2009 Francois Fleuret
-# Written by Francois Fleuret <francois.fleuret@idiap.ch>
-#
-# This file is part of selector.
-#
-# selector is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 3 as
-# published by the Free Software Foundation.
-#
-# selector is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with selector. If not, see <http://www.gnu.org/licenses/>.
-#
-
-# You can add in your ~/.inputrc something like
-# Control-h: "smarthist.sh\n"
-# so that C-h will invoke this script
-
-EXE=./selector
-
-# We do not want a security breach
-
-OUT=`mktemp /tmp/selector.XXXXXX`
-touch ${OUT}
-chmod go-rwx ${OUT}
-
-${EXE} -o ${OUT} -f ~/.bash_history
-# ${EXE} -b -o ${OUT} -f ~/.bash_history
-
-# We set the echo off
-
-OLD_SETTINGS=`stty -g`
-stty -echo raw
-
-# Put the line we got into the tty buffer
-
-writevt `tty` "`cat ${OUT}`"
-
-# Set back the echo as it was
-
-stty ${OLD_SETTINGS}
-
-# Remove the file containing what we got from the selector
-
-\rm ${OUT}