#!/bin/sh -e
root=$(git rev-parse --show-cdup 2>/dev/null) || \
{ echo "Not under git control. Cannot install git hooks." >&2 ; exit 0 ; }
[ -z "${root}" ] || \
{ echo "Not in root directory. Can only run from git root." >&2 ; exit 1 ; }
src=util/git-hooks/ # relative to root
hooks=$(cd "${src}" && git ls-files -c | grep -Ev 'install.sh|wrapper.sh')
if [ "$(git rev-parse --git-path 2>/dev/null)" = "--git-path" ]; then
# very old git, we have to guess
dst=".git/hooks/"
rel="../../"
else
dst=$(git rev-parse --git-path hooks/)
rel=$(git rev-parse --prefix "${dst}" --show-cdup)
fi
for h in $hooks; do
# Test if hook is not already installed, i.e. doesn't point at the wrapper
if [ ! "${dst}$h" -ef "${src}wrapper.sh" ]; then
# preserve custom hooks if any
if [ -e "${dst}$h" ]; then
mv "${dst}$h" "${dst}$h.local"
fi
ln -s "${rel}${src}wrapper.sh" "${dst}$h"
fi
done
me='id' value='bd1b51cbd106518882341fdde1c1e7d941840911'/>
/* Copyright 2016 Jack Humbert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */#ifndef PROCESS_COMBO_H#define PROCESS_COMBO_H#include"progmem.h"#include"quantum.h"#include<stdint.h>#ifdef EXTRA_EXTRA_LONG_COMBOS# define MAX_COMBO_LENGTH 32#elif EXTRA_LONG_COMBOS# define MAX_COMBO_LENGTH 16#else# define MAX_COMBO_LENGTH 8#endiftypedefstruct{constuint16_t*keys;uint16_tkeycode;#ifdef EXTRA_EXTRA_LONG_COMBOSuint32_tstate;#elif EXTRA_LONG_COMBOSuint16_tstate;#elseuint8_tstate;#endif}combo_t;#define COMBO(ck, ca) \ { .keys = &(ck)[0], .keycode = (ca) }#define COMBO_ACTION(ck) \ { .keys = &(ck)[0] }#define COMBO_END 0#ifndef COMBO_COUNT# define COMBO_COUNT 0#endif#ifndef COMBO_TERM# define COMBO_TERM TAPPING_TERM#endifboolprocess_combo(uint16_tkeycode,keyrecord_t*record);voidmatrix_scan_combo(void);voidprocess_combo_event(uint8_tcombo_index,boolpressed);voidcombo_enable(void);voidcombo_disable(void);voidcombo_toggle(void);boolis_combo_enabled(void);#endif