window系统中,交换键盘中win键和ctl键

换键盘的痛,懂的都懂;

换键的方法网上找的不靠谱,还是自己摸索出来好;

在cmd.exe里,粘贴进去执行,重启即用。

 

设置交换键盘:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v "Scancode Map" /t REG_BINARY /d "0000000000000000030000001d005be01de05ce000000000" /reg:64

 

恢复原键盘设置:

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v "Scancode Map" /reg:64 /f 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您说的很对,延时过程按下按确实无效,因为CPU在延时期间是处于忙等待状态,无法响应按事件。为了解决这个问题,您可以采用定时器的方法来实现延时功能,这样就可以同时响应按事件了。以下是修改后的代码: ```c #include <msp430.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器 P7DIR &= ~BIT0; // 将P7.0引脚设为输入模式 P7REN |= BIT0; // 使能P7.0引脚上拉电阻 P7OUT |= BIT0; // 将P7.0引脚上拉电阻设为高电平 P1DIR |= BIT2; // 将P1.2引脚设为输出模式 TA0CCTL0 = CCIE; // 使能定时器0的断功能 TA0CCR0 = 30000; // 设置定时器0的计数值为30000 TA0CTL = TASSEL_2 + MC_1 + TACLR; // 设置定时器0的时钟源为SMCLK,计数模式为增计数,计数值清零 unsigned int cnt = 0; // 定义按计数器 while(1) { if((P7IN & BIT0) == 0) // 判断P7.0引脚是否被按下 { cnt++; // 计数器加1 if(cnt % 2 == 1) // 如果计数器为奇数,即第一次按下按 { P1OUT &= ~BIT2; // 将P1.2引脚输出低电平,即小灯熄灭 TA0CTL |= TACLR; // 将定时器0的计数值清零 TA0CTL |= MC_1; // 开始计时 __bis_SR_register(LPM0_bits + GIE); // 进入低功耗模式,并使能全局断 } else // 如果计数器为偶数,即第二次按下按 { cnt = 0; // 计数器清零 TA0CTL &= ~MC_1; // 停止计时 P1OUT |= BIT2; // 将P1.2引脚输出高电平,即小灯亮起 } } } } // 定时器0的断服务函数 #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A0(void) { __bic_SR_register_on_exit(LPM0_bits); // 退出低功耗模式 } ``` 在代码,我们使用定时器0来实现延时功能。在进入while循环后,不断判断P7.0引脚是否被按下,如果被按下,就将计数器加1。如果计数器为奇数,即第一次按下按,就将P1.2引脚输出低电平,即小灯熄灭,并使能定时器0开始计时。然后进入低功耗模式等待定时器0的断。当定时器0的计时时间到达时,会产生断,断服务函数会将CPU从低功耗模式唤醒,并将计时器停止,将P1.2引脚输出高电平,即小灯亮起。如果在30s内再次按下按,就将计数器再次加1,如果计数器为偶数,即第二次按下按,就将计数器清零,并将P1.2引脚输出高电平,即小灯亮起。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值