Button.h Error

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\Users\\Bob\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-IC:\\Users\\Bob\\Documents\\Arduino\\libraries\\LiquidMenu-1.4.1\\src" "-IC:\\Users\\Bob\\Documents\\Arduino\\libraries\\Button" "C:\\Users\\Bob\\Documents\\Arduino\\libraries\\Button\\Button.cpp" -o "C:\\Users\\Bob\\AppData\\Local\\Temp\\arduino_build_360648\\libraries\\Button\\Button.cpp.o"
In file included from C:\Users\Bob\Documents\Arduino\libraries\Button\Button.cpp:21:0:

C:\Users\Bob\Documents\Arduino\libraries\Button\Button.h:5:18: error: expected ')' before 'pin'

  Button (uint8_t pin, bool pullup = false, uint16_t debounceDelay = 50)

                  ^

C:\Users\Bob\Documents\Arduino\libraries\Button\Button.cpp:93:1: error: expected '}' at end of input

 }

 ^

C:\Users\Bob\Documents\Arduino\libraries\Button\Button.cpp:93:1: error: expected unqualified-id at end of input

Using library LiquidCrystal_I2C at version 1.1.2 in folder: C:\Users\Bob\Documents\Arduino\libraries\LiquidCrystal_I2C 
Using library Wire at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
Using library LiquidMenu-1.4.1 at version 1.4.0 in folder: C:\Users\Bob\Documents\Arduino\libraries\LiquidMenu-1.4.1 
Using library Button in folder: C:\Users\Bob\Documents\Arduino\libraries\Button (legacy)
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.

https://playground.arduino.cc/Code/Button/

I downloaded from here.

On line 93 there is no extra bracket needed and line 5 don’t I need the arguments in the parenthesis?

/*
||
|| @file Button.cpp
|| @version 1.6
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Provide an easy way of making buttons
|| #
||
|| @license
|| | Copyright (c) 2009 Alexander Brevig. All rights reserved.
|| | This code is subject to AlphaLicence.txt
|| | alphabeta.alexanderbrevig.com/AlphaLicense.txt
|| #
||
*/

//include the class definition
#include "Button.h"

/*
|| <<constructor>>
|| @parameter buttonPin sets the pin that this switch is connected to
|| @parameter buttonMode indicates PULLUP or PULLDOWN resistor
*/
Button::Button(uint8_t buttonPin, uint8_t buttonMode){
	this->pin=buttonPin;
    pinMode(pin,INPUT);
	buttonMode==PULLDOWN ? pulldown() : pullup();
    state = 0;
    bitWrite(state,CURRENT,!mode);
}

/*
|| Set pin HIGH as default
*/
void Button::pullup(void){
	mode=PULLUP;
	digitalWrite(pin,HIGH);
}

/*
|| Set pin LOW as default
*/
void Button::pulldown(void){
	mode=PULLDOWN;
	//digitalWrite(pin,LOW);
}

/*
|| Return the bitWrite(state,CURRENT, of the switch
*/
bool Button::isPressed(void){
    bitWrite(state,PREVIOUS,bitRead(state,CURRENT));
    if (digitalRead(pin) == mode){
        bitWrite(state,CURRENT,false);
    } else {
        bitWrite(state,CURRENT,true);
    }
    if (bitRead(state,CURRENT) != bitRead(state,PREVIOUS)){
        bitWrite(state,CHANGED,true);
    }else{
        bitWrite(state,CHANGED,false);
    }
	return bitRead(state,CURRENT);
}

/*
|| Return true if the button has been pressed
*/
bool Button::wasPressed(void){
    if (bitRead(state,CURRENT)){
        return true;
    } else {
        return false;
    }
}

/*
|| Return true if state has been changed
*/
bool Button::stateChanged(void){
    return bitRead(state,CHANGED);
}

/*
|| Return true if the button is pressed, and was not pressed before
*/
bool Button::uniquePress(void){
    return (isPressed() && stateChanged());
}

Trying to try out the liquidmenu examples but this is holding me up.

What is your question?

Should I just remove the library and replace it with another, like this one?
https://github.com/JChristensen/JC_Button

and replace the check() with left.read() == true or left.isPressed() == true?

I’d like to fix the error if possible so that’s why I posted my .cpp in the 2nd code block with the error in the 1st code block to see if I am somehow misunderstanding or missing whats wrong in the .cpp

/*
 * LiquidMenu library - focus_menu.ino
 *
 * This example demonstrates how to customize the focus indicator.
 *
 * The default focus indicator is an arrow symbol shown on the right of the
 * focused line. The focus indicator position can be changed per line to be
 * shown on the right, on the left or in a specified position. The focus
 * symbol can also be changed, per position.
 * In this example a custom focus symbol is defined (uint8_t rFocus[8]). Then
 * it is configured to be the right focus indicator symbol using the
 * bool LiquidMenu::set_focusSymbol(Position position, uint8_t symbol[8]) method.
 * The focus position for the different lines is configured using the
 * bool set_focusPosition(Position position, uint8_t column = 0, uint8_t row = 0)
 * method. If the "position" is "Position::CUSTOM", the column and row parameters
 * must be specified. The focus position can be specified for a single line, for
 * the whole screen, for the whole menu or for the whole menu system using the
 * respective objects.
 *
 * The circuit:
 * https://github.com/VasilKalchev/LiquidMenu/blob/master/examples/focus_menu/F_focus_menu.png
 * - LCD RS pin to Arduino pin 12
 * - LCD E pin to Arduino pin 11
 * - LCD D4 pin to Arduino pin 5
 * - LCD D5 pin to Arduino pin 4
 * - LCD D6 pin to Arduino pin 3
 * - LCD D7 pin to Arduino pin 2
 * - LCD R/W pin to ground
 * - LCD VSS pin to ground
 * - LCD VDD pin to 5V
 * - 10k ohm potentiometer: ends to 5V and ground, wiper to LCD V0
 * - 150 ohm resistor from 5V to LCD Anode
 * - LCD Cathode to ground
 * - ----
 * - Button (left) to Arduino pin A0 and ground
 * - Button (right) to Arduino pin 7 and ground
 * - Button (enter) to Arduino pin 10 and ground
 *
 * Created July 24, 2016
 * by Vasil Kalchev
 *
 * https://github.com/VasilKalchev/LiquidMenu
 * http://omerk.github.io/lcdchargen/ - for creating custom indicator symbol
 *
 */
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
#include "Button.h"

LiquidCrystal_I2C lcd(0x27, 20, 4);

// Button objects instantiation
const bool pullup = true;
Button left(10, pullup);
Button right(11, pullup);
Button enter(12, pullup);

LiquidLine welcome_line1(1, 0, "LiquidMenu ", LIQUIDMENU_VERSION);
LiquidLine welcome_line2(1, 1, "Focus example");
LiquidScreen welcome_screen(welcome_line1, welcome_line2);

LiquidLine leftFocus_line(1, 0, "Left focus");
LiquidLine rightFocus_line(1, 1, "Right focus");
LiquidScreen leftright_screen(leftFocus_line, rightFocus_line);

LiquidLine customFocus_line(1, 0, "Custom focus");
LiquidScreen customFocus_screen(customFocus_line);

LiquidLine leftF1_line(6, 0, "Left");
LiquidLine leftF2_line(6, 1, "focus");
LiquidScreen leftF12_screen(leftF1_line, leftF2_line);

LiquidMenu menu(lcd);

// Checks all the buttons.
void buttonsCheck() {
	if (right.check() == LOW) {
		menu.next_screen();
	}
	if (left.check() == LOW) {
		menu.previous_screen();
	}
	if (enter.check() == LOW) {
		// Switches focus to the next line.
		menu.switch_focus();
	}
}

// Indicator symbol definition, it will change the default symbol for the right focus.
// http://omerk.github.io/lcdchargen/
uint8_t rFocus[8] = {
	0b00000,
	0b00000,
	0b00100,
	0b01110,
	0b00100,
	0b00000,
	0b00000,
	0b00000
};

// Blank function, it is attached to the lines so that they become focusable.
void func() {
	return;
}

void setup() {
	Serial.begin(250000);

	lcd.begin(16, 2);

	// Changes the right focus symbol.
	menu.set_focusSymbol(Position::RIGHT, rFocus);

	// Sets the focus position for this line to be on the left.
	leftFocus_line.set_focusPosition(Position::LEFT);
	rightFocus_line.set_focusPosition(Position::RIGHT);
	// 'CUSTOM' focus position needs column and row parameters.
	customFocus_line.set_focusPosition(Position::CUSTOM, 15, 0);
	// The focus position can be changed for the whole screen or
	// menu at once. 'CUSTOM' position cannot be set because it
	// needs individual coordinates.
	leftF12_screen.set_focusPosition(Position::LEFT);

	// Attaching a function to a line makes the line focusable.
	leftFocus_line.attach_function(1, func);
	rightFocus_line.attach_function(1, func);
	customFocus_line.attach_function(1, func);
	leftF1_line.attach_function(1, func);
	leftF2_line.attach_function(1, func);

	menu.add_screen(welcome_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(customFocus_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(leftF12_screen);

	menu.update();
}

void loop() {
	buttonsCheck();
}

Thats the example I am trying to use to test liquidmenu, if only button.cpp didnt have issues that I cant recognize.

Please post the sketch that produced the errors

Are you trying to write a new library or modify the existing library? Or to put it another way, why are you writing CPP code?

I moved button.h from the examples folder of focus in liquidmenu to my buttons folder library so it could add the check() ability, otherwise the example can’t be used, after everything was configured correctly I got the errors in my initial post, but can’t seem to figure out how the error is true if the arguments are needed for line 5 and the correct amount of brackets are used at 93.
If any of you download liquidmenu and try to use a example with the buttons library used, you will have the same problem. Idk how to fix this besides rewriting the check() in the if area to read() after replacing with JC button library due to the .cpp errors not being understood.

/*
 * LiquidMenu library - focus_menu.ino
 *
 * This example demonstrates how to customize the focus indicator.
 *
 * The default focus indicator is an arrow symbol shown on the right of the
 * focused line. The focus indicator position can be changed per line to be
 * shown on the right, on the left or in a specified position. The focus
 * symbol can also be changed, per position.
 * In this example a custom focus symbol is defined (uint8_t rFocus[8]). Then
 * it is configured to be the right focus indicator symbol using the
 * bool LiquidMenu::set_focusSymbol(Position position, uint8_t symbol[8]) method.
 * The focus position for the different lines is configured using the
 * bool set_focusPosition(Position position, uint8_t column = 0, uint8_t row = 0)
 * method. If the "position" is "Position::CUSTOM", the column and row parameters
 * must be specified. The focus position can be specified for a single line, for
 * the whole screen, for the whole menu or for the whole menu system using the
 * respective objects.
 *
 * The circuit:
 * https://github.com/VasilKalchev/LiquidMenu/blob/master/examples/focus_menu/F_focus_menu.png
 * - LCD RS pin to Arduino pin 12
 * - LCD E pin to Arduino pin 11
 * - LCD D4 pin to Arduino pin 5
 * - LCD D5 pin to Arduino pin 4
 * - LCD D6 pin to Arduino pin 3
 * - LCD D7 pin to Arduino pin 2
 * - LCD R/W pin to ground
 * - LCD VSS pin to ground
 * - LCD VDD pin to 5V
 * - 10k ohm potentiometer: ends to 5V and ground, wiper to LCD V0
 * - 150 ohm resistor from 5V to LCD Anode
 * - LCD Cathode to ground
 * - ----
 * - Button (left) to Arduino pin A0 and ground
 * - Button (right) to Arduino pin 7 and ground
 * - Button (enter) to Arduino pin 10 and ground
 *
 * Created July 24, 2016
 * by Vasil Kalchev
 *
 * https://github.com/VasilKalchev/LiquidMenu
 * http://omerk.github.io/lcdchargen/ - for creating custom indicator symbol
 *
 */
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
#include "Button.h"

LiquidCrystal_I2C lcd(0x27, 20, 4);

// Button objects instantiation
const bool pullup = true;
Button left(10, pullup);
Button right(11, pullup);
Button enter(12, pullup);

LiquidLine welcome_line1(1, 0, "LiquidMenu ", LIQUIDMENU_VERSION);
LiquidLine welcome_line2(1, 1, "Focus example");
LiquidScreen welcome_screen(welcome_line1, welcome_line2);

LiquidLine leftFocus_line(1, 0, "Left focus");
LiquidLine rightFocus_line(1, 1, "Right focus");
LiquidScreen leftright_screen(leftFocus_line, rightFocus_line);

LiquidLine customFocus_line(1, 0, "Custom focus");
LiquidScreen customFocus_screen(customFocus_line);

LiquidLine leftF1_line(6, 0, "Left");
LiquidLine leftF2_line(6, 1, "focus");
LiquidScreen leftF12_screen(leftF1_line, leftF2_line);

LiquidMenu menu(lcd);

// Checks all the buttons.
void buttonsCheck() {
	if (right.isPressed() == true) {
		menu.next_screen();
	}
	if (left.isPressed() == true) {
		menu.previous_screen();
	}
	if (enter.isPressed() == true) {
		// Switches focus to the next line.
		menu.switch_focus();
	}
}

// Indicator symbol definition, it will change the default symbol for the right focus.
// http://omerk.github.io/lcdchargen/
uint8_t rFocus[8] = {
	0b00000,
	0b00000,
	0b00100,
	0b01110,
	0b00100,
	0b00000,
	0b00000,
	0b00000
};

// Blank function, it is attached to the lines so that they become focusable.
void func() {
	return;
}

void setup() {
	Serial.begin(250000);

	lcd.begin(16, 2);

	// Changes the right focus symbol.
	menu.set_focusSymbol(Position::RIGHT, rFocus);

	// Sets the focus position for this line to be on the left.
	leftFocus_line.set_focusPosition(Position::LEFT);
	rightFocus_line.set_focusPosition(Position::RIGHT);
	// 'CUSTOM' focus position needs column and row parameters.
	customFocus_line.set_focusPosition(Position::CUSTOM, 15, 0);
	// The focus position can be changed for the whole screen or
	// menu at once. 'CUSTOM' position cannot be set because it
	// needs individual coordinates.
	leftF12_screen.set_focusPosition(Position::LEFT);

	// Attaching a function to a line makes the line focusable.
	leftFocus_line.attach_function(1, func);
	rightFocus_line.attach_function(1, func);
	customFocus_line.attach_function(1, func);
	leftF1_line.attach_function(1, func);
	leftF2_line.attach_function(1, func);

	menu.add_screen(welcome_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(customFocus_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(leftF12_screen);

	menu.update();
}

void loop() {
	buttonsCheck();
}

I deleted and reinstalled the same button library, then editted button.h to change Wprogram.h to Arduino.h to fix the error supplied that is suppose to be fixed by the included button.h in the examples folder of liquidmenu.
After which I replaced the .check() methods with .isPressed() == true
and now it compiles, but if uploaded just get a blank screen

/*
 * LiquidMenu library - I2C_menu.ino
 * IMPORTANT: To configure the library for I2C connection define I2C
 * as "true" in the "LiquidMenu_config.h" file.
 *
 * This is the "hello_menu" example configured for I2C connection.
 *
 * The difference in using an I2C display library instead of the
 * official LiquidCrystal library is that void LiquidMenu::init()
 * method needs to be called in setup() after the I2C display library
 * is initialized. The other difference is that I2C needs to be defined
 * as "true" in the "LiquidMenu_config.h" file.
 *
 * The circuit:
 * https://github.com/VasilKalchev/LiquidMenu/blob/master/examples/I_I2C_menu/hello_menu.png
 * - PCF8574 module SDA to Arduino pin A5
 * - PCF8574 module SDL to Arduino pin A4
 * - PCF8574 module VCC to Arduino 5V
 * - PCF8574 module GND to Arduino GND
 *
 * Created March 27, 2017
 * by Vasil Kalchev
 *
 * https://github.com/VasilKalchev/LiquidMenu
 *
 */

#include <Wire.h>
// The I2C LCD library
#include <LiquidCrystal_I2C.h>
// The menu wrapper library
#include <LiquidMenu.h>

// The I2C LCD object
LiquidCrystal_I2C lcd(0x27, 20, 4);

/*
 * Variable 'analogReading' is later configured to
 * be printed on the display. 'lastAnalogReading'
 * is used to check if the variable has changed.
 */
const byte analogPin = A1;
unsigned short analogReading = 0;
unsigned short lastAnalogReading = 0;

/*
 * Variables used for periodic execution of code. The first one is the period
 * in milliseconds and the second one is the last time the code executed.
 */
unsigned int period_check = 1000;
unsigned long lastMs_check = 0;

unsigned int period_nextScreen = 5000;
unsigned long lastMs_nextScreen = 0;

/*
 * LiquidLine objects represent a single line of text and/or variables
 * on the display. The first two parameters are the column and row from
 * which the line starts, the rest of the parameters are the text and/or
 * variables that will be printed on the display. They can be up to four.
 */
// Here the line is set to column 1, row 0 and will print the passed
// string and the passed variable.
LiquidLine welcome_line1(1, 0, "LiquidMenu ", LIQUIDMENU_VERSION);
// Here the column is 3, the row is 1 and the string is "Hello Menu".
LiquidLine welcome_line2(1, 1, "Hello Menu I2C");

/*
 * LiquidScreen objects represent a single screen. A screen is made of
 * one or more LiquidLine objects. Up to four LiquidLine objects can
 * be inserted from here, but more can be added later in setup() using
 * welcome_screen.add_line(someLine_object);.
 */
// Here the LiquidLine objects are the two objects from above.
LiquidScreen welcome_screen(welcome_line1, welcome_line2);

// Here there is not only a text string but also a changing integer variable.
LiquidLine analogReading_line(0, 0, "Analog: ", analogReading);
LiquidScreen secondary_screen(analogReading_line);

/*
 * The LiquidMenu object combines the LiquidScreen objects to form the
 * menu. Here it is only instantiated and the screens are added later
 * using menu.add_screen(someScreen_object);. This object is used to
 * control the menu, for example: menu.next_screen(), menu.switch_focus()...
 */
LiquidMenu menu(lcd);


void setup() {
  Serial.begin(250000);

  pinMode(analogPin, INPUT);

  // This is the I2C LCD object initialization.
  lcd.init();
  lcd.backlight();

  // This methid needs to be called when using an I2C display library.
  menu.init();

  // This is the method used to add a screen object to the menu.
  menu.add_screen(welcome_screen);
  menu.add_screen(secondary_screen);
}

void loop() {
  // Periodic reading of the analog pin.
  if (millis() - lastMs_check > period_check) {
    lastMs_check = millis();
    analogReading = analogRead(analogPin);
    /*
     * Check if the analog value have changed
     * and update the display if it has.
     */
    if (analogReading != lastAnalogReading) {
      lastAnalogReading = analogReading;
      menu.update();
    }
  }

  // Periodic switching to the next screen.
  if (millis() - lastMs_nextScreen > period_nextScreen) {
    lastMs_nextScreen = millis();
    menu.next_screen();
  }
}

The liquidmenu I2c example works, so this may just be a issue with any examples that include button.h for liquidmenu.

/*
 * LiquidMenu library - focus_menu.ino
 *
 * This example demonstrates how to customize the focus indicator.
 *
 * The default focus indicator is an arrow symbol shown on the right of the
 * focused line. The focus indicator position can be changed per line to be
 * shown on the right, on the left or in a specified position. The focus
 * symbol can also be changed, per position.
 * In this example a custom focus symbol is defined (uint8_t rFocus[8]). Then
 * it is configured to be the right focus indicator symbol using the
 * bool LiquidMenu::set_focusSymbol(Position position, uint8_t symbol[8]) method.
 * The focus position for the different lines is configured using the
 * bool set_focusPosition(Position position, uint8_t column = 0, uint8_t row = 0)
 * method. If the "position" is "Position::CUSTOM", the column and row parameters
 * must be specified. The focus position can be specified for a single line, for
 * the whole screen, for the whole menu or for the whole menu system using the
 * respective objects.
 *
 * The circuit:
 * https://github.com/VasilKalchev/LiquidMenu/blob/master/examples/focus_menu/F_focus_menu.png
 * - LCD RS pin to Arduino pin 12
 * - LCD E pin to Arduino pin 11
 * - LCD D4 pin to Arduino pin 5
 * - LCD D5 pin to Arduino pin 4
 * - LCD D6 pin to Arduino pin 3
 * - LCD D7 pin to Arduino pin 2
 * - LCD R/W pin to ground
 * - LCD VSS pin to ground
 * - LCD VDD pin to 5V
 * - 10k ohm potentiometer: ends to 5V and ground, wiper to LCD V0
 * - 150 ohm resistor from 5V to LCD Anode
 * - LCD Cathode to ground
 * - ----
 * - Button (left) to Arduino pin A0 and ground
 * - Button (right) to Arduino pin 7 and ground
 * - Button (enter) to Arduino pin 10 and ground
 *
 * Created July 24, 2016
 * by Vasil Kalchev
 *
 * https://github.com/VasilKalchev/LiquidMenu
 * http://omerk.github.io/lcdchargen/ - for creating custom indicator symbol
 *
 */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
#include "Button.h"

LiquidCrystal_I2C lcd(0x27, 20, 4);

// Button objects instantiation
const bool pullup = true;
Button left(10, pullup);
Button right(11, pullup);
Button enter(12, pullup);

LiquidLine welcome_line1(1, 0, "LiquidMenu ", LIQUIDMENU_VERSION);
LiquidLine welcome_line2(1, 1, "Focus example");
LiquidScreen welcome_screen(welcome_line1, welcome_line2);

LiquidLine leftFocus_line(1, 0, "Left focus");
LiquidLine rightFocus_line(1, 1, "Right focus");
LiquidScreen leftright_screen(leftFocus_line, rightFocus_line);

LiquidLine customFocus_line(1, 0, "Custom focus");
LiquidScreen customFocus_screen(customFocus_line);

LiquidLine leftF1_line(6, 0, "Left");
LiquidLine leftF2_line(6, 1, "focus");
LiquidScreen leftF12_screen(leftF1_line, leftF2_line);

LiquidMenu menu(lcd);

// Checks all the buttons.
void buttonsCheck() {
	if (right.isPressed() == 1) {
		menu.next_screen();
	}
	if (left.isPressed() == 1) {
		menu.previous_screen();
	}
	if (enter.isPressed() == 1) {
		// Switches focus to the next line.
		menu.switch_focus();
	}
}

// Indicator symbol definition, it will change the default symbol for the right focus.
// http://omerk.github.io/lcdchargen/
uint8_t rFocus[8] = {
	0b00000,
	0b00000,
	0b00100,
	0b01110,
	0b00100,
	0b00000,
	0b00000,
	0b00000
};

// Blank function, it is attached to the lines so that they become focusable.
void func() {
	return;
}

void setup() {
	Serial.begin(250000);

	lcd.init();
  lcd.backlight();

	// Changes the right focus symbol.
	menu.set_focusSymbol(Position::RIGHT, rFocus);

	// Sets the focus position for this line to be on the left.
	leftFocus_line.set_focusPosition(Position::LEFT);
	rightFocus_line.set_focusPosition(Position::RIGHT);
	// 'CUSTOM' focus position needs column and row parameters.
	customFocus_line.set_focusPosition(Position::CUSTOM, 15, 1);
	// The focus position can be changed for the whole screen or
	// menu at once. 'CUSTOM' position cannot be set because it
	// needs individual coordinates.
	leftF12_screen.set_focusPosition(Position::LEFT);

	// Attaching a function to a line makes the line focusable.
	leftFocus_line.attach_function(1, func);
	rightFocus_line.attach_function(1, func);
	customFocus_line.attach_function(1, func);
	leftF1_line.attach_function(1, func);
	leftF2_line.attach_function(1, func);

	menu.add_screen(welcome_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(customFocus_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(leftF12_screen);

	menu.update();
}

void loop() {
	buttonsCheck();
}

I had to delete lcd.begin for lcd.init() and backlight() also adding in wire.h, it works but flashes inbetween screens fast like its constantly checking. Would of been straighter forward if Liquidmenu included the button library. I need to figure out what button library and action comes closest to the .check() action in the example button of liquidmenu

/*
 * LiquidMenu library - focus_menu.ino
 *
 * This example demonstrates how to customize the focus indicator.
 *
 * The default focus indicator is an arrow symbol shown on the right of the
 * focused line. The focus indicator position can be changed per line to be
 * shown on the right, on the left or in a specified position. The focus
 * symbol can also be changed, per position.
 * In this example a custom focus symbol is defined (uint8_t rFocus[8]). Then
 * it is configured to be the right focus indicator symbol using the
 * bool LiquidMenu::set_focusSymbol(Position position, uint8_t symbol[8]) method.
 * The focus position for the different lines is configured using the
 * bool set_focusPosition(Position position, uint8_t column = 0, uint8_t row = 0)
 * method. If the "position" is "Position::CUSTOM", the column and row parameters
 * must be specified. The focus position can be specified for a single line, for
 * the whole screen, for the whole menu or for the whole menu system using the
 * respective objects.
 *
 * The circuit:
 * https://github.com/VasilKalchev/LiquidMenu/blob/master/examples/focus_menu/F_focus_menu.png
 * - LCD RS pin to Arduino pin 12
 * - LCD E pin to Arduino pin 11
 * - LCD D4 pin to Arduino pin 5
 * - LCD D5 pin to Arduino pin 4
 * - LCD D6 pin to Arduino pin 3
 * - LCD D7 pin to Arduino pin 2
 * - LCD R/W pin to ground
 * - LCD VSS pin to ground
 * - LCD VDD pin to 5V
 * - 10k ohm potentiometer: ends to 5V and ground, wiper to LCD V0
 * - 150 ohm resistor from 5V to LCD Anode
 * - LCD Cathode to ground
 * - ----
 * - Button (left) to Arduino pin A0 and ground
 * - Button (right) to Arduino pin 7 and ground
 * - Button (enter) to Arduino pin 10 and ground
 *
 * Created July 24, 2016
 * by Vasil Kalchev
 *
 * https://github.com/VasilKalchev/LiquidMenu
 * http://omerk.github.io/lcdchargen/ - for creating custom indicator symbol
 *
 */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
#include "JC_Button.h"

LiquidCrystal_I2C lcd(0x27, 20, 4);

// Button objects instantiation
Button left(10,25,false,false);
Button right(11,25,false,false);
Button enter(12,25,false,false);

LiquidLine welcome_line1(1, 0, "LiquidMenu ", LIQUIDMENU_VERSION);
LiquidLine welcome_line2(1, 1, "Focus example");
LiquidScreen welcome_screen(welcome_line1, welcome_line2);

LiquidLine leftFocus_line(1, 0, "Left focus");
LiquidLine rightFocus_line(1, 1, "Right focus");
LiquidScreen leftright_screen(leftFocus_line, rightFocus_line);

LiquidLine customFocus_line(1, 0, "Custom focus");
LiquidScreen customFocus_screen(customFocus_line);

LiquidLine leftF1_line(6, 0, "Left");
LiquidLine leftF2_line(6, 1, "focus");
LiquidScreen leftF12_screen(leftF1_line, leftF2_line);

LiquidMenu menu(lcd);

// Checks all the buttons.
void buttonsCheck() {
	if (right.read() == 1) {
		menu.next_screen();
	}
	if (left.read() == 1) {
		menu.previous_screen();
	}
	if (enter.read() == 1) {
		// Switches focus to the next line.
		menu.switch_focus();
	}
}

// Indicator symbol definition, it will change the default symbol for the right focus.
// http://omerk.github.io/lcdchargen/
uint8_t rFocus[8] = {
	0b00000,
	0b00000,
	0b00100,
	0b01110,
	0b00100,
	0b00000,
	0b00000,
	0b00000
};

// Blank function, it is attached to the lines so that they become focusable.
void func() {
	return;
}

void setup() {
	Serial.begin(250000);

	lcd.init();
  lcd.backlight();

	// Changes the right focus symbol.
	menu.set_focusSymbol(Position::RIGHT, rFocus);

	// Sets the focus position for this line to be on the left.
	leftFocus_line.set_focusPosition(Position::LEFT);
	rightFocus_line.set_focusPosition(Position::RIGHT);
	// 'CUSTOM' focus position needs column and row parameters.
	customFocus_line.set_focusPosition(Position::CUSTOM, 15, 1);
	// The focus position can be changed for the whole screen or
	// menu at once. 'CUSTOM' position cannot be set because it
	// needs individual coordinates.
	leftF12_screen.set_focusPosition(Position::LEFT);

	// Attaching a function to a line makes the line focusable.
	leftFocus_line.attach_function(0, func);
	rightFocus_line.attach_function(0, func);
	customFocus_line.attach_function(0, func);
	leftF1_line.attach_function(0, func);
	leftF2_line.attach_function(0, func);

	menu.add_screen(welcome_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(customFocus_screen);
	menu.add_screen(leftright_screen);
	menu.add_screen(leftF12_screen);

	menu.update();
}

void loop() {
	buttonsCheck();
}

Replaced the original button library with JC’s button library that I linked up above. Turning off the invert on all the buttons allows the screens to stop flashing repeatedly back and forth and stays on the selected screen.

I think may need to increase debounce time if thats why it acts like its keeps pressing while touching the button once or twice to many when trying to just apply one function with one button press. Also since the proper .cpp file isn't included with the header file for button in the liquidmenu repo, I would like to know what do you think is the best replacement for the check() "function" I guess it'd be called that must be replaced in order to compile correctly that would work as close as check() was suppose to?