diff --git a/form/llib-lformt b/form/llib-lformt
index 967a4a7..d91b3f0 100644
--- a/form/llib-lformt
+++ b/form/llib-lformt
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 2010-2010,2015 Free Software Foundation, Inc.              *
+ * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -64,11 +65,11 @@
 
 #undef set_fieldtype_arg
 int	set_fieldtype_arg(
-		FIELDTYPE *typ, 
+		FIELDTYPE *typ,
 		void	*(*const make_arg)(
-		va_list	*p1), 
+		va_list	*p1),
 		void	*(*const copy_arg)(
-		const void *p1), 
+		const void *p1),
 		void	(*const free_arg)(
 		void	*p1))
 		{ return(*(int *)0); }
@@ -82,7 +83,7 @@
 
 #undef set_field_fore
 int	set_field_fore(
-		FIELD	*field, 
+		FIELD	*field,
 		chtype	attr)
 		{ return(*(int *)0); }
 
@@ -93,7 +94,7 @@
 
 #undef set_field_back
 int	set_field_back(
-		FIELD	*field, 
+		FIELD	*field,
 		chtype	attr)
 		{ return(*(int *)0); }
 
@@ -106,10 +107,15 @@
 
 #undef set_current_field
 int	set_current_field(
-		FORM	*form, 
+		FORM	*form,
 		FIELD	*field)
 		{ return(*(int *)0); }
 
+#undef unfocus_current_field
+int	unfocus_current_field(
+		FORM	*const form)
+		{ return(*(int *)0); }
+
 #undef current_field
 FIELD	*current_field(
 		const FORM *form)
@@ -127,27 +133,27 @@
 
 #undef _nc_Make_Argument
 TypeArgument *_nc_Make_Argument(
-		const FIELDTYPE *typ, 
-		va_list	*ap, 
+		const FIELDTYPE *typ,
+		va_list	*ap,
 		int	*err)
 		{ return(*(TypeArgument **)0); }
 
 #undef _nc_Copy_Argument
 TypeArgument *_nc_Copy_Argument(
-		const FIELDTYPE *typ, 
-		const TypeArgument *argp, 
+		const FIELDTYPE *typ,
+		const TypeArgument *argp,
 		int	*err)
 		{ return(*(TypeArgument **)0); }
 
 #undef _nc_Free_Argument
 void	_nc_Free_Argument(
-		const FIELDTYPE *typ, 
+		const FIELDTYPE *typ,
 		TypeArgument *argp)
 		{ /* void */ }
 
 #undef _nc_Copy_Type
 NCURSES_BOOL _nc_Copy_Type(
-		FIELD	*dst, 
+		FIELD	*dst,
 		FIELD const *src)
 		{ return(*(NCURSES_BOOL *)0); }
 
@@ -158,11 +164,11 @@
 
 #undef new_field
 FIELD	*new_field(
-		int	rows, 
-		int	cols, 
-		int	frow, 
-		int	fcol, 
-		int	nrow, 
+		int	rows,
+		int	cols,
+		int	frow,
+		int	fcol,
+		int	nrow,
 		int	nbuf)
 		{ return(*(FIELD **)0); }
 
@@ -175,8 +181,8 @@
 
 #undef dup_field
 FIELD	*dup_field(
-		FIELD	*field, 
-		int	frow, 
+		FIELD	*field,
+		int	frow,
 		int	fcol)
 		{ return(*(FIELD **)0); }
 
@@ -184,12 +190,12 @@
 
 #undef set_fieldtype_choice
 int	set_fieldtype_choice(
-		FIELDTYPE *typ, 
+		FIELDTYPE *typ,
 		NCURSES_BOOL (*const next_choice)(
-		FIELD	*p1, 
-		const void *p2), 
+		FIELD	*p1,
+		const void *p2),
 		NCURSES_BOOL (*const prev_choice)(
-		FIELD	*p1, 
+		FIELD	*p1,
 		const void *p2))
 		{ return(*(int *)0); }
 
@@ -197,7 +203,7 @@
 
 #undef link_fieldtype
 FIELDTYPE *link_fieldtype(
-		FIELDTYPE *type1, 
+		FIELDTYPE *type1,
 		FIELDTYPE *type2)
 		{ return(*(FIELDTYPE **)0); }
 
@@ -205,20 +211,20 @@
 
 #undef field_info
 int	field_info(
-		const FIELD *field, 
-		int	*rows, 
-		int	*cols, 
-		int	*frow, 
-		int	*fcol, 
-		int	*nrow, 
+		const FIELD *field,
+		int	*rows,
+		int	*cols,
+		int	*frow,
+		int	*fcol,
+		int	*nrow,
 		int	*nbuf)
 		{ return(*(int *)0); }
 
 #undef dynamic_field_info
 int	dynamic_field_info(
-		const FIELD *field, 
-		int	*drows, 
-		int	*dcols, 
+		const FIELD *field,
+		int	*drows,
+		int	*dcols,
 		int	*maxgrow)
 		{ return(*(int *)0); }
 
@@ -226,7 +232,7 @@
 
 #undef set_field_just
 int	set_field_just(
-		FIELD	*field, 
+		FIELD	*field,
 		int	just)
 		{ return(*(int *)0); }
 
@@ -239,8 +245,8 @@
 
 #undef link_field
 FIELD	*link_field(
-		FIELD	*field, 
-		int	frow, 
+		FIELD	*field,
+		int	frow,
 		int	fcol)
 		{ return(*(FIELD **)0); }
 
@@ -248,7 +254,7 @@
 
 #undef set_max_field
 int	set_max_field(
-		FIELD	*field, 
+		FIELD	*field,
 		int	maxgrow)
 		{ return(*(int *)0); }
 
@@ -256,8 +262,8 @@
 
 #undef move_field
 int	move_field(
-		FIELD	*field, 
-		int	frow, 
+		FIELD	*field,
+		int	frow,
 		int	fcol)
 		{ return(*(int *)0); }
 
@@ -269,10 +275,10 @@
 #undef new_fieldtype
 FIELDTYPE *new_fieldtype(
 		NCURSES_BOOL (*const field_check)(
-		FIELD	*p1, 
-		const void *p2), 
+		FIELD	*p1,
+		const void *p2),
 		NCURSES_BOOL (*const char_check)(
-		int	p1, 
+		int	p1,
 		const void *p2))
 		{ return(*(FIELDTYPE **)0); }
 
@@ -285,7 +291,7 @@
 
 #undef set_field_opts
 int	set_field_opts(
-		FIELD	*field, 
+		FIELD	*field,
 		Field_Options opts)
 		{ return(*(int *)0); }
 
@@ -296,13 +302,13 @@
 
 #undef field_opts_on
 int	field_opts_on(
-		FIELD	*field, 
+		FIELD	*field,
 		Field_Options opts)
 		{ return(*(int *)0); }
 
 #undef field_opts_off
 int	field_opts_off(
-		FIELD	*field, 
+		FIELD	*field,
 		Field_Options opts)
 		{ return(*(int *)0); }
 
@@ -310,7 +316,7 @@
 
 #undef set_field_pad
 int	set_field_pad(
-		FIELD	*field, 
+		FIELD	*field,
 		int	ch)
 		{ return(*(int *)0); }
 
@@ -323,7 +329,7 @@
 
 #undef set_new_page
 int	set_new_page(
-		FIELD	*field, 
+		FIELD	*field,
 		NCURSES_BOOL new_page_flag)
 		{ return(*(int *)0); }
 
@@ -336,7 +342,7 @@
 
 #undef set_field_status
 int	set_field_status(
-		FIELD	*field, 
+		FIELD	*field,
 		NCURSES_BOOL status)
 		{ return(*(int *)0); }
 
@@ -349,8 +355,8 @@
 
 #undef set_field_type
 int	set_field_type(
-		FIELD	*field, 
-		FIELDTYPE *type, 
+		FIELD	*field,
+		FIELDTYPE *type,
 		...)
 		{ return(*(int *)0); }
 
@@ -363,7 +369,7 @@
 
 #undef set_field_userptr
 int	set_field_userptr(
-		FIELD	*field, 
+		FIELD	*field,
 		void	*usrptr)
 		{ return(*(int *)0); }
 
@@ -398,7 +404,7 @@
 
 #undef new_form_sp
 FORM	*new_form_sp(
-		SCREEN	*sp, 
+		SCREEN	*sp,
 		FIELD	**fields)
 		{ return(*(FORM **)0); }
 
@@ -414,7 +420,7 @@
 
 #undef set_form_fields
 int	set_form_fields(
-		FORM	*form, 
+		FORM	*form,
 		FIELD	**fields)
 		{ return(*(int *)0); }
 
@@ -432,8 +438,8 @@
 
 #undef _nc_get_fieldbuffer
 void	_nc_get_fieldbuffer(
-		FORM	*form, 
-		FIELD	*field, 
+		FORM	*form,
+		FIELD	*field,
 		char	*buf)
 		{ /* void */ }
 
@@ -454,13 +460,18 @@
 
 #undef _nc_Synchronize_Options
 int	_nc_Synchronize_Options(
-		FIELD	*field, 
+		FIELD	*field,
 		Field_Options newopts)
 		{ return(*(int *)0); }
 
+#undef _nc_Unset_Current_Field
+void	_nc_Unset_Current_Field(
+		FORM	*form)
+		{ /* void */ }
+
 #undef _nc_Set_Current_Field
 int	_nc_Set_Current_Field(
-		FORM	*form, 
+		FORM	*form,
 		FIELD	*newfield)
 		{ return(*(int *)0); }
 
@@ -476,34 +487,34 @@
 
 #undef _nc_Set_Form_Page
 int	_nc_Set_Form_Page(
-		FORM	*form, 
-		int	page, 
+		FORM	*form,
+		int	page,
 		FIELD	*field)
 		{ return(*(int *)0); }
 
 typedef struct
 {
-  int keycode; 
-  int (*cmd) (FORM *); 
+  int keycode;
+  int (*cmd) (FORM *);
 }
 Binding_Info;
 
 #undef form_driver
 int	form_driver(
-		FORM	*form, 
+		FORM	*form,
 		int	c)
 		{ return(*(int *)0); }
 
 #undef set_field_buffer
 int	set_field_buffer(
-		FIELD	*field, 
-		int	buffer, 
+		FIELD	*field,
+		int	buffer,
 		const char *value)
 		{ return(*(int *)0); }
 
 #undef field_buffer
 char	*field_buffer(
-		const FIELD *field, 
+		const FIELD *field,
 		int	buffer)
 		{ return(*(char **)0); }
 
@@ -511,7 +522,7 @@
 
 #undef set_field_init
 int	set_field_init(
-		FORM	*form, 
+		FORM	*form,
 		Form_Hook func)
 		{ return(*(int *)0); }
 
@@ -522,7 +533,7 @@
 
 #undef set_field_term
 int	set_field_term(
-		FORM	*form, 
+		FORM	*form,
 		Form_Hook func)
 		{ return(*(int *)0); }
 
@@ -533,7 +544,7 @@
 
 #undef set_form_init
 int	set_form_init(
-		FORM	*form, 
+		FORM	*form,
 		Form_Hook func)
 		{ return(*(int *)0); }
 
@@ -544,7 +555,7 @@
 
 #undef set_form_term
 int	set_form_term(
-		FORM	*form, 
+		FORM	*form,
 		Form_Hook func)
 		{ return(*(int *)0); }
 
@@ -557,7 +568,7 @@
 
 #undef set_form_opts
 int	set_form_opts(
-		FORM	*form, 
+		FORM	*form,
 		Form_Options opts)
 		{ return(*(int *)0); }
 
@@ -568,13 +579,13 @@
 
 #undef form_opts_on
 int	form_opts_on(
-		FORM	*form, 
+		FORM	*form,
 		Form_Options opts)
 		{ return(*(int *)0); }
 
 #undef form_opts_off
 int	form_opts_off(
-		FORM	*form, 
+		FORM	*form,
 		Form_Options opts)
 		{ return(*(int *)0); }
 
@@ -582,7 +593,7 @@
 
 #undef set_form_page
 int	set_form_page(
-		FORM	*form, 
+		FORM	*form,
 		int	page)
 		{ return(*(int *)0); }
 
@@ -619,8 +630,8 @@
 
 #undef scale_form
 int	scale_form(
-		const FORM *form, 
-		int	*rows, 
+		const FORM *form,
+		int	*rows,
 		int	*cols)
 		{ return(*(int *)0); }
 
@@ -628,7 +639,7 @@
 
 #undef set_form_sub
 int	set_form_sub(
-		FORM	*form, 
+		FORM	*form,
 		WINDOW	*win)
 		{ return(*(int *)0); }
 
@@ -641,7 +652,7 @@
 
 #undef set_form_userptr
 int	set_form_userptr(
-		FORM	*form, 
+		FORM	*form,
 		void	*usrptr)
 		{ return(*(int *)0); }
 
@@ -654,7 +665,7 @@
 
 #undef set_form_win
 int	set_form_win(
-		FORM	*form, 
+		FORM	*form,
 		WINDOW	*win)
 		{ return(*(int *)0); }
 
@@ -724,38 +735,38 @@
 #undef _nc_generic_fieldtype
 FIELDTYPE *_nc_generic_fieldtype(
 		NCURSES_BOOL (*const field_check)(
-		FORM	*p1, 
-		FIELD	*p2, 
-		const void *p3), 
+		FORM	*p1,
+		FIELD	*p2,
+		const void *p3),
 		NCURSES_BOOL (*const char_check)(
-		int	p1, 
-		FORM	*p2, 
-		FIELD	*p3, 
-		const void *p4), 
+		int	p1,
+		FORM	*p2,
+		FIELD	*p3,
+		const void *p4),
 		NCURSES_BOOL (*const next)(
-		FORM	*p1, 
-		FIELD	*p2, 
-		const void *p3), 
+		FORM	*p1,
+		FIELD	*p2,
+		const void *p3),
 		NCURSES_BOOL (*const prev)(
-		FORM	*p1, 
-		FIELD	*p2, 
-		const void *p3), 
+		FORM	*p1,
+		FIELD	*p2,
+		const void *p3),
 		void	(*freecallback)(
 		void	*p1))
 		{ return(*(FIELDTYPE **)0); }
 
 #undef _nc_set_generic_fieldtype
 int	_nc_set_generic_fieldtype(
-		FIELD	*field, 
-		FIELDTYPE *ftyp, 
+		FIELD	*field,
+		FIELDTYPE *ftyp,
 		int	(*argiterator)(
 		void	**p1))
 		{ return(*(int *)0); }
 
 #undef _nc_form_cursor
 WINDOW	*_nc_form_cursor(
-		const FORM *form, 
-		int	*pRow, 
+		const FORM *form,
+		int	*pRow,
 		int	*pCol)
 		{ return(*(WINDOW **)0); }
 
@@ -795,8 +806,6 @@
 
 /* ./fty_num.c */
 
-#include <locale.h>
-
 typedef struct
   {
     int precision;
@@ -823,8 +832,6 @@
 
 /* ./fty_regex.c */
 
-#include <regex.h>
-
 typedef struct
   {
     regex_t *pRegExp;
