*** SUMMARY ***

Thinkpad T580, OpenBSD amd64 7.3-stable, twm window manager.
Prior to today, I had a window-manager keybinding for "F1".
Starting today, I need to hold down the "Fn" key and press "F1" to get
the "F1" keybinding; if I just press "F1" I get the Lenovo-defined system
action (in this case muting the audio volume).  What caused the change,
and how can I revert to the old behavior?


*** DETAILS ***

I have a Thinkpad T580 (dmesg below) running amd64 7.3-stable, currently
with syspatches 001-015 inclusive.  I normally use ctwm (ports) as a window
manager, but all the behavior I describe in this message persists when I
switch back to twm (in base).

I setup various keybindings in my ~/.twmrc and ~/.ctwmrc (given in full
below), including that pressing the "F1" key raises the current window to
be on top in the window-stacking order:
   "F1"    =      : window : f.raise
   "F1"    =      : title  : f.raise
I don't set any keybinding for "Fn/F1" (i.e., pressing the "F1" key while
holding down the "Fn" key), so this invokes Lenovo's default action for F1,
i.e., muting the audio output (the F1 keycap has an icon of a speaker with
a line through it).

I've been using this setup for many years on a variety of Thinkpads and
OpenBSD releases, and it has all worked fine.  A few weeks ago I had a
repair shop replace the T580's keyboard after a keyspring started failing;
the above function-key bindings all worked fine with the new keyboard.

But starting today I see a new behavior: pressing "F1" now gives the
behavior I used to get with "Fn/F1" (mute the audio volume), and pressing
"Fn/F1" now gives the behavior I used to get with plain "F1" (raise the
current window).  More generally, for any x in the range 1 through 12
inclusive, "Fx" now invokes the Lenovo default action, while "Fn/Fx"
invokes my keybinding (if any).  (For example, "F5" and "F6" now decrease
and increase the screen brightness.)

The new behavior has persisted through a cold boot, and (as noted above)
is identical for ctwm (ports) and twm (in base).

The new behavior does *NOT* occur for a Thinkpad T530 with an identical
software setup (amd64 7.3-stable, same set of syspatches, same ~/.twmrc
and ~/.ctwmrc).  That is, on the T530 I see the same behavior I saw prior
to today on the T580, namely that for any x in the range 1 through 12
inclusive, "Fx" invokes my keybinding for "Fx" (if any), while "Fn/Fx"
invokes the Lenovo default action.  (For example, on the T530 "F1" invokes
the raise-window keybinding, while "Fn/F8" and "Fn/F9" decrease and increase
the screen brightness.)

The twm and ctwm binaries have identical checksums between the T530 and
T580, as do ~/.ctwmrc and ~/.twmrc
  % cksum `which ctwm` `which twm` ~/.ctwmrc ~/.twmrc
  1100362473 518296 /usr/local/bin/ctwm
  998664569 202936 /usr/X11R6/bin/twm
  931165269 5767 /home/jonathan/.ctwmrc
  3395929888 5551 /home/jonathan/.twmrc
  %

My basic question is, can anyone suggest what the cause of this change
might be (apart from "wierd hardware failure in new T580 keyboard"), and/or
what I might do on the T580 to revert to the old behavior?  One possible
workaround is to modify the key bindings in ~/.twmrc and ~/.ctwmrc, but
I'd prefer to understand the cause of the change before I start trying
workarounds.


Here is the T580 dmesg:
--- begin /var/run/dmesg.boot ---
OpenBSD 7.3 (GENERIC.MP) #3: Tue Jul 25 08:20:26 MDT 2023
    
r...@syspatch-73-amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 33922605056 (32351MB)
avail mem = 32875106304 (31352MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 3.0 @ 0xa86db000 (62 entries)
bios0: vendor LENOVO version "N27ET43W (1.29 )" date 08/13/2021
bios0: LENOVO 20L9001GUS
acpi0 at bios0: ACPI 5.0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP SSDT SSDT TPM2 UEFI SSDT SSDT HPET APIC MCFG ECDT SSDT 
SSDT BOOT BATB SLIC SSDT SSDT SSDT LPIT WSMT SSDT SSDT SSDT DBGP DBG2 MSDM DMAR 
ASF! FPDT UEFI
acpi0: wakeup devices GLAN(S4) XHC_(S3) XDCI(S4) HDAS(S4) RP01(S4) PXSX(S4) 
RP02(S4) PXSX(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) RP06(S4) 
PXSX(S4) RP07(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpihpet0 at acpi0: 23999999 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1793.87 MHz, 06-8e-0a
cpu0: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 
4-way L2 cache, 8MB 64b/line 16-way L3 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 24MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1794.25 MHz, 06-8e-0a
cpu1: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu1: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 
4-way L2 cache, 8MB 64b/line 16-way L3 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1795.82 MHz, 06-8e-0a
cpu2: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu2: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 
4-way L2 cache, 8MB 64b/line 16-way L3 cache
cpu2: smt 0, core 2, package 0
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz, 1795.82 MHz, 06-8e-0a
cpu3: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SGX,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,RDSEED,ADX,SMAP,CLFLUSHOPT,PT,SRBDS_CTRL,MD_CLEAR,TSXFA,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES,MELTDOWN
cpu3: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 256KB 64b/line 
4-way L2 cache, 8MB 64b/line 16-way L3 cache
cpu3: smt 0, core 3, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 120 pins
acpimcfg0 at acpi0
acpimcfg0: addr 0xf0000000, bus 0-127
acpiec0 at acpi0
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 2 (RP01)
acpiprt2 at acpi0: bus -1 (RP02)
acpiprt3 at acpi0: bus -1 (RP03)
acpiprt4 at acpi0: bus -1 (RP04)
acpiprt5 at acpi0: bus -1 (RP05)
acpiprt6 at acpi0: bus -1 (RP06)
acpiprt7 at acpi0: bus 4 (RP07)
acpiprt8 at acpi0: bus -1 (RP08)
acpiprt9 at acpi0: bus 7 (RP09)
acpiprt10 at acpi0: bus -1 (RP10)
acpiprt11 at acpi0: bus 64 (RP11)
acpiprt12 at acpi0: bus -1 (RP12)
acpiprt13 at acpi0: bus -1 (RP13)
acpiprt14 at acpi0: bus -1 (RP14)
acpiprt15 at acpi0: bus -1 (RP15)
acpiprt16 at acpi0: bus -1 (RP16)
acpiprt17 at acpi0: bus -1 (RP17)
acpiprt18 at acpi0: bus -1 (RP18)
acpiprt19 at acpi0: bus -1 (RP19)
acpiprt20 at acpi0: bus -1 (RP20)
acpiprt21 at acpi0: bus -1 (RP21)
acpiprt22 at acpi0: bus -1 (RP22)
acpiprt23 at acpi0: bus -1 (RP23)
acpiprt24 at acpi0: bus -1 (RP24)
acpipci0 at acpi0 PCI0: 0x00000010 0x00000011 0x00000000
acpithinkpad0 at acpi0: version 2.0
acpiac0 at acpi0: AC unit online
acpibat0 at acpi0: BAT0 model "00UR891" serial 10036 type LiP oem "SMP"
acpibat1 at acpi0: BAT1 model "01AV452" serial  1658 type LiP oem "SMP"
"LEN0100" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
acpicmos0 at acpi0
acpibtn0 at acpi0: SLPB
"PNP0C14" at acpi0 not configured
"INT33A1" at acpi0 not configured
acpibtn1 at acpi0: LID_
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"INT3400" at acpi0 not configured
tpm0 at acpi0 TPM_ 2.0 (TIS) addr 0xfed40000/0x5000, device 0x0000104a rev 0x4e
"USBC000" at acpi0 not configured
acpicpu0 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu1 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu2 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpicpu3 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), 
C1(1000@1 mwait.1), PSS
acpipwrres0 at acpi0: PUBS, resource for XHC_
acpitz0 at acpi0: critical temperature is 98 degC
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD1F
cpu0: using VERW MDS workaround (except on vmm entry)
cpu0: Enhanced SpeedStep 1793 MHz: speeds: 2101, 2100, 1900, 1800, 1700, 1600, 
1500, 1400, 1200, 1100, 1000, 800, 700, 600, 500, 400 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 8G Host" rev 0x08
inteldrm0 at pci0 dev 2 function 0 "Intel UHD Graphics 620" rev 0x07
drm0 at inteldrm0
inteldrm0: msi, KABYLAKE, gen 9
"Intel Core 6G Thermal" rev 0x08 at pci0 dev 4 function 0 not configured
"Intel Core GMM" rev 0x00 at pci0 dev 8 function 0 not configured
xhci0 at pci0 dev 20 function 0 "Intel 100 Series xHCI" rev 0x21: msi, xHCI 1.0
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 
addr 1
pchtemp0 at pci0 dev 20 function 2 "Intel 100 Series Thermal" rev 0x21
"Intel 100 Series MEI" rev 0x21 at pci0 dev 22 function 0 not configured
ppb0 at pci0 dev 28 function 0 "Intel 100 Series PCIE" rev 0xf1: msi
pci1 at ppb0 bus 2
ppb1 at pci0 dev 28 function 6 "Intel 100 Series PCIE" rev 0xf1: msi
pci2 at ppb1 bus 4
iwm0 at pci2 dev 0 function 0 "Intel Dual Band Wireless-AC 8265" rev 0x78, msi
ppb2 at pci0 dev 29 function 0 "Intel 100 Series PCIE" rev 0xf1: msi
pci3 at ppb2 bus 7
ppb3 at pci0 dev 29 function 2 "Intel 100 Series PCIE" rev 0xf1: msi
pci4 at ppb3 bus 64
nvme0 at pci4 dev 0 function 0 vendor "Samsung", unknown product 0xa80c rev 
0x00: msix, NVMe 2.0
nvme0: Samsung SSD 990 PRO 2TB, firmware 1B2QJXD7, serial S73WNJ0W400838L
scsibus1 at nvme0: 2 targets, initiator 0
sd0 at scsibus1 targ 1 lun 0: <NVMe, Samsung SSD 990, 1B2Q>
sd0: 1907729MB, 512 bytes/sector, 3907029168 sectors
pcib0 at pci0 dev 31 function 0 "Intel 200 Series LPC" rev 0x21
"Intel 100 Series PMC" rev 0x21 at pci0 dev 31 function 2 not configured
azalia0 at pci0 dev 31 function 3 "Intel 200 Series HD Audio" rev 0x21: msi
azalia0: codecs: Realtek ALC257, Intel/0x280b, using Realtek ALC257
audio0 at azalia0
ichiic0 at pci0 dev 31 function 4 "Intel 100 Series SMBus" rev 0x21: apic 2 int 
16
iic0 at ichiic0
em0 at pci0 dev 31 function 6 "Intel I219-LM" rev 0x21: msi, address 
48:2a:e3:1b:f6:6b
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
wsmouse1 at pms0 mux 0
pms0: Synaptics clickpad, firmware 8.16, 0x1e2b1 0x940300 0x33cc40 0xf01fa3 
0x12e800
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: VMX/EPT
uvideo0 at uhub0 port 8 configuration 1 interface 0 "Azurewave Integrated 
Camera" rev 2.01/17.11 addr 2
video0 at uvideo0
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
sd1 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
sd1: 65538MB, 512 bytes/sector, 134222419 sectors
root on sd1a (bebcaf82143ab665.a) swap on sd1b dump on sd1b
drm:pid0:intel_ddi_sanitize_encoder_pll_mapping *NOTICE* [drm] [ENCODER:102:DDI 
B/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it
drm:pid0:intel_ddi_sanitize_encoder_pll_mapping *NOTICE* [drm] [ENCODER:116:DDI 
C/PHY C] is disabled/in DSI mode with an ungated DDI clock, gate it
inteldrm0: 1920x1080, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)
iwm0: hw rev 0x230, fw ver 36.ca7b901d.0, address 18:56:80:24:28:40
--- end /var/run/dmesg.boot ---

And here is the ~/.twmrc
--- begin ~/.twmrc ---
# .twmrc -- set twm(1) defaults
#

#
# Colors
#
Color
{
BorderColor                     "white"
BorderTileForeground            "white"
BorderTileBackground            "black"
TitleForeground                 "white"
TitleBackground                 "black"
MenuForeground                  "white"
MenuBackground                  "black"
MenuTitleForeground             "black"
MenuTitleBackground             "white"
MenuShadowColor                 "white"
IconForeground                  "white"
IconBackground                  "black"
IconBorderColor                 "white"
IconManagerForeground           "white"
IconManagerBackground           "black"
##PointerForeground             "Red"
##PointerBackground             "Red"
}

Monochrome
{
BorderColor                     "white"
BorderTileForeground            "white"
BorderTileBackground            "black"
TitleForeground                 "white"
TitleBackground                 "black"
MenuForeground                  "white"
MenuBackground                  "black"
MenuTitleForeground             "black"
MenuTitleBackground             "white"
MenuShadowColor                 "white"
IconForeground                  "white"
IconBackground                  "black"
IconBorderColor                 "white"
IconManagerForeground           "white"
IconManagerBackground           "black"
}

#
# Fonts
#
MenuFont                        "9x15bold"
TitleFont                       "7x14"
IconFont                        "7x14"
ResizeFont                      "7x14"
IconManagerFont                 "7x14"

#
# Other window appearance stuff
#
BorderWidth                     4
FramePadding                    2
ClientBorderWidth
UsePPosition                    "on"
RandomPlacement
OpaqueMove
DontMoveOff
Zoom
NoRaiseOnMove
NoRaiseOnResize
DecorateTransients

#
# Icon manager stuff
#
IconManagerGeometry     "=100x10-0+271"

NoTitle
{
"TWM"
"xclock"
"xbatt"
"temp"
##"xmeter"
"xcpu"
"console"
}

NoHighlight
{
"xclock"
"xbatt"
"temp"
"xmeter"
}

AutoRaise
{
###"nothing"    # I don't like auto-raise
##"xclock"
##"xbatt"
##"temp"
##"xmeter"
}

DefaultFunction f.menu "default-menu"
#Button = KEYS : CONTEXT : FUNCTION
#----------------------------------
Button1 =      : root   : f.menu "button1"
Button1 =      : title  : f.menu "button1"
Button1 =      : title  : f.raiselower
Button1 =      : frame  : f.raiselower
Button1 =      : icon   : f.iconify
Button1 = m    : icon   : f.raise

Button2 =      : root   : f.menu "TwmWindows"
Button2 =      : title  : f.move
Button2 =      : frame  : f.move
Button2 =      : icon   : f.move
Button2 = m    : icon   : f.move

Button3 =      : root   : f.menu "button3"
Button3 =      : title  : f.menu "button3"
## do NOT raise on right-click so I can click to recover from "mouse grab"
##Button3 =      : frame  : f.raiselower
Button3 =      : icon   : f.raiselower
Button3 =      : iconmgr   : f.function "de-raise-n-focus"
Button3 = c    : root   : f.function "beep-beep"
Button3 = m    : icon   : f.lower

"F1"    =      : window : f.raise
"F1"    =      : title  : f.raise
"F2"    =      : window : f.raise
"F2"    =      : title  : f.raise

"F9"    =      : window : :!"$HOME/bin/fsel"
"F9"    =      : title  : :!"$HOME/bin/fsel"

"F11"   =      : window : f.lower
"F11"   =      : title  : f.lower
"F12"   =      : window : f.lower
"F12"   =      : title  : f.lower

Function "beep-beep"
{
f.beep
f.beep
f.beep
f.beep
f.beep
}

Function "de-raise-n-focus"
{
f.deiconify
f.raise
f.focus
}

Function "raise-n-focus"
{
f.raise
f.focus
}

menu "button1"
{
"Web Browsers"                  f.title
"  firefox (X, different user)" !"(chdir /tmp; $HOME/bin/firefox-via-X &)"
""                              f.nop
"  iridium"                     !"(chdir /tmp; iridium 
--user-data-dir=$HOME/.config/iridium &)"
""                              f.nop
"  chromium"                    !"(chdir /tmp; chrome 
--user-data-dir=$HOME/.config/chromium&)"
""                              f.nop
"    firefox (ssh, different user)" !"(chdir /tmp; $HOME/bin/firefox-via-ssh &)"
"    firefox (jonathan, raw)"   !"(chdir /tmp; firefox -P firefox-raw &)"
""                              f.nop
"  epiphany [Ctrl-q exits]"     !"(chdir /tmp; epiphany &)"
## midori infinite-loops creating new windows over & over again :(
##"  midori [Ctrl-shift-Q exits]"       !"(chdir /tmp; midori &)"
""                              f.nop
"  netsurf [NO JAVASCRIPT]"     !"(chdir /tmp; netsurf-gtk &)"
"  surf [NO JAVASCRIPT]"        !"(chdir /tmp; surf &)"
"  dillo   [NO JAVASCRIPT]"     !"(chdir /tmp; dillo &)"
}

menu "button3"
{
"Window Ops"            f.title
"  Refresh"             f.refresh
"  Resize Window"       f.resize
"forceMove Window"      f.forcemove
"  Raise or Lower"      f.raiselower
"  Magnify"             !"xmag -source 128x128 &"
"  Dump >/tmp/bkis.xwd --> .pnm"        !"(xwd -out /tmp/bkis.xwd; xwdtopnm 
/tmp/bkis.xwd >/tmp/bkis.pnm; /bin/rm -f /tmp/bkis.xwd) &"
"Dump >/tmp/bkis.xwd --> .png"  !"(xwd -out /tmp/bkis.xwd; xwdtopnm 
/tmp/bkis.xwd | pnmtopng >/tmp/bkis.png; /bin/rm -f /tmp/bkis.xwd) &"
""                      f.nop
"Default Menu"          f.menu "default-menu"
""                      f.nop
"sync; suspend      (NO LOCK)"  !"sync; sleep 1; sync; sleep 2; zzz"
"sync; blank screen (NO LOCK)"  !"sync; xlock -nolock -mode blank -delay 250000 
&"
""                      f.nop
"sync; lock screen"             !"sync; xlock -mode blank -delay 250000 &"
""                      f.nop
## this doesn't work reliably -- sometimes it locks, sometimes it doesn't :(
##"sync; lock screen ; suspend" !"sync; (xlock -mode blank -delay 250000 &); 
sleep 2; sync; sleep 3; zzz"
""                      f.nop
"*** Kill Window ***"   f.destroy
""                      f.nop
""                      f.nop
"*** Kill twm ***"      f.quit
}

menu "Icon"
{
"Show Icon Mgr"         f.showiconmgr
"Hide Icon Mgr"         f.hideiconmgr
"(De)Iconify"           f.iconify
"DeIconify"             f.deiconify
}

menu "default-menu"
{
"Default Menu"          f.title
"Refresh"               f.refresh
"Refresh Window"        f.winrefresh
"Zoom"                  f.zoom
"Icon actions"          f.menu "Icon"
"twm Version"           f.version
"Focus on Root"         f.unfocus
"Source .twmrc"         f.twmrc
"Cut File"              f.cutfile
"(De)Iconify"           f.iconify
"DeIconify"             f.deiconify
"Move Window"           f.move
"Resize Window"         f.resize
"Raise Window"          f.raise
"Lower Window"          f.lower
"Focus on Window"       f.focus
"Raise-n-Focus"         f.function "raise-n-focus"
"Destroy Window"        f.destroy
"Zoom Window"           f.zoom
"FullZoom Window"       f.fullzoom
"Kill twm"              f.quit
}
--- end ~/.twmrc ---


Thanks for any insights anyone can offer,
-- 
-- "Jonathan Thornburg [remove -color to reply]" <dr.j.thornb...@gmail-pink.com>
   currently on the west coast of Canada
   "!07/11 PDP a ni deppart m'I !pleH" -- slashdot.org page footer, 2022-10-16
   "eHpl !'I mrtpaep dnia P PD1 /107" -- slightly more plausible message given
                                         the PDP-11's little-endian byte order

Reply via email to