Compare commits
	
		
			9 Commits
		
	
	
		
			94a77a10d8
			...
			f9a102456f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						f9a102456f
	
				 | 
					
					
						|||
| 
						
						
							
						
						63dde38bff
	
				 | 
					
					
						|||
| 
						
						
							
						
						8844026f26
	
				 | 
					
					
						|||
| 
						
						
							
						
						c64457d4cd
	
				 | 
					
					
						|||
| 
						
						
							
						
						97cbd7e80c
	
				 | 
					
					
						|||
| 
						
						
							
						
						2518b53e5a
	
				 | 
					
					
						|||
| 
						
						
							
						
						8265f075b1
	
				 | 
					
					
						|||
| 
						
						
							
						
						2f348c79b7
	
				 | 
					
					
						|||
| 
						
						
							
						
						18d16c1edb
	
				 | 
					
					
						
							
								
								
									
										27
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					# clang-format is fairly limited, and these rules are approximate:
 | 
				
			||||||
 | 
					#  - array initializers can get terribly mangled with clang-format 12.0,
 | 
				
			||||||
 | 
					#  - sometimes it still aligns with space characters,
 | 
				
			||||||
 | 
					#  - struct name NL { NL ... NL } NL name; is unachievable.
 | 
				
			||||||
 | 
					BasedOnStyle: GNU
 | 
				
			||||||
 | 
					ColumnLimit: 80
 | 
				
			||||||
 | 
					IndentWidth: 4
 | 
				
			||||||
 | 
					TabWidth: 4
 | 
				
			||||||
 | 
					UseTab: ForContinuationAndIndentation
 | 
				
			||||||
 | 
					BreakBeforeBraces: Allman
 | 
				
			||||||
 | 
					SpaceAfterCStyleCast: true
 | 
				
			||||||
 | 
					AlignAfterOpenBracket: DontAlign
 | 
				
			||||||
 | 
					AlignOperands: DontAlign
 | 
				
			||||||
 | 
					AlignConsecutiveMacros: Consecutive
 | 
				
			||||||
 | 
					AllowAllArgumentsOnNextLine: false
 | 
				
			||||||
 | 
					AllowAllParametersOfDeclarationOnNextLine: false
 | 
				
			||||||
 | 
					IndentGotoLabels: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# IncludeCategories has some potential, but it may also break the build.
 | 
				
			||||||
 | 
					# Note that the documentation says the value should be "Never".
 | 
				
			||||||
 | 
					SortIncludes: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This is a compromise, it generally works out aesthetically better.
 | 
				
			||||||
 | 
					BinPackArguments: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Unfortunately, this can't be told to align to column 40 or so.
 | 
				
			||||||
 | 
					SpacesBeforeTrailingComments: 2
 | 
				
			||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -7,3 +7,5 @@
 | 
				
			|||||||
/termo.files
 | 
					/termo.files
 | 
				
			||||||
/termo.creator*
 | 
					/termo.creator*
 | 
				
			||||||
/termo.includes
 | 
					/termo.includes
 | 
				
			||||||
 | 
					/termo.cflags
 | 
				
			||||||
 | 
					/termo.cxxflags
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
cmake_minimum_required (VERSION 3.0)
 | 
					cmake_minimum_required (VERSION 3.0...3.27)
 | 
				
			||||||
project (termo VERSION 0.1.0 LANGUAGES C)
 | 
					project (termo VERSION 0.1.0 LANGUAGES C)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
 | 
					if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
 | 
				
			||||||
@@ -61,6 +61,8 @@ else ()
 | 
				
			|||||||
endif ()
 | 
					endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -liconv may or may not be a part of libc
 | 
					# -liconv may or may not be a part of libc
 | 
				
			||||||
 | 
					find_path (iconv_INCLUDE_DIRS iconv.h)
 | 
				
			||||||
 | 
					include_directories (${iconv_INCLUDE_DIRS})
 | 
				
			||||||
find_library (iconv_LIBRARIES iconv)
 | 
					find_library (iconv_LIBRARIES iconv)
 | 
				
			||||||
if (iconv_LIBRARIES)
 | 
					if (iconv_LIBRARIES)
 | 
				
			||||||
	list (APPEND lib_libraries ${iconv_LIBRARIES})
 | 
						list (APPEND lib_libraries ${iconv_LIBRARIES})
 | 
				
			||||||
@@ -164,9 +166,9 @@ file (WRITE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc"
 | 
				
			|||||||
	"Name: ${PROJECT_NAME}\n"
 | 
						"Name: ${PROJECT_NAME}\n"
 | 
				
			||||||
	"Description: Terminal key input library\n"
 | 
						"Description: Terminal key input library\n"
 | 
				
			||||||
	"Version: ${PROJECT_VERSION}\n"
 | 
						"Version: ${PROJECT_VERSION}\n"
 | 
				
			||||||
	"Libs: -L${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} -l${project_LIB_NAME}\n"
 | 
						"Libs: -L${CMAKE_INSTALL_FULL_LIBDIR} -l${project_LIB_NAME}\n"
 | 
				
			||||||
	"Libs.private: ${lib_libraries}\n"
 | 
						"Libs.private: ${lib_libraries}\n"
 | 
				
			||||||
	"Cflags: -I${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/${project_INCLUDE_NAME}\n")
 | 
						"Cflags: -I${CMAKE_INSTALL_FULL_INCLUDEDIR}/${project_INCLUDE_NAME}\n")
 | 
				
			||||||
install (FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc"
 | 
					install (FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc"
 | 
				
			||||||
	DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 | 
						DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ pkg_check_modules (Ncursesw QUIET ncursesw)
 | 
				
			|||||||
set (required_vars Ncursesw_LIBRARIES)
 | 
					set (required_vars Ncursesw_LIBRARIES)
 | 
				
			||||||
if (NOT Ncursesw_FOUND)
 | 
					if (NOT Ncursesw_FOUND)
 | 
				
			||||||
	find_library (Ncursesw_LIBRARIES NAMES ncursesw)
 | 
						find_library (Ncursesw_LIBRARIES NAMES ncursesw)
 | 
				
			||||||
	find_path (Ncursesw_INCLUDE_DIRS ncurses.h)
 | 
						find_path (Ncursesw_INCLUDE_DIRS ncurses.h PATH_SUFFIXES ncurses)
 | 
				
			||||||
	list (APPEND required_vars Ncursesw_INCLUDE_DIRS)
 | 
						list (APPEND required_vars Ncursesw_INCLUDE_DIRS)
 | 
				
			||||||
endif (NOT Ncursesw_FOUND)
 | 
					endif (NOT Ncursesw_FOUND)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								driver-ti.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								driver-ti.c
									
									
									
									
									
								
							@@ -246,30 +246,28 @@ load_terminfo (termo_ti_t *ti, const char *term)
 | 
				
			|||||||
	set_mouse_string = tigetstr ("XM");
 | 
						set_mouse_string = tigetstr ("XM");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	if (!set_mouse_string || set_mouse_string == (char *) -1)
 | 
						if (!set_mouse_string || set_mouse_string == (char *) -1)
 | 
				
			||||||
		ti->set_mouse_string = strdup ("\E[?1000%?%p1%{1}%=%th%el%;");
 | 
							ti->set_mouse_string = strdup ("\x1b[?1000%?%p1%{1}%=%th%el%;");
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		ti->set_mouse_string = strdup (set_mouse_string);
 | 
							ti->set_mouse_string = strdup (set_mouse_string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool have_mouse = false;
 | 
						// We handle 1006 and 1015 unconditionally in driver-csi.c,
 | 
				
			||||||
	if (!mouse_report_string && strstr (term, "xterm"))
 | 
						// and don't want to have the handling diverted by recent terminfo;
 | 
				
			||||||
		mouse_report_string = "\x1b[M";
 | 
						// let's hardcode the ancient 1000 sequence locally
 | 
				
			||||||
	if (mouse_report_string)
 | 
						if (mouse_report_string)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		have_mouse = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		trie_node_t *node = malloc (sizeof *node);
 | 
							trie_node_t *node = malloc (sizeof *node);
 | 
				
			||||||
		if (!node)
 | 
							if (!node)
 | 
				
			||||||
			goto fail;
 | 
								goto fail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		node->type = TYPE_MOUSE;
 | 
							node->type = TYPE_MOUSE;
 | 
				
			||||||
		if (!insert_seq (ti, mouse_report_string, node))
 | 
							if (!insert_seq (ti, "\x1b[M", node))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			free (node);
 | 
								free (node);
 | 
				
			||||||
			goto fail;
 | 
								goto fail;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!have_mouse)
 | 
						if (!mouse_report_string && strstr (term, "xterm") != term)
 | 
				
			||||||
		ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE;
 | 
							ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE;
 | 
				
			||||||
	else if (strstr (term, "rxvt") == term)
 | 
						else if (strstr (term, "rxvt") == term)
 | 
				
			||||||
		// urxvt didn't understand the SGR protocol until version 9.25,
 | 
							// urxvt didn't understand the SGR protocol until version 9.25,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								termo.c
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								termo.c
									
									
									
									
									
								
							@@ -1856,4 +1856,3 @@ termo_keycmp (termo_t *tk,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return key1.modifiers - key2.modifiers;
 | 
						return key1.modifiers - key2.modifiers;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	plan_tests (6);
 | 
						plan_tests (6);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int fd[2];
 | 
						int fd[2];
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,12 @@
 | 
				
			|||||||
#include "../termo.h"
 | 
					#include "../termo.h"
 | 
				
			||||||
#include "taplib.h"
 | 
					#include "taplib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main (int argc, char *argv[])
 | 
					int
 | 
				
			||||||
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_sym_t sym;
 | 
						termo_sym_t sym;
 | 
				
			||||||
	const char *end;
 | 
						const char *end;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	char buffer[16];
 | 
						char buffer[16];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	const char *endp;
 | 
						const char *endp;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key1, key2;
 | 
						termo_key_t key1, key2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	const char *endp;
 | 
						const char *endp;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	termo_mouse_event_t ev;
 | 
						termo_mouse_event_t ev;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,12 @@
 | 
				
			|||||||
#include "../termo.h"
 | 
					#include "../termo.h"
 | 
				
			||||||
#include "taplib.h"
 | 
					#include "taplib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main (int argc, char *argv[])
 | 
					int
 | 
				
			||||||
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	int line, col;
 | 
						int line, col;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	int initial, mode, value;
 | 
						int initial, mode, value;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
main (int argc, char *argv[])
 | 
					main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						(void) argc;
 | 
				
			||||||
 | 
						(void) argv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	termo_t *tk;
 | 
						termo_t *tk;
 | 
				
			||||||
	termo_key_t key;
 | 
						termo_key_t key;
 | 
				
			||||||
	long args[16];
 | 
						long args[16];
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user