Giter Club home page Giter Club logo

capslock-plus's People

Contributors

icecreamzhao avatar lqzhgood avatar vict0rshen avatar wo52616111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

capslock-plus's Issues

建议增加窗口布局管理

示例

  1. +DownArrow 当前窗口占据下半屏幕
  2. +LAlt LeftArrow 当前窗口占据左下角屏幕
  3. +LeftArrow 当前窗口占据左半屏幕
  4. +LAlt UpArrow 当前窗口占据左上角屏幕
  5. +UpArrow 当前窗口占据上半屏幕
  6. +LAlt RightArrow 当前窗口占据右上角屏幕
    • RightArrow 当前窗口占据右半屏幕
  7. +LAlt DownArrow 当前窗口占据右下角屏幕

QBar内输入中文后乱码

现在的系统是Win10_1909,QBar中输入中文后显示的是乱码,我另一台Win Server 2012上就不乱码。

大写模式下频繁触发大小写锁定指示的问题

使用的是 ThinkPad ,好像别的品牌没有这个指示标志额~
在大写开启时,按 CapsLock 加上任意键都会触发指示标志变化,大写关闭时则不会
作方向键使用时一直按住则一直频闪,录屏结果如下 (gif帧数较低低,实际更严重)

_2018_10_13_21_53_08_490

AHK 文档 发现设置 SetStoreCapslockMode, Off 可以解决,不过不知是否会和软件功能产生冲突,希望可以帮到您

模仿示例写的JS辅助函数,想丰富一下程序功能

/**

  • 阿拉伯数字转中文数字

  • @param {int || string} str 待转换的阿拉伯数字

  • @param {string} letterCase 大写'upper'或小写'lower',默认是'lower'

  • @return {string} 返回排列后的字符串
    */
    function toCn() {
    var str = arguments[0] || '';
    if (str == '') return '';
    str += '';
    if (arguments[1] && arguments[1] === 'upper') {
    numStrs = ['壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    units = ['', '拾', '佰', '仟', '万', '拾万', '佰万', '仟万', '亿'];
    } else {
    numStrs = ['一', '二', '三', '四', '五', '六', '七', '八', '九'];
    units = ['', '十', '百', '千', '万', '十万', '百万', '千万', '亿'];
    }
    var ret = ''
    if (str.charAt(0) === '-') {
    ret = '负';
    str = str.substr(1);
    }
    var bigger = Math.floor(parseInt(str) / 10000).toString();
    var st = (str.length - 4 < 0) ? 0 : (str.length - 4);
    var smaller = str.substr(st);
    var arr = [[bigger, '万'], [smaller, '']];
    var unit;
    for (var j = 0; j < arr.length; j++) {
    str = arr[j][0];
    unit = arr[j][1];
    if (str === '0') continue;
    for (var i = 0; i < str.length; i++) {
    var num = parseInt(str.charAt(i));
    if (num === 0) {
    if (ret.substr(ret.length - 1) !== '零') {
    ret += '零';
    }
    } else {
    ret += numStrs[num - 1] + units[str.length - i - 1];
    }
    }
    if (ret.charAt(ret.length - 1) === '零') {
    ret = ret.substr(0, ret.length - 1);
    }
    ret += unit;
    }

    var prefix = ret.substr(0, 2);
    if (prefix === '一十' || prefix === '壹拾') {
    ret = ret.substr(1);
    }
    return ret;
    }

//--------------String.prototype--------------
var sp = String.prototype;

/**

  • 递增重复模板字符串

  • 如: "hello_{12-2:3}.multi(3)"表示重复3次并递增替换模板中{}中间的数字

  • 12表示起始数字,-2表示步长(默认为1,可省略),:3表示最小宽度为3(默认不改变宽度,可省略)

  • 结果为: "hello_12\nhello_10\nhello_8"

  • 如:"hello_{}.multi(['gnu', 'linux', 'free', 'open'])表示用数组中的值替换{}中间的内容

  • 结果为:"hello_gnu\nhello_linux\nhello_free\nhello_open

  • @param {int} count 输出个数,如果是数组,则遍历数组替换{}中的值

  • @param {string} letterCase 大写'upper'或小写'lower'或数字'number',默认是'number'

  • @return {Array} 返回递增重复模板后的字符串数组
    /
    function _multi(str, count, letterCase) {
    str = str.replace(/\n$/, '');
    count = count || 5;
    letterCase = letterCase || 'number';
    var arr = [], reg, groups;
    if (count instanceof Array) {
    reg = new RegExp(/(.
    ?){}(.*)/);
    groups = str.match(reg);
    var prefix = groups[1], suffix = groups[2];
    for (var i = 0; i < count.length; i++) {
    arr.push(prefix + count[i] + suffix);
    }
    return arr;
    }
    reg = new RegExp(/{(\d+)(.\d+)?(.\d+)?}/);
    var init,
    initStr,
    width,
    step = 1,
    width = 0,
    symbol = '',
    prefixStr = '0';
    groups = str.match(reg);
    init = parseInt(groups[1]);
    for (var gi = 2; gi <= 3; gi++) {
    symbol = groups[gi]
    if (symbol) {
    if (symbol.charAt(0) === ':') {
    width = parseInt(symbol.substr(1))
    } else {
    step = parseInt(symbol)
    }
    }
    }

    while (count--) {
    initStr = init.toString();
    if (letterCase === 'upper' || letterCase === 'lower') {
    initStr = toCn(initStr, letterCase);
    prefixStr = ' ';
    }
    for (var i = initStr.length; i < width; i++) {
    if (initStr.charAt(0) == '-') {
    initStr = '-' + prefixStr + initStr.substr(1)
    } else {
    initStr = prefixStr + initStr;
    }
    }
    arr.push(str.replace(reg, initStr));
    init += step;
    }
    return arr;
    };

// 垂直方向递增重复
sp.multi = sp.vMulti = function () {
return _multi(this, arguments[0], arguments[1]).join('\n');
}

// 水平方向递增重复
sp.hMulti = function () {
return _multi(this, arguments[0], arguments[1]).join('');
}

/**

  • 对字符串进行去重,先分隔,最后组合
  • @param {string} sep 分隔符,默认以英文逗号,分隔
  • @return {string} 去重后的字符串
    /
    sp.unique = function() {
    var str = this.replace(/\n$/, '');
    var sep = arguments[0] || ',';
    var arr = str.split(sep);
    var i, j;
    for (i =0; i < arr.length; i++) {
    arr[i] = arr[i].replace(/(^\s
    )|(\s*$)/g, '');
    }
    var ret = [], hasEl;
    for (i = 0; i < arr.length; i++) {
    hasEl = false;
    for (j = 0; j < ret.length; j++) {
    if (arr[i] === ret[j]) {
    hasEl = true;
    break;
    }
    }
    if (!hasEl) {
    ret.push(arr[i]);
    }
    }
    return ret.join(sep);
    }

/**

  • 对字符串进行排序,先分隔,最后组合

  • @param {string} sep 分隔符,默认以英文逗号,分隔

  • @param {string} order 升序asc或降序desc,默认asc

  • @param {bool} isNumber 是否解析为数字

  • @return {string} 排序后的字符串
    /
    function _sort(str, sep, order, isNumber) {
    str = str.replace(/\n$/, '');
    sep = sep || ',';
    order = order === 'desc' ? 'desc' : 'asc';
    var arr = str.split(sep);
    var ret = [], trims = [], i, j, tmp, trim;
    for (i = 0; i < arr.length; i++) {
    trim = arr[i].replace(/(^\s
    )|(\s*$)/g, '');
    ret.push(trim);
    if (isNumber) {
    trim = parseFloat(trim)
    }
    trims.push(trim);
    }
    for (i = 0; i < trims.length - 1; i++) {
    for (j = i + 1; j < trims.length; j++) {
    if (trims[i] > trims[j]) {
    tmp = trims[i];
    trims[i] = trims[j];
    trims[j] = tmp;

             tmp = ret[i];
             ret[i] = ret[j];
             ret[j] = tmp;
         }
     }
    

    }
    if (order === 'desc') {
    return ret.reverse().join(sep);
    }
    return ret.join(sep);
    }

// 排序;如"a, c, d, b, e" 变为 "a, b, c, d, e"
sp.sort = function() {
return _sort(this, arguments[0], arguments[1], false);
}

// 数字型排序;如"12a, 23, 2a, 1, 34" 变为 "1, 2a, 12a, 23, 34"
sp.numberSort = function () {
return _sort(this, arguments[0], arguments[1], true);
}

/**

  • 对字符串进行分隔,统计
  • @param {string} sep 分隔符,默认以空白符分隔
  • @param {string} order 次数升序asc或降序desc,默认desc
  • @return {string} 排序后的字符串
    /
    sp.count = function() {
    var str = this.replace(/(^\s
    )|(\s*$)/g, '');
    var sep = arguments[0] || /\s+/;
    var order = arguments[1] === 'asc' ? 'asc' : 'desc';
    var arr = str.split(sep);
    var obj = {}, i, j, key, idx;
    for (i = 0; i < arr.length; i++) {
    if (obj[arr[i]]) {
    obj[arr[i]] += 1;
    } else {
    obj[arr[i]] = 1;
    }
    }
    var ret = [];
    for (key in obj) {
    idx = -1;
    for (j = 0; j < ret.length; j++) {
    if (obj[key] > ret[j][1]) {
    idx = j;
    break;
    }
    }
    if (idx === -1) {
    ret.push([key, obj[key]])
    } else {
    ret.splice(idx, 0, [key, obj[key]])
    }
    }
    if (order === 'asc') {
    ret = ret.reverse();
    }
    for (i = 0; i < ret.length; i++) {
    ret[i] = ret[i][0] + '=>' + ret[i][1];
    }
    return ret.join(', ');
    }

没办法将 / 转为 \

caps_slash=keyFunc_Backslash
我试了好多次,应该是这么写,但是没有反应,官网和设置Demo中都没有说明

To support multiple modifier keys?

For example, Caps+s means ,and Ctrl+← means one word to the left, while Ctrl+Caps+s is not equivalent to Ctrl+←.
I tried adding a * which will make it work.

*Capslock::
*s::

I also made a minimal script that does the basic mapping.
Single pressing Caps means Esc.
E.g. Caps+Ctrl+l or Ctrl+Caps+l will go to the very end of page (Ctrl+End).

; caps.ahk

CapsState := 0
*Capslock::
  CapsState := 1
  KeyPressed := 0
  KeyWait, Capslock
  CapsState := 0
  If !KeyPressed
    SendInput {Esc}
  Return

#If CapsState
*a:: press("{Left}")
*d:: press("{Right}")
*w:: press("{Up}")
*s:: press("{Down}")

*h:: press("{Home}")
*l:: press("{End}")
*k:: press("{PgUp}")
*j:: press("{PgDn}")
#If

press(str) {
  global KeyPressed
  GetKeyState, state, Shift
  If (state = "D")
    str := "+" . str
  GetKeyState, state, Control
  If (state = "D")
    str := "^" . str
  SendInput %str%
  KeyPressed := 1
}

希望增强QBar

  • 保留上次的输入
    可以再次编辑,也可以设计为下次打开的时候选中上次的输入,方便迅速删除。
  • Everything搜索
    调用Everything来来搜索文件夹/应用程序。
  • 调整结果优先级
    记忆频繁使用的搜索结果,下次搜索时将其置于前列。

请问怎么编译成exe,我编译后不能用

使用鼠标右键compile script对CapsLock+.ahk文件进行编译成exe后打开不报错,也不能用,所有的组合键都没反应。还有一个就时是,自带的ctrl+v时,总是只v键起作用打开了输入法的v,要输入法打开的v再次粘贴才能粘贴。

能否添加对62键位键盘的优化功能?

62位键由于其较为小巧,所以天生缺少,某些键位。比如说DELETE、PG UP、PG DOWN、以及F键 。
能否添加功能对按下大写键之后的键位进行编程(更改键位功能)。
虽然适配众多62位键盘很困难,但还是希望能做出初步的功能,用户可以自行适配自己的键盘。

保存当前按键配置

开机之后绑定了一堆窗口快捷键,每次重启都要再绑定一遍,非常麻烦,可以实现一个保存当前配置的功能,然后开机加载,就不需要每次都重新绑定一遍了,谢谢

方向键的延迟,以及q键只能搜索

按住了cap和e这个往上的方向键一会再松开之后,方向键会继续持续好一会。
q键输入ch,出现chrome,然后选中后,是网页搜索ch字符,而不是打开chrome。
谢谢作者做出这么好的应用!

editFontSize 无法修改大小

editFontSize 属性无法修改大小,实际应为 textFontSize
此外,字体大小修改之后,窗体大小也要随之修改。

已修复,提交request。

(第一次为这么受欢迎的项目提交request,求采纳)

CapsLock+settingsDemo.ini文档有小错误

459-460行,注释错误
原内容(应当为移动至页首)
; 选中至页首
caps_lalt_p=keyFunc_moveToPageBeginning

473-474行,注释错误
原内容(应当为选中至页首)
;移动至页首
caps_lalt_u=keyFunc_selectToPageBeginning

如何build

直接用AHK compile生产的exe不能开机用admin 权限来运行,所以没有办法覆盖全局。而且线程常常会莫名其妙死掉。但是从capslock++下载的exe并没有这些问题。所以想问是如何生成那样的exe?谢谢了。

如何直接disable掉caps

常常误操作打开了大写锁定,所以想索性把大写锁定给关了。尝试了设置
SetCapsLockState, AlwaysOff
貌似没有用

【功能建议】Qrun 支持启动多个程序和命令行

我现在正在学习 Python,当我打开电脑时,总是要开启项目文件夹,和课件文件夹,还有浏览器的某个页面,还有 IDE,命令行开启服务等等。
可以在 Qbar 中使用一个命令实现这些功能嘛?

比如定义一个 start [MyProjectName],然后就把上面都依次打开了

想在qbar中调用有道翻译的面板

平常使用的时候会遇到无法选中的单词 , capslocks又不能像有道客户端那样有图片取词的功能, 只能手敲, 直接调用有那个翻译面板比开浏览器简单一点.

长按某个功能快捷键会激活大写锁定

软件很方便,谢谢。用的是win8笔记本,可不可以设置另外一个组合键来替换capsloc本身大小写切换的功能(比如Esc+Space),然后又不影响capslock+的功能

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.