[solved] caps lock makro

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
babiniec4
Posty: 53
Rejestracja: wt sie 03, 2010 10:20 pm

[solved] caps lock makro

Post autor: babiniec4 »

Witam. Czy istnieje makro, które sprawdzałoby czy klawisz caps lock jest włączony?
Ostatnio zmieniony wt mar 19, 2013 11:42 pm przez babiniec4, łącznie zmieniany 1 raz.
Apache OpenOffice 4.1.5 na Windows 10
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: caps lock makro

Post autor: belstar »

Przykład działa tylko w Windows, testowałem na XP. Co do innych systemów nie wiem

Kod: Zaznacz cały

Public Declare Function GetKeyState Lib "USER32" (ByVal nVirtKey As Long) As Integer
Const VK_CAPITAL = &H14

Sub CheckKeyCapsLock()
  If GetKeyState(VK_CAPITAL) = 1 Then
    MsgBox "Włączony Caps Lock"
  Else
    MsgBox "Caps Lock wyłączony"
  End If
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Husar
Posty: 203
Rejestracja: śr mar 06, 2013 3:48 am

Re: caps lock makro

Post autor: Husar »

W Windows 7 działa.
Pozdrawiam
Roman

Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
babiniec4
Posty: 53
Rejestracja: wt sie 03, 2010 10:20 pm

Re: caps lock makro

Post autor: babiniec4 »

Dziekuję bardzo Belstar- pod windows 8 też działa a swoją drogą skąd takie nietypowe makra zdobywasz ...heh :super:
Apache OpenOffice 4.1.5 na Windows 10
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [solved] caps lock makro

Post autor: Jan_J »

W systemach opartych na X11 można skorzystać ze skryptu systemowego, np.

Kod: Zaznacz cały

xset q | grep LED | sed -e "s/^.*\(.\)$/\1/"
albo z funkcji biblioteki Xlib. Na przykład w skrypcie Pythona

Kod: Zaznacz cały

from Xlib.display import Display
dsp = Display(None)
caps = dsp.get_keyboard_control().led_mask and 1
print (caps)
Użytkownicy OpenOffice'ów dostarczanych wraz z Linuksem mogą z niego zapewne skorzystać wprost. Jednak instalacje firmowe od Apache albo LibreOffice mają wbudowanego własnego Pythona, w którym nie ma Xlib, a instalacja rozszerzeń jest nieco problematyczna. W tej sytuacji trzeba by albo pogrzebać po bibliotekach *Office'a, albo skorzystać z zewnętrznego skryptu (w dowolnym języku, np. tego z góry) i przechwycić zwracany przez niego wynik.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ