Terminalde kapakların kilitlenip kilitlenmediğini kontrol edin


8

Büyük harf kilidini açık veya terminal.app komut satırında kapalı olup olmadığını söylemek için sistemi sorgulamak için bir yolu var mı?


3
Bir harf yazmak size hemen büyük harf kilidinin durumunu göstermez mi? Bu bilgilerin gerçek kullanımı nedir? Belki de XY problemini mi soruyorsunuz ?
bmike

Tam olarak neyi başarmak istiyorsun? Değiştirici anahtarların durumunu söyleyebilecek üçüncü taraf yardımcı programları vardır, ancak bildiğim yerel (varsayılan olarak yüklü) hiçbir şey yoktur, ancak bu olmadığı anlamına gelmez.
user3439894

2
Giriş kaynağının Yunanca olduğunu belirtmek için LED kullanıyorum. Yalnızca giriş kaynağı İngilizce ve büyük harf kilidi kapalıysa kapalı olmasını istiyorum.
Diş macunu

1
@Lawrence Şimdi bu harika bir kurulum. Bunu soruya eklemek istersen - harika. Eminim birçok kişi bu değişikliği nasıl başardığınızı bilmek ister.
bmike

1
Github'dan Karabiner ve busyloop / maclight kullandım.
Diş macunu

Yanıtlar:


9

Macscripter'de Stefenk tarafından yazılmış harika bir komut satırı kodu var

Stefen'in kodu cmd, seçenek, kontrol, kaydırma ve büyük harf kilidini tespit etmenizi sağlar.

Yazısında kodu ve bir indirme zipini sağlar.

Vakıf projesini kullanarak indirebilir veya Xcode'da kendiniz oluşturabilirsiniz.

El Capitan'da her iki yolu da test ettim ve ikisi de çalışıyor.

Xcode.app içinde kendi oluşturmak istiyorsanız kodu:

#import <Carbon/Carbon.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        unsigned int modifiers = GetCurrentKeyModifiers();
        if (argc == 1)
            printf("%d\n", modifiers);
        else {
            int i, result = 1;
            for (i = 1; i < argc; ++i) {
                if (0 == strcmp(argv[i], "shift"))
                    result = result && (modifiers & shiftKey);
                else if (0 == strcmp(argv[i], "option"))
                    result = result && (modifiers & optionKey);
                else if (0 == strcmp(argv[i], "cmd"))
                    result = result && (modifiers & cmdKey);
                else if (0 == strcmp(argv[i], "control"))
                    result = result && (modifiers & controlKey);
                else if (0 == strcmp(argv[i], "capslock"))
                    result = result && (modifiers & alphaLock);
            }
            printf("%d\n", result);
        }
    }
    return 0;
}

---------- (güncelleme ->

Terminal.app'den derlemek istiyorsanız

Kodu düz bir metin dosyasına yerleştirin. Ben sadece TextEdit.app ve Düz metin belgesi kullandım.

cd'yi dosyanızla aynı dizine yerleştirin. Uzantının .m olduğundan emin olun (.c de iyi olacaktır)

O zaman koş.

gcc  -framework Carbon CheckModKeys.m -o CheckModKeys

CheckModKeys.m dosyanızdır.

CheckModKeys çıktı alınacak uygulamanın adıdır.

<-)


Caps lock tespit etmek için komutunuz şöyle görünecektir:

/Users/UserName/MyFolder/CheckModKeys  capslock

1 veya 0 döndürülecektir.

İçin 1

0 kapalı


Tüm krediler Stefen'e gidiyor. 2009'da bu şekilde yayınladığını hatırladım. Ve bugün hala çalışıyor ..


Teşekkürler! Bunu nasıl derlerim? Denedim gcc -o getmod getmod.cama bu döndü getmod.c:4:5: error: expected expression @autoreleasepool { ^ 1 error generated.
Toothrot


Hala alıyorum: `` x86_64 mimarisi için tanımlanmamış semboller: "_objc_autoreleasePoolPop", kaynakça: _main in main-93f6a5.o "_objc_autoreleasePoolPush", kaynak: _main in main-93f6a5.o ld: sembol (ler) in mimari için bulunamadı x86_64 clang: hata: linker komutu çıkış kodu 1 ile başarısız oldu (çağrıyı görmek için -v kullanın) ``
Toothrot

ne işletim sistemi yapıyorsun
markhunte

1
Sohbet gitti ve ben de derleyemiyorum. Nerede derleyebilirsiniz, @ Diş macunu?
Lars Nyström

2

Eğer varsa XQuartz çalışan ya yüklü ve veya fırlatma umursamıyorum, Çalıştırabileceğiniz:xset -q

Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000000
  XKB indicators:
    00: Caps Lock:   off    01: Num Lock:    off    02: Shift Lock:  off
    03: Group 2:     off    04: Mouse Keys:  off    05: Scroll Lock: off

Ben yok xsetbash varsayılan bir kullanıcı hesabıyla El Capitan'daki. Bu komutun çalışması için belirli bir kabuğun parçası mı yoksa kurmanız gereken bir şey mi?
bmike

@bmike, xsetbir kısmı X11varsayılan olarak yüklenmez. Buradan edinebilirsiniz: XQuartz
user3439894

3
@Mikey TK, Kullanmayla ilgili IMO, xsetXQuartz.app'ın bir Terminal'de çalışması için (xset) açılmasına neden olmasıdır. Bana göre bu sadece başka bir BSD komutu gibi çalışan bir CLI yardımcı programı isteyeyim istenmeyen bir davranıştır.
user3439894
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.