Skip to content

Instantly share code, notes, and snippets.

@icedman21
Last active August 29, 2015 14:15
Show Gist options
  • Save icedman21/f8e723e4feefebfd10e1 to your computer and use it in GitHub Desktop.
Save icedman21/f8e723e4feefebfd10e1 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Hide SRC Button - Unified Version
// @namespace http://icedman21.com
// @description SWEET (Snippet Writers Efficiency Enhancement Tool) Script
// @include https://www.thumbtack.com/admin/services/proofread/portal*
// @updateURL https://gist.github.com/icedman21/d13accec8e7c8215b096/raw/thumbtack_hide_src_Chrome.user.js
// @downloadURL https://gist.github.com/icedman21/d13accec8e7c8215b096/raw/thumbtack_hide_src_Chrome.user.js
// @version 8
// @author Iced_Man21
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
floatToggleKey='M';
srcToggleKey='Z';
capitalizeKey='X';
submitKey='I';
viewProviderPageKey='P'
floatTitle="";
srcTitle="";
capitalizeTitle="";
timeLimit=3;
keyList="";
charList="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=[];\",.";
resetTimeKey="R";
optionsList = function(){ //returns an options block for adding to a select element
temp ="";
for(i=0;i<charList.length;i++){
temp+="<option value='"+charList[i]+"'>"+charList[i]+"</option>";
}
return temp;
};
resetTime=function(){ // reset time
time1=time3=new Date();
};
changeKeyHandler= function(event) {
keyList=document.getElementById('floatSelect').value+document.getElementById('srcSelect').value+document.getElementById('capitalizeSelect').value+document.getElementById('submitSelect').value+document.getElementById('viewProviderPageSelect').value+document.getElementById('resetTimeSelect').value;
switch(event.target.id){
case 'timeLimitSelect':
GM_setValue("timeLimit",parseInt(document.getElementById(event.target.id).value));
timeLimit = parseInt(document.getElementById(event.target.id).value);
break;
case 'floatSelect':
GM_setValue("floatToggleKey",document.getElementById(event.target.id).value);
floatToggleKey = document.getElementById(event.target.id).value;
//disable letters from other select boxes
op=document.getElementById('srcSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==srcToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('capitalizeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==capitalizeKey) {op[i].disabled=false;};
}
op=document.getElementById('submitSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==submitKey) {op[i].disabled=false;};
}
op=document.getElementById('viewProviderPageSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==viewProviderPageKey) {op[i].disabled=false;};
}
op=document.getElementById('resetTimeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==resetTimeSelect) {op[i].disabled=false;};
}
break;
case 'srcSelect':
GM_setValue("srcToggleKey",document.getElementById(event.target.id).value);
srcToggleKey = document.getElementById(event.target.id).value;
//disable letters from other select boxes
op=document.getElementById('floatSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==floatToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('capitalizeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==capitalizeKey) {op[i].disabled=false;};
}
op=document.getElementById('submitSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==submitKey) {op[i].disabled=false;};
}
op=document.getElementById('viewProviderPageSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==viewProviderPageKey) {op[i].disabled=false;};
}
op=document.getElementById('resetTimeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==resetTimeSelect) {op[i].disabled=false;};
}
break;
case 'capitalizeSelect':
GM_setValue("capitalizeKey",document.getElementById(event.target.id).value);
capitalizeKey = document.getElementById(event.target.id).value;
//disable letters from other select boxes
op=document.getElementById('floatSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==floatToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('srcSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==srcToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('submitSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==submitKey) {op[i].disabled=false;};
}
op=document.getElementById('viewProviderPageSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==viewProviderPageKey) {op[i].disabled=false;};
}
op=document.getElementById('resetTimeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==resetTimeSelect) {op[i].disabled=false;};
}
break;
case 'submitSelect':
GM_setValue("submitKey",document.getElementById(event.target.id).value);
submitKey = document.getElementById(event.target.id).value;
//disable letters from other select boxes
op=document.getElementById('floatSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==floatToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('srcSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==srcToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('capitalizeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==capitalizeKey) {op[i].disabled=false;};
}
op=document.getElementById('viewProviderPageSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==viewProviderPageKey) {op[i].disabled=false;};
}
op=document.getElementById('resetTimeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==resetTimeSelect) {op[i].disabled=false;};
}
break;
case 'viewProviderPageSelect':
GM_setValue("viewProviderPageKey",document.getElementById(event.target.id).value);
viewProviderPageKey = document.getElementById(event.target.id).value;
//disable letters from other select boxes
op=document.getElementById('floatSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==floatToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('srcSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==srcToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('capitalizeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==capitalizeKey) {op[i].disabled=false;};
}
op=document.getElementById('resetTimeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==resetTimeSelect) {op[i].disabled=false;};
}
break;
case 'resetTimeSelect':
GM_setValue("resetTimeKey",document.getElementById(event.target.id).value);
resetTimeKey = document.getElementById(event.target.id).value;
//disable letters from other select boxes
op=document.getElementById('floatSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==floatToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('srcSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==srcToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('capitalizeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==capitalizeKey) {op[i].disabled=false;};
}
op=document.getElementById('submitSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==submitKey) {op[i].disabled=false;};
}
op=document.getElementById('viewProviderPageSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==viewProviderPageKey) {op[i].disabled=false;};
}
break;
default:
break;
}
initValues();
};
initValues = function() {
//setup message and access key for the floating box
switch(GM_getValue("floatToggleKey")){
case floatToggleKey: break;
case undefined: GM_setValue("floatToggleKey",floatToggleKey);
break;
default: floatToggleKey = GM_getValue("floatToggleKey"); break;
}
//setup access key for the Provider Page Link
switch(GM_getValue("viewProviderPageKey")){
case viewProviderPageKey: break;
case undefined: GM_setValue("viewProviderPageKey",viewProviderPageKey);
break;
default: viewProviderPageKey = GM_getValue("viewProviderPageKey"); break;
}
//setup access key for the Submit Key
switch(GM_getValue("submitKey")){
case submitKey: break;
case undefined: GM_setValue("submitKey",submitKey);
break;
default: submitKey = GM_getValue("submitKey"); break;
}
//setup message and access key for the Capitalize Link
switch(GM_getValue("capitalizeKey")){
case capitalizeKey: break;
case undefined: GM_setValue("capitalizeKey",capitalizeKey);
break;
default: capitalizeKey = GM_getValue("capitalizeKey"); break;
}
//setup message and access key for the SRC link
switch(GM_getValue("srcToggleKey")){
case srcToggleKey: break;
case undefined: GM_setValue("srcToggleKey",srcToggleKey);
break;
default: srcToggleKey = GM_getValue("srcToggleKey"); break;
}
//setup Snippet Time Limit
switch(GM_getValue("timeLimit")){
case timeLimit: break;
case undefined: GM_setValue("timeLimit",timeLimit);
break;
default: timeLimit = GM_getValue("timeLimit"); break;
}
//setup message and access key for the Reset Time link
switch(GM_getValue("resetTimeKey")){
case resetTimeKey: break;
case undefined: GM_setValue("resetTimeKey",resetTimeKey);
break;
default: resetTimeKey = GM_getValue("resetTimeKey"); break;
}
floatTitle="Firefox: Shift Alt "+floatToggleKey+" | Chrome: Alt "+floatToggleKey+" | Mac: Ctrl Opt "+floatToggleKey;
srcTitle="Firefox: Shift Alt "+srcToggleKey+" | Chrome: Alt "+srcToggleKey+" | Mac: Ctrl Opt "+srcToggleKey;
capitalizeTitle="Firefox: Shift Alt "+capitalizeKey+" | Chrome: Alt "+capitalizeKey+" | Mac: Ctrl Opt "+capitalizeKey;
document.getElementById('floatLink').title=floatTitle;
document.getElementById('floatLink').accessKey=floatToggleKey;
document.getElementById('floatSelect').value=floatToggleKey;
//disable float select so key won't be changed to prevent forgettting it.
document.getElementById('floatSelect').disabled=true;
document.getElementById('srcLink').title=srcTitle;
document.getElementById('srcLink').accessKey=srcToggleKey;
document.getElementById('srcSelect').value=srcToggleKey;
document.getElementById('capitalizeLink').title=capitalizeTitle;
document.getElementById('capitalizeLink').accessKey=capitalizeKey;
document.getElementById('capitalizeSelect').value=capitalizeKey;
document.getElementById('snippet_submit').accessKey=submitKey;
document.getElementById('submitSelect').value=submitKey;
document.getElementById('viewLink').accessKey=viewProviderPageKey;
document.getElementById('viewProviderPageSelect').value=viewProviderPageKey;
document.getElementById('resetTimeSelect').value=resetTimeKey;
document.getElementById('resetTimeLink').accessKey=resetTimeKey;
document.getElementById('timeLimitSelect').value=timeLimit;
//get current hotkeys everytime
keyList=document.getElementById('floatSelect').value+document.getElementById('srcSelect').value+document.getElementById('capitalizeSelect').value+document.getElementById('submitSelect').value+document.getElementById('viewProviderPageSelect').value;
//disable letters from other select boxes
op=document.getElementById('srcSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==srcToggleKey) {op[i].disabled=false;};
}
op=document.getElementById('capitalizeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==capitalizeKey) {op[i].disabled=false;};
}
op=document.getElementById('submitSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==submitKey) {op[i].disabled=false;};
}
op=document.getElementById('viewProviderPageSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==viewProviderPageKey) {op[i].disabled=false;};
}
op=document.getElementById('resetTimeSelect').getElementsByTagName("option");
for(i=0;i<op.length;i++){
keyList.indexOf(op[i].value.toUpperCase()) > -1 ? op[i].disabled=true : op[i].disabled=false;
if(op[i].value.toUpperCase()==resetTimeSelect) {op[i].disabled=false;};
}
}
toggleSRC = function() {
var ghead = document.getElementsByTagName('h2');
i=0;
while (i<ghead.length) {
gh = ghead[i];
if(gh.innerHTML.substring(0,28) == "Selected Request Categories:") {
if(gh.nextSibling.nextSibling.style.display=="none"){
gh.nextSibling.nextSibling.style.display="block";
} else gh.nextSibling.nextSibling.style.display="none";
break;
}
i=i+1;
}
return false;
};
capitalize = function() {
// string with alteast one character
var headline_text = document.getElementById("headlinetext");
var i, words, w, result = '';
words = headline_text.value.split(' ');
for (i = 0; i < words.length; i += 1) {
w = words[i];
if(w=='dj' || w=='mc' || w=='3d' || w=='cad' || w=='dui' || w=='ui' || w=='seo' || w=='sem' || w=='cctv' || w=='tv' || w=='hvac' || w=='cpr'){
w=w.toUpperCase();
}
result += w.substr(0,1).toUpperCase() + w.substr(1);
if (i < words.length - 1) {
result += ' '; // Add the spaces back in after splitting
}
}
document.getElementById("headlinetext").value = result.trim();
}
toggleFloat = function() {
if(GM_getValue("floatVisible")==false){
document.getElementById('miscOptions').style.display="inline"
GM_setValue("floatVisible",true) ;
} else {GM_setValue("floatVisible",false) ;
document.getElementById('miscOptions').style.display="none";
}
}
// Select All H2 Elements
var ghead = document.getElementsByTagName('h2');
i=0; //Initialize counter
while (i<ghead.length) {
gh = ghead[i]; //get next H2 element
if(gh.innerHTML == "Selected Request Categories:") { //check if SRC element found
var t= document.createElement('div'); //create a new div to hold the SRC Toggle Link
t.innerHTML = "<a id='srcLink' href='javascript:void(0);' tabindex='998'>Toggle SRC</a>";
t.firstChild.addEventListener('click', toggleSRC, false);
t.style.display="inline";
gh.appendChild(t);
gh.nextSibling.nextSibling.style.display="none";
break;
}
i=i+1;
}
var textArea_array = document.getElementsByTagName('textarea');
i=0;
while (i<textArea_array.length) {
ta = textArea_array[i]; //get next textarea element
if(ta.name == "headline") { //check if headline textarea element found
ta.id="headlinetext";
var h= document.createElement('span'); //create a new div to hold the Capitalize Link
h.innerHTML = "<a id='capitalizeLink' href='javascript:void(0);' tabindex='999'>Capitalize</a> || ";
h.firstChild.addEventListener('click', capitalize, false);
ta.parentNode.insertBefore(h,ta.nextSibling);
break;
}
i=i+1;
}
//this next line adds an access key to the submit button
document.getElementById('snippet_submit').accessKey=submitKey;
//these two lines add ID to the providers page view link and ensure that it opens in a new tab
document.getElementById('contents').firstChild.firstChild.nextSibling.nextSibling.target='_blank';
document.getElementById('contents').firstChild.firstChild.nextSibling.nextSibling.id='viewLink';
//add floating text box with key shortcuts
floating= document.createElement("div");
floating.id="floatBox"
floating.setAttribute('style',"text-align:left;position:fixed;bottom:5%;right:1%;color:black;background-color:lightblue;border:2px solid black;padding:5px;border-radius:10px;box-shadow:5px 5px 3px 3px grey;");
floating.innerHTML="<center><b><span id='demo' style='font-size:large'>&nbsp;</span></b></center><hr><a href='javascript:void(0);' accesskey='M' id='floatLink'>Toggle Menu</a><select id='floatSelect'>"+ optionsList() +"</select><span id='miscOptions'><br>Toggle SRC <select id='srcSelect'>"+ optionsList() +"</select><br>Capitalize <select id='capitalizeSelect'>"+ optionsList() +"</select><br>Submit <select id='submitSelect'>"+ optionsList() +"</select><br> View Page <select id='viewProviderPageSelect'>"+ optionsList() +"</select><br>Time Limit<select id='timeLimitSelect'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select><br><a href='javascript:void(0);' accesskey='"+resetTimeKey+"' id='resetTimeLink'>Reset Timer</a><select id='resetTimeSelect'>"+ optionsList() +"</select></span>";
//insert the div element to the last part of the page
document.body.insertBefore(floating,document.body.lastChild);
//add the event handlers
document.getElementById('floatLink').addEventListener('click', toggleFloat, false);
document.getElementById('floatSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('srcSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('capitalizeSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('submitSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('viewProviderPageSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('timeLimitSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('resetTimeSelect').addEventListener('change', changeKeyHandler, false);
document.getElementById('resetTimeLink').addEventListener('click', resetTime, false);
if(GM_getValue("floatVisible",true)){
document.getElementById('miscOptions').style.display="inline";
GM_setValue("floatVisible",true) ;
} else {document.getElementById('miscOptions').style.display="none"; GM_setValue("floatVisible",false) ; }
initValues(); //initialize values
//begin Timer Block
var time1;
function myTimer() {
time3 = new Date();
var diffMs = (time3.getTime() - time1.getTime());
var diffSecs= Math.floor((((diffMs % 86400000) % 3600000) % 60000) / 1000); //seconds
var diffMins = Math.floor(((diffMs % 86400000) % 3600000) / 60000); // minutes
var diffHours = Math.floor((diffMs % 86400000) / 3600000) ; // hours
if((diffMins>timeLimit-1) || (diffHours > 0)){
document.getElementById("demo").innerHTML = pad(diffHours) + ":" +pad(diffMins) + ":" + pad(diffSecs);
document.getElementById("demo").style.color='red';
} else { document.getElementById("demo").innerHTML = pad(diffHours) + ":" +pad(diffMins) + ":" + pad(diffSecs); document.getElementById("demo").style.color='';};
}
function pad(n){
return (n < 10) ? ("0"+n) : n;
}
time1=new Date();
myVar=setInterval(function(){myTimer()},1000);
//end Timer Block
@icedman21
Copy link
Author

To add an access key or short cut key to this script add this line to the bottom of your script

document.getElementById('snippet_submit').accessKey='i';

You can also change the access key by replacing the 'i' with whatever letter you like. I just used the letter "I" so that it will be far from the Z and X shortcut keys, so that you want hit it by accident.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment